<?xml version="1.0" encoding="utf-8" standalone="yes"?>

<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Great Firewall Report - GFW Report on Great Firewall Report</title>
    <link>https://gfw.report/</link>
    <description>Recent content in Great Firewall Report - GFW Report on Great Firewall Report</description>
    
    <language>en-us</language>
    <lastBuildDate>Fri, 12 Sep 2025 00:00:00 +0000</lastBuildDate>
    
	<atom:link href="https://gfw.report/index.xml" rel="self" type="application/rss+xml" />
    

    
      <item>
        <title>Geedge &amp; MESA Leak: Analyzing the Great Firewall’s Largest Document Leak</title>
        <link>https://gfw.report/blog/geedge_and_mesa_leak/en/</link>
        <pubDate>Fri, 12 Sep 2025 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/geedge_and_mesa_leak/en/</guid>
        
        <description>&lt;h2 id=&#34;1-introduction&#34;&gt;1. Introduction&lt;/h2&gt;
&lt;p&gt;The Great Firewall of China (GFW) experienced the largest leak of internal documents in its history on Thursday September 11, 2025. Over 500 GB of source code, work logs, and internal communication records were leaked, revealing details of the GFW&amp;rsquo;s research, development, and operations.&lt;/p&gt;
&lt;p&gt;The leak originated from a core technical force behind the GFW: Geedge Networks (whose chief scientist is Fang Binxing) and the MESA Lab at the Institute of Information Engineering, Chinese Academy of Sciences. The documents show that the company not only provides services to governments in places like Xinjiang, Jiangsu, and Fujian, but also exports censorship and surveillance technology to countries such as Myanmar, Pakistan, Ethiopia, Kazakhstan, and other unidentified country under the &amp;ldquo;Belt and Road&amp;rdquo; framework.&lt;/p&gt;
&lt;p&gt;The significance and far-reaching implications of this leak are substantial. Due to the massive volume of data, GFW Report will continue to analyze and provide updates on &lt;a href=&#34;https://gfw.report/blog/geedge_and_mesa_leak/en/&#34;&gt;the current page&lt;/a&gt; and on the &lt;a href=&#34;https://github.com/net4people/bbs/issues/519&#34;&gt;Net4People&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;2-download-link&#34;&gt;2. Download Link&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://enlacehacktivista.org/index.php/Geedge_Networks&#34;&gt;Enlace Hacktivista&lt;/a&gt; has provided the access to the leak:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BitTorrent: &lt;a href=&#34;https://enlacehacktivista.org/geedge.torrent&#34;&gt;https://enlacehacktivista.org/geedge.torrent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Direct HTTPS download: &lt;a href=&#34;https://files.enlacehacktivista.org/geedge/&#34;&gt;https://files.enlacehacktivista.org/geedge/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The leaked files total about &lt;strong&gt;600 GB&lt;/strong&gt;. Among them, the file &lt;code&gt;mirror/repo.tar&lt;/code&gt; alone, as an archive of the RPM packaging server, takes up &lt;strong&gt;500 GB&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;For detailed instructions on how to use the specific files, David Fifield has &lt;a href=&#34;https://github.com/net4people/bbs/issues/519#issuecomment-3286329872&#34;&gt;already provided a more thorough explanation on Net4People&lt;/a&gt;.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;     7206346  mirror/filelist.txt
497103482880  mirror/repo.tar
 14811058515  geedge_docs.tar.zst
  2724387262  geedge_jira.tar.zst
 35024722703  mesalab_docs.tar.zst
 63792097732  mesalab_git.tar.zst
       71382  A HAMSON-EN.docx
       16982  A Hamson.docx
      161765  BRI.docx
       14052  CPEC.docx
     2068705  CTF-AWD.docx
       19288  Schedule.docx
       26536  TSG Solution Review Description-20230208.docx
      704281  TSG-问题.docx
       35040  chat.docx
       27242  ty-Schedule.docx
      111244  待学习整理-23年MOTC-SWG合同草本V.1-2020230320.docx
       52049  打印.docx
      418620  替票证明.docx
      260551  领导修改版-待看Reponse to Customer&amp;#39;s Suggestions-2022110-V001--1647350669.docx
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;3-safety-considerations&#34;&gt;3. Safety Considerations&lt;/h2&gt;
&lt;p&gt;Due to the highly sensitive nature of these leaked materials, we strongly advise anyone who chooses to download and analyze them to take proper operational security precautions. It may be possible that these files may contain potentially risky content and accessing them in an insecure environment could expose you to surveillance or malware.&lt;/p&gt;
&lt;p&gt;Please consider analyzing these files only in an isolated (virtual) machine without internet access.&lt;/p&gt;
&lt;h2 id=&#34;4-background&#34;&gt;4. Background&lt;/h2&gt;
&lt;p&gt;Great Firewall of China (GFW) is an umbrella term for a series of Internet censorship systems. Behind it, teams for research and development, operations, hardware, and management each play their roles and coordinate with one another. In addition to fixed government agencies (such as the CNCERT), different entities provide technical support depending on individual contracts and tenders. This leak originates from an important branch of the GFW’s &lt;strong&gt;R&amp;amp;D capacity&lt;/strong&gt;: Geedge Networks and MESA Lab. The MESA lab is affiliated with the Institute of Information Engineering, Chinese Academy of Sciences (IIE, CAS).&lt;/p&gt;
&lt;p&gt;The origins trace back to Fang Binxing, the “Father of the Great Firewall”, coming to Beijing. At the end of 2008, he established the National Engineering Laboratory for Information Content Security (NELIST), initially based at the Institute of Computing Technology, Chinese Academy of Sciences. Beginning in 2012, the supporting institution changed to the Institute of Information Engineering, Chinese Academy of Sciences. In January 2012, some NELIST personnel formed a team at IIE, and in June 2012 the team was officially named the Processing Architecture Team, English name MESA (Massive Effective Stream Analysis). Below is an excerpt from MESA’s self-introduction:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;MESA Timeline

   January 2012: Liu Qingyun, Sun Yong, Zheng Chao, Yang Rong, Qin Peng, Liu Yang, and Li Jia formed a team at IIE;
   June 2012: The team was officially named the Processing Architecture Team, English name MESA (Massive Effective Stream Analysis);
   2012: Liu Qingyun was selected for IIE’s inaugural “Rising Star” talent program;
   2012: Yang Wei and Zhou Zhou joined the team;
   2012: The team successfully completed the cybersecurity assurance task for the 18th National Congress;
   January 2013: MESA’s first PhD trainee, Liu Tingwen, graduated successfully;
   2013: Li Shu, Liu Junpeng, and Liu Xueli joined the team;
   December 2013: The MESA team received IIE’s 2013 Major Scientific and Technological Progress Award;
   2014: Zhou Zhou was selected for IIE’s “Rising Star” talent program;
   2014: The MESA component SAPP platform began large-scale engineering deployment;
   2014: Zhang Peng, Yu Lingjing, and Jia Mengdie joined the team;
   2015: Zheng Chao was selected for IIE’s “Rising Star” talent program, and Zhang Peng was selected for IIE’s “Outstanding Talent Introduction” program;
   August 2015: MESA moved from the Agriculture Bureau to the Huayan Beili office area;
   July 2015: PhD student Sha Hongzhou trained by MESA graduated successfully, and Liu Xiaomei received Outstanding Graduate honors;
   2016: Dou Fenghu, Zhu Yujia, Wang Fengmei, Li Zhao, Lu Qiuwen, Du Meijie, Shen Yan, and Fang Xupeng joined MESA in succession, and the team expanded rapidly;
   2016: The team undertook multiple major engineering projects, with annual contracted revenue exceeding 35 million;
   December 2016: The MESA team participated in winning the National Science and Technology Progress Award (Second Prize);
   2018: Sun Yong and Zhou Zhou received the 2017 National State Secrecy Science and Technology Award (Second Prize);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;By 2018, Fang Binxing had also established himself in Hainan, and Geedge (Hainan) Information Technology Co., Ltd. (Geedge Networks Ltd.) was founded in the same year. Fang served as chief scientist, and the “core R&amp;amp;D personnel came from universities and research institutes such as the Chinese Academy of Sciences, Harbin Institute of Technology, and Beijing University of Posts and Telecommunications.” Much of this talent came from MESA—for example, Zheng Chao served as CTO. Attentive readers will notice that many mentors and students from the MESA timeline appear in the leaked Geedge company git commits.&lt;/p&gt;
&lt;h2 id=&#34;5-analysis-of-nonsource-code-files&#34;&gt;5. Analysis of Non–Source Code Files&lt;/h2&gt;
&lt;p&gt;The non–source-code portion of the leaked files has already been analyzed in detail by multiple professional teams, including, but not limited to,
InterSecLab, Amnesty International, Justice for Myanmar, The Globe and Mail, Der Standard, and Follow the Money. David Fifield has &lt;a href=&#34;https://github.com/net4people/bbs/issues/519#issue-3399074599&#34;&gt;collected and compiled&lt;/a&gt; these reports as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;InterSecLab&lt;/em&gt;: &lt;a href=&#34;https://interseclab.org/research/the-internet-coup/&#34;&gt;The Internet Coup&lt;/a&gt; (&lt;a href=&#34;https://web.archive.org/web/20250909115332/https://interseclab.org/research/the-internet-coup/&#34;&gt;archive&lt;/a&gt;) &lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf&#34;&gt;PDF 76 pages&lt;/a&gt; (&lt;a href=&#34;https://web.archive.org/web/20250909115839/https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf&#34;&gt;archive&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Amnesty International&lt;/em&gt;: &lt;a href=&#34;https://www.amnesty.org/en/documents/asa33/0206/2025/en/&#34;&gt;Shadows of Control: Censorship and mass surveillance in Pakistan&lt;/a&gt; (&lt;a href=&#34;https://web.archive.org/web/20250909115219/https://www.amnesty.org/en/latest/news/2025/09/pakistan-mass-surveillance-and-censorship-machine-is-fueled-by-chinese-european-emirati-and-north-american-companies/&#34;&gt;archive&lt;/a&gt;) &lt;a href=&#34;https://www.amnesty.org/en/wp-content/uploads/2025/09/ASA3302062025ENGLISH.pdf&#34;&gt;PDF 102 pages&lt;/a&gt; (&lt;a href=&#34;https://web.archive.org/web/20250909115238/https://www.amnesty.org/en/wp-content/uploads/2025/09/ASA3302062025ENGLISH.pdf&#34;&gt;archive&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Justice for Myanmar&lt;/em&gt;: &lt;a href=&#34;https://www.justiceformyanmar.org/stories/silk-road-of-surveillance&#34;&gt;Silk Road of Surveillance&lt;/a&gt; (&lt;a href=&#34;https://web.archive.org/web/20250909115436/https://www.justiceformyanmar.org/stories/silk-road-of-surveillance&#34;&gt;archive&lt;/a&gt;) &lt;a href=&#34;https://jfm-files.s3.us-east-2.amazonaws.com/public/Silk+Road+of+Surveillance+EN.pdf&#34;&gt;PDF 47 pages&lt;/a&gt; (&lt;a href=&#34;https://web.archive.org/web/20250909121539/https://jfm-files.s3.us-east-2.amazonaws.com/public/Silk+Road+of+Surveillance+EN.pdf&#34;&gt;archive&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;The Globe and Mail&lt;/em&gt;: &lt;a href=&#34;https://www.theglobeandmail.com/world/article-leaked-files-show-a-chinese-company-is-exporting-the-great-firewalls/&#34;&gt;Leaked files show a Chinese company is exporting the Great Firewall&amp;rsquo;s censorship technology&lt;/a&gt; (&lt;a href=&#34;https://web.archive.org/web/20250909115204/https://www.theglobeandmail.com/world/article-leaked-files-show-a-chinese-company-is-exporting-the-great-firewalls/&#34;&gt;archive&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Der Standard&lt;/em&gt;: &lt;a href=&#34;https://www.derstandard.at/consent/tcf/story/3000000286721/wie-china-seine-great-firewall-ins-ausland-exportiert&#34;&gt;Wie China seine Totalüberwachung des Internets ins Ausland exportiert&lt;/a&gt; (&lt;a href=&#34;https://archive.is/dCXZQ&#34;&gt;archive&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Follow the Money&lt;/em&gt;: &lt;a href=&#34;https://www.ftm.eu/articles/how-china-is-exporting-its-censorship-technology&#34;&gt;China exports censorship tech to authoritarian regimes – aided by EU firms&lt;/a&gt; (&lt;a href=&#34;https://archive.is/EIGSZ&#34;&gt;archive&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Below are David Fifield’s notes on related media reports and technical write-ups. &lt;strong&gt;Please note that the source-code portion of the leak has not yet been analyzed&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/net4people/bbs/issues/519#issuecomment-3275640752&#34;&gt;David Fifield&amp;rsquo;s notes on the related media reports&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/net4people/bbs/issues/519#issuecomment-3282101626&#34;&gt;David Fifield&amp;rsquo;s notes on the technical write-ups&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;6-analysis-of-source-code-files&#34;&gt;6. Analysis of Source Code Files&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;The source-code portion of the leaked files has not yet been carefully analyzed.&lt;/strong&gt; This leak is significant and far-reaching. Given the large volume of material, GFW Report will continue to update our analysis and findings on the &lt;a href=&#34;https://gfw.report/blog/geedge_and_mesa_leak/zh/&#34;&gt;current page&lt;/a&gt; as well as on &lt;a href=&#34;https://github.com/net4people/bbs/issues/519&#34;&gt;Net4People&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;61-analysis-of-mesa-git-contributors&#34;&gt;6.1 Analysis of MESA Git contributors&lt;/h3&gt;
&lt;p&gt;On September 26, 2025, Dynamic Internet Technology (DIT) released a website that visualizes the contributors and contributions to the MESA Lab git repos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://mesaauthor.dit-inc.us/&#34;&gt;https://mesaauthor.dit-inc.us/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;7-acknowledgement&#34;&gt;7. Acknowledgement&lt;/h2&gt;
&lt;p&gt;We would like to thank InterSecLab, Amnesty International, Justice for Myanmar, The Globe and Mail (环球邮报), Der Standard, and Follow the Money for their extensive and rigorous work. As part of a research consortium, InterSecLab has been working on indexing, translating, analyzing, interpreting, and summarizing 600 GB of leaked data over the course of nine months — an effort that has been invaluable in shedding light on the significance of this leak. The investigations, reporting, and analysis from all of these organizations provided essential context and insights for future work.&lt;/p&gt;
&lt;p&gt;To clarify, the GFW Report has never contributed to the analysis that forms the reports by these organizations.&lt;/p&gt;
&lt;h2 id=&#34;8-contact-or-join-us&#34;&gt;8. Contact or Join Us&lt;/h2&gt;
&lt;p&gt;This report was first published on &lt;a href=&#34;https://gfw.report/blog/geedge_and_mesa_leak/en/&#34;&gt;GFW Report&lt;/a&gt;. We also actively updated our analysis and findings on &lt;a href=&#34;https://github.com/net4people/bbs/issues/519&#34;&gt;Net4People&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We encourage you to share questions, comments, analysis, or additional evidence on this topic, either publicly or privately. Our private contact information can be found in the footer of the &lt;a href=&#34;https://gfw.report&#34;&gt;GFW Report&lt;/a&gt; website.&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>积至公司与MESA实验室：防火长城史上最大规模文件外泄分析</title>
        <link>https://gfw.report/blog/geedge_and_mesa_leak/zh/</link>
        <pubDate>Fri, 12 Sep 2025 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/geedge_and_mesa_leak/zh/</guid>
        
        <description>&lt;h2 id=&#34;1-引言&#34;&gt;1. 引言&lt;/h2&gt;
&lt;p&gt;2025 年 9 月 11 日星期四，中国防火长城（GFW）经历了其历史上最大规模的内部文件泄露事件。超过 500 GB 的源代码、工作日志和内部通信记录被泄露，揭示了 GFW 的研发和运作细节。&lt;/p&gt;
&lt;p&gt;此次泄露源自 GFW 背后的一支重要技术力量：积至（海南）信息技术有限公司（Geedge Networks Ltd.） 及中国科学院信息工程研究所（简称：中科院信工所）第二研究室的处理架构组 MESA 实验室。文件显示，该公司不仅为新疆、江苏、福建等地政府提供服务，还在“一带一路”框架下向缅甸、巴基斯坦、埃塞俄比亚、哈萨克斯坦以及一个未被识别的国家输出审查与监控技术。&lt;/p&gt;
&lt;p&gt;该泄漏事件意义重大且深远，由于资料体量庞大，GFW Report 将在&lt;a href=&#34;https://gfw.report/blog/geedge_and_mesa_leak/zh/&#34;&gt;当前页面&lt;/a&gt;，以及 &lt;a href=&#34;https://github.com/net4people/bbs/issues/519&#34;&gt;Net4People&lt;/a&gt; 上持续更新我们的分析与发现。&lt;/p&gt;
&lt;h2 id=&#34;2-下载链接&#34;&gt;2. 下载链接&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://enlacehacktivista.org/index.php/Geedge_Networks&#34;&gt;Enlace Hacktivista&lt;/a&gt; 提供了获取泄露数据的途径：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BitTorrent: &lt;a href=&#34;https://enlacehacktivista.org/geedge.torrent&#34;&gt;https://enlacehacktivista.org/geedge.torrent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;HTTPS 直接下载: &lt;a href=&#34;https://files.enlacehacktivista.org/geedge/&#34;&gt;https://files.enlacehacktivista.org/geedge/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;泄漏文件总计约 600 GB。其中&lt;code&gt;mirror/repo.tar&lt;/code&gt;单个文件，作为RPM打包服务器的存档就占了500 GB。具体的文件的使用方法，David Fifield &lt;a href=&#34;https://github.com/net4people/bbs/issues/519#issuecomment-3286329872&#34;&gt;已经在Net4People 上提供了更详尽的说明&lt;/a&gt;。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;     7206346  mirror/filelist.txt
497103482880  mirror/repo.tar
 14811058515  geedge_docs.tar.zst
  2724387262  geedge_jira.tar.zst
 35024722703  mesalab_docs.tar.zst
 63792097732  mesalab_git.tar.zst
       71382  A HAMSON-EN.docx
       16982  A Hamson.docx
      161765  BRI.docx
       14052  CPEC.docx
     2068705  CTF-AWD.docx
       19288  Schedule.docx
       26536  TSG Solution Review Description-20230208.docx
      704281  TSG-问题.docx
       35040  chat.docx
       27242  ty-Schedule.docx
      111244  待学习整理-23年MOTC-SWG合同草本V.1-2020230320.docx
       52049  打印.docx
      418620  替票证明.docx
      260551  领导修改版-待看Reponse to Customer&amp;#39;s Suggestions-2022110-V001--1647350669.docx
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;3-安全注意事项&#34;&gt;3. 安全注意事项&lt;/h2&gt;
&lt;p&gt;鉴于这些泄露材料高度敏感，我们强烈建议任何选择下载和分析它们的人采取适当的操作安全防护措施，并假设这些文件可能包含潜在的风险内容（例如在不安全的环境中存储或分析它们可能会导致监控或恶意软件攻击）。请考虑仅在无网络连接的隔离环境中分析这些文件（如虚拟机或不联网的主机）。&lt;/p&gt;
&lt;h2 id=&#34;4-背景&#34;&gt;4. 背景&lt;/h2&gt;
&lt;p&gt;中国的防火长城GFW是一系列互联网审查系统的统称。其背后的研发，运维，硬件，管理，各司其职、相互协作。除了固定的政府部门（如国家互联网应急中心），根据每次的合同和招标，还会有不同的单位作为技术支撑。此次泄露源自 GFW 背后&lt;strong&gt;研发力量&lt;/strong&gt;中的重要一支：积至和 MESA。MESA 实验室就是中国科学院信息工程研究所（简称：中科院信工所）第二研究室的处理架构组。&lt;/p&gt;
&lt;p&gt;这一切最早追溯到被誉为&amp;quot;防火长城之父“的方滨兴来到北京，先是在2008年底成立信息内容安全国家工程实验室（NELIST），依托中国科学院计算技术研究所。后在2012年起依托单位改为中国科学院信息工程研究所。2012年1月，部分NELIST的人马在信工所组建团队，并于2012年6月将团队正式定名处理架构团队，英文名称 MESA（Massive Effective Stream Analysis）。下面是 MESA 自我介绍的一段摘抄：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;MESA大事记

   2012年1月，刘庆云，孙永，郑超，杨嵘，秦鹏，刘洋，李佳在信工所组建团队；
   2012年6月，团队正式定名处理架构团队，英文名称 MESA（Massive Effective Stream Analysis）；
   2012年，刘庆云入选信工所首届“青年之星”人才培养计划；
   2012年，杨威，周舟加入团队；
   2012年，团队顺利完成“十八大”网络安全保障任务；
   2013年1月，MESA培养的第一名博士柳厅文顺利毕业；
   2013年，李舒，刘俊朋，刘学利加入团队；
   2013年12月，MESA团队获得2013年度信工所重大科技进展奖；
   2014年，周舟入选信工所“青年之星”人才培养计划；
   2014年，MESA组件SAPP平台开始在工程中大规模应用；
   2014年，张鹏，喻灵婧，贾梦蝶加入团队；
   2015年，郑超入选信工所“青年之星”人才培养计划，张鹏入选信工所“引进优秀人才”培养计划；
   2015年8月，MESA从农业局搬迁到华严北里办公区；
   2015年7月，MESA培养的博士生沙泓州顺利毕业，刘晓梅获得优秀毕业生荣誉；
   2016年，窦凤虎、朱宇佳、王凤梅、李钊、陆秋文、杜梅婕、沈岩、方绪鹏陆续加入MESA，团队规模迅速扩大；
   2016年，团队承担多项重大工程项目，年收入合同额超过3500万；
   2016年12月，MESA团队参与获得国家科技进步二等奖；
   2018年，孙永、周舟荣获2017年国家保密科学技术二等奖；
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;到了2018年，方滨兴此时已经在海南也站稳了脚跟，积至（海南）信息技术有限公司（Geedge Networks Ltd.）就在同年诞生了。方滨兴作首席科学家，“核心研发人员来自中科院、哈尔滨工业大学、北京邮电大学等高校和科研院所“。其中大部分血液就来自 MESA，比如郑超担任CTO。细心的读者会发现，MESA 大事记中的许多导师和学生都会在泄漏的积至公司的git commit中出现。&lt;/p&gt;
&lt;h2 id=&#34;5-非源码文件分析&#34;&gt;5. 非源码文件分析&lt;/h2&gt;
&lt;p&gt;此次泄漏文件的非源代码部分已经被多个专业团队详细分析，这些团队包括但不限于 InterSecLab、国际特赦组织（Amnesty International）、Justice for Myanmar、环球邮报（The Globe and Mail）、Der Standard，以及 Follow the Money。&lt;/p&gt;
&lt;p&gt;David Fifield 已经&lt;a href=&#34;https://github.com/net4people/bbs/issues/519#issue-3399074599&#34;&gt;收集并整理&lt;/a&gt;了这些报告并做了笔记。&lt;strong&gt;请注意泄漏文件的源代码的部分还没有被分析&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;InterSecLab&lt;/em&gt;：&lt;a href=&#34;https://interseclab.org/research/the-internet-coup/&#34;&gt;互联网政变（The Internet Coup）&lt;/a&gt; (&lt;a href=&#34;https://web.archive.org/web/20250909115332/https://interseclab.org/research/the-internet-coup/&#34;&gt;存档&lt;/a&gt;) &lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf&#34;&gt;PDF 76 页&lt;/a&gt; (&lt;a href=&#34;https://web.archive.org/web/20250909115839/https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf&#34;&gt;存档&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;国际特赦组织（Amnesty International）&lt;/em&gt;：&lt;a href=&#34;https://www.amnesty.org/en/documents/asa33/0206/2025/en/&#34;&gt;控制的阴影：巴基斯坦的审查与大规模监控&lt;/a&gt; (&lt;a href=&#34;https://web.archive.org/web/20250909115219/https://www.amnesty.org/en/latest/news/2025/09/pakistan-mass-surveillance-and-censorship-machine-is-fueled-by-chinese-european-emirati-and-north-american-companies/&#34;&gt;存档&lt;/a&gt;) &lt;a href=&#34;https://www.amnesty.org/en/wp-content/uploads/2025/09/ASA3302062025ENGLISH.pdf&#34;&gt;PDF 102 页&lt;/a&gt; (&lt;a href=&#34;https://web.archive.org/web/20250909115238/https://www.amnesty.org/en/wp-content/uploads/2025/09/ASA3302062025ENGLISH.pdf&#34;&gt;存档&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Justice for Myanmar&lt;/em&gt;：&lt;a href=&#34;https://www.justiceformyanmar.org/stories/silk-road-of-surveillance&#34;&gt;监控的丝绸之路（Silk Road of Surveillance）&lt;/a&gt; (&lt;a href=&#34;https://web.archive.org/web/20250909115436/https://www.justiceformyanmar.org/stories/silk-road-of-surveillance&#34;&gt;存档&lt;/a&gt;) &lt;a href=&#34;https://jfm-files.s3.us-east-2.amazonaws.com/public/Silk+Road+of+Surveillance+EN.pdf&#34;&gt;PDF 47 页&lt;/a&gt; (&lt;a href=&#34;https://web.archive.org/web/20250909121539/https://jfm-files.s3.us-east-2.amazonaws.com/public/Silk+Road+of+Surveillance+EN.pdf&#34;&gt;存档&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;环球邮报（The Globe and Mail）&lt;/em&gt;：&lt;a href=&#34;https://www.theglobeandmail.com/world/article-leaked-files-show-a-chinese-company-is-exporting-the-great-firewalls/&#34;&gt;泄露文件显示一家中国公司正在出口“防火长城”的审查技术&lt;/a&gt; (&lt;a href=&#34;https://web.archive.org/web/20250909115204/https://www.theglobeandmail.com/world/article-leaked-files-show-a-chinese-company-is-exporting-the-great-firewalls/&#34;&gt;存档&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Der Standard&lt;/em&gt;：&lt;a href=&#34;https://www.derstandard.at/consent/tcf/story/3000000286721/wie-china-seine-great-firewall-ins-ausland-exportiert&#34;&gt;中国如何将其全面的互联网监控出口到国外&lt;/a&gt; (&lt;a href=&#34;https://archive.is/dCXZQ&#34;&gt;存档&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Follow the Money&lt;/em&gt;：&lt;a href=&#34;https://www.ftm.eu/articles/how-china-is-exporting-its-censorship-technology&#34;&gt;中国将审查技术出口至威权政权——在欧盟公司的协助下&lt;/a&gt; (&lt;a href=&#34;https://archive.is/EIGSZ&#34;&gt;存档&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;51-对报道的摘抄&#34;&gt;5.1 对报道的摘抄&lt;/h3&gt;
&lt;p&gt;以下为 David Fifield &lt;a href=&#34;https://github.com/net4people/bbs/issues/519#issuecomment-3275640752&#34;&gt;对报道的摘抄&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;以下是三篇新闻文章的笔记和重点。&lt;/p&gt;
&lt;h3 id=&#34;环球邮报-泄露文件显示一家中国公司正在向海外出口防火长城的审查技术&#34;&gt;&lt;em&gt;环球邮报&lt;/em&gt;： &lt;a href=&#34;https://web.archive.org/web/20250909115204/https://www.theglobeandmail.com/world/article-leaked-files-show-a-chinese-company-is-exporting-the-great-firewalls/&#34;&gt;泄露文件显示一家中国公司正在向海外出口防火长城的审查技术&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;泄露的内部文件显示，Geedge 直接与各国政府和互联网服务提供商（ISP）合作，安装用于审查和监控的产品。他们提供的功能包括追踪用户位置和网络访问历史，以及封锁服务和翻墙系统。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;……超过 10 万份与 &lt;a href=&#34;https://www.geedgenetworks.com/&#34;&gt;Geedge Networks&lt;/a&gt; 有关的内部文件泄露。这是一家鲜为人知的中国公司，却悄然在开发防火长城和向世界各国政府提供类似的审查能力方面扮演了关键角色……
这些文件不仅揭示了 Geedge 如何向专制客户出口先进的审查技术，使他们获得本来不具备的能力，也揭示了防火长城本身的演变。
其中包括过滤网站和应用程序的方案、实时在线监控、对特定地区进行网络限速或断网、通过在线痕迹识别匿名用户，以及封锁包括 VPN 在内的翻墙工具。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Geedge 至少涉足五个国家：哈萨克斯坦、埃塞俄比亚、缅甸（&lt;a href=&#34;https://github.com/net4people/bbs/issues/369&#34;&gt;#369&lt;/a&gt;）、巴基斯坦，以及一个仅以代号 A24 出现的未公开国家。哈萨克斯坦是其 2018 年成立后的早期客户。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Geedge 成立于 2018 年后不久，首批客户之一便是哈萨克斯坦政府，公司向其出售了旗舰产品「天狗安全网关」（TSG），该产品具备类似中国防火长城的功能，监控和过滤所有经过的网络流量，并检测和阻止翻墙行为。
同样的工具也在埃塞俄比亚和&lt;a href=&#34;https://www.justiceformyanmar.org/stories/the-myanmar-juntas-partners-in-digital-surveillance-and-censorship&#34;&gt;缅甸&lt;/a&gt;部署，在缅甸军政府禁止 VPN 的过程中发挥了关键作用。在许多情况下，Geedge 与其他私营公司合作，包括埃塞俄比亚的 Safaricom、缅甸的 Frontiir 和 Ooredoo 等 ISP，共同实施政府审查。文件显示，这些 ISP 都未回应置评请求。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;缅甸在 “正义缅甸” 报告 &lt;a href=&#34;https://www.justiceformyanmar.org/stories/silk-road-of-surveillance&#34;&gt;《监控丝绸之路》&lt;/a&gt; 中被特别提及。巴基斯坦则在国际特赦组织报告 &lt;a href=&#34;https://www.amnesty.org/en/documents/asa33/0206/2025/en/&#34;&gt;《控制的阴影》&lt;/a&gt; 中被特别提及。&lt;/p&gt;
&lt;p&gt;关于巴基斯坦，这篇 &lt;em&gt;环球邮报&lt;/em&gt; 的文章指出，Geedge 在 Sandvine 撤出后，把自己的新系统（包括 TSG）安装在原有 Sandvine 留下的设备上。（Sandvine 现已更名为 AppLogic。）&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Sandvine 于 2023 年在外界日益严格的审查下退出巴基斯坦，很快就被 Geedge 替代。文件显示，Geedge 不仅利用了现有的 Sandvine 安装设备，还提供了新技术，驱动巴基斯坦的“网络监控系统”（该国的国家级防火墙）。
AppLogic 在声明中表示，他们并不了解 Geedge，且任何被重新利用的硬件都是“现成设备”，不具备 Sandvine 解决方案所独有的特殊功能。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;文章引用了同一份招聘广告（曾在 &lt;a href=&#34;https://github.com/net4people/bbs/issues/369#issuecomment-3254638017&#34;&gt;#369 (comment)&lt;/a&gt; 出现），其中提到另外四个国家：马来西亚、巴林、阿尔及利亚和印度：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Geedge 最近发布的一则&lt;a href=&#34;https://archive.ph/GYfv4&#34;&gt;招聘广告&lt;/a&gt;还提到了“一带一路”。该广告寻找“能说英语或其他外语”的候选人，并愿意赴“巴基斯坦、马来西亚、巴林、阿尔及利亚和印度”进行 3 至 6 个月的商务出差。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;除了海外，文件显示 Geedge 也在新疆、江苏和福建省有部署。这可能意味着一种更加分布式、区域化的防火墙系统，类似河南的情况，见 &lt;a href=&#34;https://github.com/net4people/bbs/issues/416&#34;&gt;#416&lt;/a&gt; 和 &lt;a href=&#34;https://gfw.report/publications/sp25/en/&#34;&gt;《一堵墙后的墙》&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;Geedge 与中国科学院大学的 MESA 实验室关系密切。我们之前在 &lt;a href=&#34;https://github.com/net4people/bbs/issues/471#issuecomment-2803829013&#34;&gt;#471 (comment)&lt;/a&gt; 的读书组帖子中提到过 MESA 的“SAPP”网络分析平台。Geedge 的首席技术官 &lt;a href=&#34;https://github.com/net4people/bbs/issues/369#issuecomment-2195455424&#34;&gt;郑超&lt;/a&gt; 是 MESA 2012 年 1 月的&lt;a href=&#34;https://web.archive.org/web/20181019035422/https://www.mesalab.cn/f/team/event&#34;&gt;联合创始人&lt;/a&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Geedge 文件中自豪地称方某为“防火长城之父”。公司其他高管，如 CEO 王远地和 CTO 郑超，被列为&lt;a href=&#34;https://ieeexplore.ieee.org/author/37085413301&#34;&gt;互联网审查相关论文的合著者&lt;/a&gt;，以及 &lt;a href=&#34;https://patents.google.com/?assignee=Zhongdian+Jizhi+Hainan+Information+Technology+Co+Ltd&#34;&gt;Geedge 提交的专利&lt;/a&gt; 的发明人。公司与中科院 &lt;a href=&#34;https://web.archive.org/web/20241202193832/https://mesalab.cn/&#34;&gt;MESA 实验室&lt;/a&gt;保持紧密关系，文件显示双方人员有定期合作。
一位 MESA 研究员曾记录 2024 年 7 月新疆会议的内容，与会者谈到利用技术“打击翻墙工具”，并建立“新疆分中心”作为“反恐先锋”和“省级能力示范”。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;公司对翻墙系统和 VPN 进行专门研究，以便封锁它们。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;文件显示，公司员工致力于对许多常见工具进行逆向工程，并寻找封锁方法。其中一组文件列出了九个商业 VPN 已被“解决”，并提供了识别和过滤流量的多种方式。这些功能与防火长城长期展示的能力一致，目前大多数商业 VPN 在中国境内无法访问，许多专门的翻墙工具也难以使用。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;标准报-中国如何将全面网络监控出口海外&#34;&gt;&lt;em&gt;标准报&lt;/em&gt;： &lt;a href=&#34;https://archive.is/dCXZQ&#34;&gt;中国如何将全面网络监控出口海外&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;本文列出了 Geedge 技术的其他功能，除了追踪用户和屏蔽访问之外，还包括：在 HTTP 会话中注入恶意代码，以及直接发起 DDoS 流量攻击。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Geedge Networks 提供的技术极其强大，&lt;a href=&#34;https://interseclab.org/research/8&#34;&gt;Intersec Lab 的 IT 安全专家的分析&lt;/a&gt;表明，它们能让当局在特定地区（如抗议期间）监控个人的数据流量。它们可以精准识别并封锁特定 VPN，而用户此前一直依赖 VPN 来绕过当局的数字审查。甚至可以向网站插入恶意代码，或发起 DDoS 攻击，使特定网站瘫痪。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;文中也提到 Geedge 软件部署在巴基斯坦 Sandvine 硬件上。显然，Geedge 特别强调软硬件解耦。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;后来，加拿大公司 Sandvine 向巴基斯坦提供了一套系统，使当局能够封锁不良网站。2023 年，Sandvine（后更名 Applogic Networks）退出巴基斯坦，但显然留下了部分硬件。
调查显示，这些硬件至少在最初被 Geedge Networks 重新利用。Applogic Networks 告诉《标准报》，他们对此毫不知情，并强调其技术无法解密用户数据或植入间谍软件。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;法国公司 &lt;a href=&#34;https://en.wikipedia.org/wiki/Thales_Group&#34;&gt;泰雷兹集团&lt;/a&gt;为 Geedge 提供许可管理。Geedge 至少使用过一个德国服务器进行软件下载分发。（或许是为了避免若服务器在中国境内会被防火长城干扰。）&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;一家法国公司——可能是无意中——成了 Geedge 的帮手。泰雷兹集团出售的软件可用于许可证管理。Geedge 显然利用该软件来控制其售出的产品，比如限制软件的使用时长。
泰雷兹集团向《标准报》确认这家中国公司是其客户之一。但 Geedge 软件并不依赖法国产品才能运行。泰雷兹称自己与监控无关。
此外，Geedge 还利用德国服务器，通过下载链接向客户分发软件。其动机尚不清楚，但众所周知，中国防火长城正日益限制海外访问中国网站。德国相关部门未对《标准报》的询问作出回应。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;follow-the-money-中国向威权政权出口审查技术欧盟企业亦有协助&#34;&gt;&lt;em&gt;Follow the Money&lt;/em&gt;： &lt;a href=&#34;https://archive.is/EIGSZ&#34;&gt;中国向威权政权出口审查技术——欧盟企业亦有协助&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;本文概述了 Geedge 的多种产品，这些产品可能打包出售，也可能单独提供。“Cyber Narrator” 是一种高层监控面板，非技术用户也能直接使用。“天狗安全网关”（TSG）是实际执行网络监控和封锁的设备。TSG Galaxy 是数据存储与分析流水线。“Network Zodiac” 是一个对其他系统进行管理与监控的工具。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Geedge 的产品组合包括多种技术。&lt;a href=&#34;https://interseclab.org/research/8&#34;&gt;InterSecLab 的数据分析&lt;/a&gt;显示，“Cyber Narrator”是客户的主要界面，即使非技术人员也能利用它监控特定区域的互联网用户（如示威期间）。
其次是被认为是旗舰产品的“天狗安全网关”，它能封锁 VPN，还能向网站注入恶意代码或发起攻击。
另一个产品是“TSG Galaxy”，用于存储收集到的用户数据；而“Network Zodiac”则监控其他所有系统，并报告错误。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Geedge 的设备（如 TSG）可能安装的范围远超此次泄露提及的国家，因为其官网声称“服务 40+ 全球运营商”：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;据中国媒体报道，2024 年 Binxing 在一次演讲中宣布，公司计划“拓展国际市场”，推动中国技术全球化。文件显示，缅甸、巴基斯坦、埃塞俄比亚和哈萨克斯坦都至少持有旗舰产品 TSG 的许可证。此外，Geedge 官网宣称服务“40+ 全球运营商”，暗示其影响远超泄露文件所示。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;一份 2023 年 2 月的 Geedge 工单涉及埃塞俄比亚的社交媒体封锁，与当时已知的封锁情况（&lt;a href=&#34;https://github.com/net4people/bbs/issues/210&#34;&gt;#210&lt;/a&gt;）相符。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;2023 年 2 月，全国抗议浪潮期间，Geedge 的一份工单显示其专家受召处理与 YouTube、Twitter 等社交媒体平台相关的问题。同一时间段，外界也报道了这些平台的封锁情况。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;至少有一份 Jira 工单显示了电子邮件明文拦截的证据：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;内部文件显示，Geedge 的工具（包括 TSG）已在[巴基斯坦]使用——至少在一起案例中，某全球航运公司与一家巴基斯坦公司的电子邮件通信被拦截。&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;52-对报告的分析&#34;&gt;5.2 对报告的分析&lt;/h3&gt;
&lt;p&gt;以下为 David Fifield 对&lt;a href=&#34;https://github.com/net4people/bbs/issues/519#issuecomment-3282101626&#34;&gt;报告的摘抄和分析&lt;/a&gt;：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/research/the-internet-coup/&#34;&gt;InterSecLab 报告&lt;/a&gt;（&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf&#34;&gt;PDF 76 页&lt;/a&gt;）写得非常好，包含大量具体的技术细节。它更详细地解释了 Geedge 的产品套件、其与 &lt;a href=&#34;https://github.com/net4people/bbs/issues/471#issuecomment-2803829013&#34;&gt;MESA&lt;/a&gt; 研究实验室的关系，以及在各国的部署时间线。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=7&#34;&gt;p.7&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;基于对一批超过 100,000 份 Geedge Networks 文档泄露材料的分析（该材料被分享给 InterSecLab），本研究揭示了 Geedge Networks 系统的功能与能力，包括深度包检测、对移动用户的实时监控、对互联网流量的精细化控制，以及可按地区定制的审查规则。泄露材料还揭示了 Geedge Networks 与学术实体 Mesalab 的关系，以及他们与客户政府之间的互动。其对数据主权的影响十分重大，我们的发现对监控与信息控制技术商品化的趋势提出了担忧。
本研究审视了 Geedge Networks 在多个国家的系统的最新进展，包括其已知的部署时间线。通过分析该公司的内部文档，InterSecLab 得以记录商业化“国家防火墙”的扩张，并在这些系统扩散的背景下，推测其对全球互联网未来的影响。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;geedge-产品&#34;&gt;Geedge 产品&lt;/h2&gt;
&lt;h3 id=&#34;天狗安全网关tiangou-secure-gateway&#34;&gt;&lt;a href=&#34;https://www.geedgenetworks.com/tiangou-secure-gateway-english/&#34;&gt;天狗安全网关（Tiangou Secure Gateway）&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;天狗安全网关（TSG）是多用途防火墙与监控设备的名称。TSG 包含所有主要的 DPI、过滤、跟踪、限速与攻击功能。TSG 提取的数据会进入 TSG Galaxy 进行存储与分析。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=22&#34;&gt;p.22&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;TSG 的能力非常广泛，具备通过深度包检测进行监控与审查、识别并封锁 VPN 和各种翻墙工具、限速流量、监控、跟踪、标记并封锁个体互联网用户，以及以恶意软件感染用户等功能。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;TSG 可以安装在称为 &lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=29&#34;&gt;TSGX&lt;/a&gt; 的一体化硬件平台上，也可以搭配客户的现有硬件运行。（报告称在巴基斯坦，Geedge 的 TSG 安装在 Sandvine 留下的设备上。）TSG 运行名为 &lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=30&#34;&gt;TSG-OS&lt;/a&gt; 的操作系统，其基于 Red Hat Enterprise Linux 与 Docker（参见 郑超 等人的《&lt;a href=&#34;https://github.com/net4people/bbs/issues/282&#34;&gt;&amp;ldquo;A Flexible and Efficient Container-based NFV Platform for Middlebox Networking&amp;rdquo;&lt;/a&gt;》）。&lt;/p&gt;
&lt;p&gt;可按需安装任意数量的 TSG 节点，名为 &lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=31&#34;&gt;Ether Fabric&lt;/a&gt; 的分流设备会按 5 元组哈希在所有节点之间做负载均衡。用于管理 TSG 集群的系统称为 &lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=30&#34;&gt;Central Management&lt;/a&gt; 或“毕方”（Bifang）。&lt;/p&gt;
&lt;p&gt;TSG 依赖名为 MARSIO 的用户态网络系统。也就是说，它自行进行路由与报文处理，为了效率而绕过 Linux 内核。它使用了 &lt;a href=&#34;https://www.dpdk.org/&#34;&gt;DPDK&lt;/a&gt;。（再次参见 2018 年的《&lt;a href=&#34;https://github.com/net4people/bbs/issues/282&#34;&gt;&amp;ldquo;A Flexible and Efficient Container-based NFV Platform for Middlebox Networking&amp;rdquo;&lt;/a&gt;》。）&lt;/p&gt;
&lt;h3 id=&#34;tsg-galaxy&#34;&gt;TSG Galaxy&lt;/h3&gt;
&lt;p&gt;TSG Galaxy 是一个数据存储与汇聚系统（&lt;a href=&#34;https://en.wikipedia.org/wiki/Extract%2C_transform%2C_load&#34;&gt;抽取-转换-加载&lt;/a&gt; 的 &lt;a href=&#34;https://en.wikipedia.org/wiki/Data_warehouse&#34;&gt;数据仓库&lt;/a&gt;），保存诸如 TCP 与 UDP 会话及其协议（包括 TLS、SIP、DNS、QUIC）的元数据。Galaxy 中的信息可由 Cyber Narrator 进行查询。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=20&#34;&gt;p.20&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;TSG Galaxy 是 Geedge Networks 的 ETL（抽取、转换、加载）数据仓库方案，
为互联网规模的大规模监控而设计，在客户国家收集并汇聚所有互联网用户及其在互联网上传输的数据的大量信息。
它构建在开源的 Apache Kafka 流处理平台之上，这是一种常见的数据处理软件，常被在线零售商和广告商用于提供客户分析。
针对本研究分析的泄露数据包括一份 TSG Galaxy 的 SQL 架构，表明 TSG Galaxy 用于存储全国范围内所有 TCP 与 UDP 会话的记录——这些传输协议广泛用于宽带与移动数据——以及所有的 SIP 会话。SIP 是一种用于 VoIP（网络语音通信）的协议，是大多数现代电话网络的基础。这意味着 TSG Galaxy 不仅允许监控互联网上的网络流量与内容，也允许监控电话通话。&lt;/p&gt;
&lt;p&gt;TSG Galaxy 采用 IP 流信息导出（IPFIX）来分析流量，并使用深度包检测（DPI）提取元数据。通过 DPI，他们可以提取详细的指纹信息，包括 TLS 与 QUIC 的 SNI、DNS 查询以及电子邮件头。TSG Galaxy 还实现了连接指纹技术，例如 JA3 哈希，使 Cyber Narrator 能识别模式以帮助判断用户使用的操作系统以及连接所用的应用。这项技术可以用于识别用户是否使用 VPN 等翻墙工具来隐藏流量或绕过审查。在 TSG Galaxy 内，所有这些信息与来自互联网服务提供商的信息相结合，通过多种标识符（包括 IP 地址、用户的订户 ID、IMEI 与 IMSI）关联到具体的互联网用户。来自 TSG Galaxy 的元数据会被发送到一个数据库，客户可以通过 Cyber Narrator 进行查询。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;cyber-narrator&#34;&gt;&lt;a href=&#34;https://www.geedgenetworks.com/cyber-narrator-english/&#34;&gt;Cyber Narrator&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Cyber Narrator 是一个为非技术用户设计的用户界面，用于查询与展示由 TSG 收集、存储在 TSG Galaxy 中的信息。可以在 Cyber Narrator 中控制对服务与协议的封锁，并提供查找访问过特定内容的用户标识符的功能。Cyber Narrator 使用名为 WebSketch 的远程服务，为 IP 地址等标识符添加来自第三方数据经纪商或 Geedge 自身研究的元数据注释。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=19&#34;&gt;p.19&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Cyber Narrator 是一款强大的工具，能够在个体客户层面跟踪网络流量，并可通过将活动与特定小区标识（cell ID）关联起来而实时识别移动用户的地理位置。该系统还允许政府客户查看聚合的网络流量。&lt;/p&gt;
&lt;p&gt;……Cyber Narrator 可以让客户政府与安全力量更容易地将使用翻墙工具或访问其他被其视为潜在恶意的应用或网页的个体用户标记出来。Cyber Narrator 的分析能力还可用于阻断对特定网站或 VPN 服务的访问。通过 Cyber Narrator，客户政府还可以识别在限制之前访问过相关内容或服务的个人。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;网络星座network-zodiac&#34;&gt;&lt;a href=&#34;https://www.geedgenetworks.com/nezha-one-stop-monitoring-system-english/&#34;&gt;网络星座（Network Zodiac）&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Network Zodiac，或称哪吒（Nezha），是一个监控其他组件的系统，类似于 &lt;a href=&#34;https://grafana.com/&#34;&gt;Grafana&lt;/a&gt;。看起来 Network Zodiac 的仪表板具备 SSH 到任意其他主机（如某个 TSG 节点）的能力——显然，如果某台 Network Zodiac 主机被攻陷，这将带来巨大的风险集中。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=33&#34;&gt;p.33&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;与流行的开源解决方案相比，一个显著的差异化特性是其集成的 Web 终端，使网络管理员能够通过 SSH 远程连接到任意被监控的端点。该功能为客户提供了对网络设备进行故障排查和管理的直接访问。然而，它也使客户面临重大安全风险。在最糟糕的情况下，黑客可能获取对全国范围内部署的所有安全设备的访问权。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;tsg-的能力&#34;&gt;TSG 的能力&lt;/h2&gt;
&lt;p&gt;TSG 具备典型的多协议深度包检测与封锁能力，同时还具有令人意外的限速、注入、跟踪与攻防功能。&lt;/p&gt;
&lt;h3 id=&#34;镜像模式与在线模式&#34;&gt;镜像模式与在线模式&lt;/h3&gt;
&lt;p&gt;TSG 与 Ether Fabric 可以以旁路（“镜像”或“被动”）模式部署，也可以以内联（可阻断流量或“主动”）模式部署。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=37&#34;&gt;p.37&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Geedge 系统可在两种主要模式下部署——镜像与在线——以帮助控制互联网。在镜像模式下（文档中有时称为“被动”），数据通过网络 TAP 被镜像到 Geedge 设备。具体而言，该网络 TAP 是一种光旁路开关。数据包无需等待处理即可继续前往目的地。在此模式下，即便 Geedge 系统发生故障，互联网仍可继续运作。该模式的优势在于不会因处理延迟或拥塞而增加网络时延。在镜像模式下，客户无法阻止特定流量通过，不得不依赖数据包注入来阻断连接。
在线模式（文档中也称为“主动”模式）要求流量在继续前往目的地之前必须先通过 Geedge 设备……该模式的优势在于可以彻底阻止特定流量流经网络。通常，这是那些希望获得绝对控制的客户所选择的方案，但代价是可靠性与网络质量的下降。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;将其与 2024 年&lt;a href=&#34;https://github.com/net4people/bbs/issues/510#issue-3334906527&#34;&gt;巴基斯坦一位官员的说法&lt;/a&gt;对比：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;但为了监控本地流量，新的防火墙将采用所谓的“内联网络”，其作用类似安检点，每个数据包都必须被检查，并被允许通过或被阻断——不同于仅观察并记录流量而不干预其流动的另一种机制。
这位 ISP 官员说，使用内联网络“必然会降低网速”。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;深度包检测&#34;&gt;深度包检测&lt;/h3&gt;
&lt;p&gt;报告提到的协议包括 HTTP、DNS、电子邮件、TLS、QUIC 与 SIP。&lt;/p&gt;
&lt;p&gt;可从 TLS 与 QUIC 中提取服务器名称指示（SNI）。（关于基于 QUIC SNI 的中国审查，参见《&lt;a href=&#34;https://gfw.report/publications/usenixsecurity25/en/&#34;&gt;&amp;ldquo;Exposing and Circumventing SNI-based QUIC Censorship of the Great Firewall of China&amp;rdquo;&lt;/a&gt;》。）&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=20&#34;&gt;p.20&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;使用 DPI，他们可以提取详细的指纹信息，包括 TLS 与 QUIC 的 SNI、DNS 查询以及电子邮件头。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;若在客户端安装 MITM 证书，TLS 流量可被解密；否则 TSG 必须依赖对加密流量的分类启发式：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=23&#34;&gt;p.23&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;TSG 能通过两种主要方法分析传输层安全（TLS）流量。第一种方法是使用中间人（MITM）技术进行完全解密，这需要订户安装自签名的根 CA 证书。第二种方法采用 DPI 与机器学习技术，从加密流量中提取元数据。后者更常用，因为它对互联网用户不可见，从而无需用户安装 CA 证书或配置任何代理设置。……负责实施 TLS MITM 攻击的组件被称为 Tiangou Frontend Engine（TFE）。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;流量限速&#34;&gt;流量限速&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=25&#34;&gt;p.25&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;TSG 集成了流量整形能力，能够对特定服务的流量进行优先级分配或限速，从而在不直接封锁的情况下降低服务质量。这可以通过直接的流量整形来实现，也可以通过应用差分服务代码点（DSCP）标记来实现，后者是限制或优先处理流量的行业标准。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;注入与修改&#34;&gt;注入与修改&lt;/h3&gt;
&lt;p&gt;TSG 能够注入与修改流量。它既可以用于封锁目的，也可以用于以恶意软件感染用户，或诱使其对目标发动 DDoS 攻击，类似于&lt;a href=&#34;https://censorbib.nymity.ch/#Marczak2015a&#34;&gt;“大炮”（Great Cannon）&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=23&#34;&gt;p.23&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;TSG 还能通过诸如伪造重定向响应、修改头部、注入脚本、替换文本与覆盖响应体等技术，实时修改 HTTP 会话。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=26&#34;&gt;p.26&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;TSG 配备了在线注入能力，允许在通过网络传输的文件中插入恶意代码。Geedge Networks 明确表示该功能旨在在互联网流量经过 TSG 系统时插入恶意软件。
TSG 的在线注入能力系统允许对特定用户进行精细化定向，可对多种文件格式进行“即时”修改，包括 HTML、CSS 与 JavaScript，以及 Android APK、Windows EXE、macOS DMG 镜像与 Linux RPM 包。此外，TSG 还能修改多种图像格式（如 JPG、GIF、PNG 与 SVG）以及各种归档格式（如 ZIP 与 RAR），以及办公文档、PDF、JSON 与 XML 文件。Cyber Narrator 还提供了分析功能，能够识别最合适的劫持 URL 以感染特定个体。例如，它可以针对那些未使用 TLS 的、某人的高频访问网站。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=27&#34;&gt;p.27&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在泄露数据中识别出的 Geedge Networks 最令人困惑的产品之一是 &lt;strong&gt;DLL 主动防御（DLL Active Defence）&lt;/strong&gt;，这种产品通常可以在网络犯罪黑市中见到。乍看之下，它似乎是一个用于防御 DDoS 攻击的系统；然而更仔细的检视表明，它实际上是一个针对被视为政治上不受欢迎的网站与其他互联网服务发动 DDoS 攻击的平台。这看起来是 Geedge 自己实现的中国“大炮”，正如 2015 年 Citizen Lab 报告所描述的那样。&lt;a href=&#34;https://citizenlab.ca/2015/04/chinas-great-cannon/&#34;&gt;13&lt;/a&gt;
DLL 通过利用互联网扫描来识别流量放大点（例如递归 DNS 服务器），这些放大点可作为反射式拒绝服务攻击的发射台。它使用 TSG 的在线注入能力，有效地“招募”不知情的用户计算机参与攻击，从而形成一个僵尸网络。这标志着首次有网络安全公司向客户提供本质上是“肉鸡租用”（booter）式的 DDoS 攻击服务。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;将网络流量归因到真实身份&#34;&gt;将网络流量归因到真实身份&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=25&#34;&gt;p.25&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Sanity Directory（SAN）或用户信誉流量管理系统是一种订户感知系统，旨在将 TSG 与 ISP 现有的信令与 AAA（认证、授权与计费）协议（包括 RADIUS、3GPP 与 CGNAT）无缝集成。该集成有助于将流量流归因到真实身份。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=49&#34;&gt;p.49&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Geedge 的 Sanity Directory 组件的核心特性之一是将流量归因到特定的 SIM 卡。这不仅使大规模监控成为可能，也使在巴基斯坦和 Geedge 经营的其他国家对特定个人进行高度定向的微观监控成为可能。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;识别与封锁翻墙工具&#34;&gt;识别与封锁翻墙工具&lt;/h3&gt;
&lt;p&gt;Geedge 购买了 VPN 账户，并运营一个安装了 VPN 应用的移动设备集群，以研究其网络行为：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=24&#34;&gt;p.24&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;TSG 还采用 DPI 全面识别与 VPN 与翻墙工具相关的协议，如 OpenVPN 与 WireGuard。随后，它允许客户与 Geedge Networks 合作制定规则集以封锁特定服务提供商；Geedge 运营一个移动设备农场，在受控环境中安装并运行 VPN 应用。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=63&#34;&gt;p.63&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;为了创建这些封锁规则，Geedge Networks 使用逆向工程，采用静态与动态分析。静态分析涉及反编译应用源代码以找到返回服务器列表的 API，从而对其进行封锁。动态分析则是在运行 VPN 应用的同时分析其网络流量，以识别可用于封锁的模式。
泄露证据显示，Geedge Networks 与流行的 VPN 提供商保持付费账户，用于分析并封锁其应用。TSG 硬件还可以识别流行的 VPN 协议，如 IPSec、OpenVPN 与 WireGuard。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=25&#34;&gt;&lt;img src=&#34;https://github.com/user-attachments/assets/6ec503c4-0fdf-4e9f-8997-f669615500ad&#34; alt=&#34;一个控制面板截图，显示一串带编号的 VPN 名称：15033 Cyber Ghost VPN；15031 Hotspot VPN；15029 Opera VPN；15027 Ivacy VPN；15025 Urban VPN；15023 Gecko VPN；15021 TunnelBear VPN；15019 Atlas VPN；15017 Cyberghost-UDP；15015 Windscribe VPN；15013 Ultrasurf VPN；15011 Hide Me VPN；15009 Express VPN；还有更多未显示。底部文字为“Total: 4081”。有一个对话框勾选了六个应用：15031 Hotspot VPN；15027 Ivacy VPN；15023 Gecko VPN；15015 Windscribe VPN；15011 Hide me VPN；15003 Tor Browser；对话框下方有“Confirm to delete 6 items?” 的 Yes/No 按钮。&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;有一个名为 AppSketch 的应用网络指纹数据库，包含大量具体应用（如各家 VPN 服务）的指纹。见上图截图。&lt;/p&gt;
&lt;p&gt;关于收集 AppSketch 指纹的脚注 10 提到了我们之前讨论过的 SAPP（&lt;a href=&#34;https://github.com/net4people/bbs/issues/471&#34;&gt;#471&lt;/a&gt;）与 Maat（&lt;a href=&#34;https://github.com/net4people/bbs/issues/444&#34;&gt;#444&lt;/a&gt;）等技术。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;为了提取这些（AppSketch）指纹，Geedge 与 Mesalab 的学生使用了他们称为 tcpdump_mesa 的开源工具 tcpdump 的修改版。随后，这些指纹被转化为规则集，使用四种 DPI 系统之一：SAPP（Stream Analyze Process Platform，一种 C 语言的数据包解析与注入库）；Stellar（一个比 SAPP 抽象层更高的有状态防火墙插件平台）；或 Maat（一个声明式系统）。与 SAPP 与 Stellar 不同，Maat 在开发新规则时不需要编程知识。Maat 能匹配常见的连接指纹，包括 IP 地址、域名、TLS SNI、JA3/JA4 指纹——这些都以 JSON 文件形式指定。通过使用 Redis 数据库，Maat 规则会在 TSG 集群的各节点之间进行同步，从而确保规则应用的一致性。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;一个有趣且令人意外的能力是：通过观察既往已知 VPN 用户的行为来发现新的 VPN 端点。（让人联想到 MESA 成员参与的《&lt;a href=&#34;https://github.com/net4people/bbs/issues/455&#34;&gt;&amp;ldquo;Identifying VPN Servers through Graph-Represented Behaviors&amp;rdquo;&lt;/a&gt;》。）&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=9&#34;&gt;p.9&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;此外，Geedge Networks 的产品能够将特定个人识别为已知的 VPN 用户。一旦这些已知的翻墙工具用户转向尚未被封锁的新服务提供商，Geedge Networks 就可以观察其流量，并利用其留下的“轨迹”来识别未来要封锁的新 VPN。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=26&#34;&gt;p.26&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;进一步地，系统可以将个体订户识别为已知的 VPN 用户，随后跟踪他们的互联网使用，并将任何未来未知的高带宽流量归类为可疑。这种个体化的分类可能导致在互联网用户切换到新的 VPN 提供商时，识别并封锁先前尚未识别的服务，从而不仅牵连该用户，也牵连使用该服务的所有其他用户。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;无法识别的高带宽流量也可能用于指导封锁：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=25&#34;&gt;p.25&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;即便 TSG 无法识别用户活动所对应的具体应用或服务，它也可以将任何异常的大流量标记为可疑。此后，系统可被配置为在预设时间（例如 24 小时）后封锁被标记的流量。该做法与对 GFW 的观测相对应：即便无法识别具体流量类型，GFW 也会在一定持续时间后封锁任何高带宽的加密流量&lt;a href=&#34;https://www.usenix.org/conference/usenixsecurity23/presentation/wu-mingshi&#34;&gt;9&lt;/a&gt;。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;报告（&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=63&#34;&gt;p.63&lt;/a&gt;）讨论了 Tor 的桥接、&lt;a href=&#34;https://github.com/net4people/bbs/issues/366&#34;&gt;Snowflake&lt;/a&gt; 与 &lt;a href=&#34;https://github.com/net4people/bbs/issues/263&#34;&gt;WebTunnel&lt;/a&gt;。报告暗示 Geedge 具备枚举 Tor 桥的办法，但尚不确定是内部能力还是外包所得。Cyber Narrator 的一张&lt;a href=&#34;https://gitlab.torproject.org/tpo/anti-censorship/censorship-analysis/-/issues/40043#note_3044257&#34;&gt;宣传截图&lt;/a&gt;包含“Snowflake”字样。泄露材料包含 MESA 学生关于 WebTunnel 的研究，但当时尚未发现封锁技术。&lt;/p&gt;
&lt;p&gt;Geedge 有一个专门用于枚举 Psiphon 端点的工具，称为 Psiphon3-SLOK。它与 2024 年 5 月 Geedge 进入缅甸时在当地观察到的 Psiphon 连接变化相吻合。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=64&#34;&gt;p.64&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;根据泄露数据，Geedge Networks 似乎尝试通过开发一款名为 Psiphon3-SLOK 的内部工具来绕过这一防护措施。
我们与 Psiphon 团队交流得知，2024 年 5 月下旬，来自缅甸的用户数量急剧上升，客户端选择服务器的方式也发生了变化，这与服务器枚举与定向封锁的情况一致。此时段恰逢 Geedge 系统在缅甸部署。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;对客户网络的远程访问&#34;&gt;对客户网络的远程访问&lt;/h3&gt;
&lt;p&gt;存储在 TSG Galaxy 中的客户数据竟然对 MESA 的学生与研究人员可访问，并可能被用于研究。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=21&#34;&gt;p.21&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;本研究的一个重要发现是：在政府客户现场收集到并存储于 TSG Galaxy 的全部互联网用户数据似乎对 Geedge Networks 的员工可用。数据还显示，真实客户数据的快照有时会被分享给与 Geedge Networks 关系密切的中国科学院 Mesalab。数据表明，Mesalab 的工程专业学生曾使用真实世界的客户信息开展研究，旨在更好地理解并阻断互联网审查规避。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=24&#34;&gt;p.24&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;此外，Geedge Networks 的员工似乎具备在其办公室内部创建一个 Wi-Fi 网络的能力，使任何设备都能远程连接到客户网络。该功能使他们能够在真实世界场景中验证封锁机制是否有效运行。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;向中国境外国家的部署&#34;&gt;向中国境外国家的部署&lt;/h2&gt;
&lt;p&gt;报告对 Geedge 在哈萨克斯坦、埃塞俄比亚、巴基斯坦与缅甸的部署给出了详细的总结。关于巴基斯坦与缅甸，还有更详细的信息见 &lt;a href=&#34;https://www.amnesty.org/en/documents/asa33/0206/2025/en/&#34;&gt;Shadows of Control&lt;/a&gt; 与 &lt;a href=&#34;https://www.justiceformyanmar.org/stories/silk-road-of-surveillance&#34;&gt;Silk Road of Surveillance&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;部署 Geedge 设备涉及 Geedge 员工亲赴目标 ISP 的场所，与该 ISP 人员直接合作。（顺带一提，这一事实揭穿了像&lt;a href=&#34;https://github.com/net4people/bbs/issues/369#issuecomment-2899187182&#34;&gt;缅甸的 Frontiir&lt;/a&gt; 这样的 ISP 的谎言：当被问及时他们否认与 Geedge 有关，&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=53&#34;&gt;p.53&lt;/a&gt;。）&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=35&#34;&gt;p.35&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在一个新的国家或省份启动部署时，Geedge 员工会前往客户所在地，在政府与当地 ISP 所拥有的场所内安装硬件。当地 ISP 是 Geedge 系统搭建不可或缺的一环。ISP 需要在安装期间向 Geedge 员工开放其场所，并提供网络方案，说明 Geedge 硬件如何集成进 ISP 现有系统。用于采集与存储海量数据的 Geedge 硬件被安置在各个 ISP 的数据中心内。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;在泄露材料中，各国以代号标识。除一个代号（A24）外，其余均已对应到具体国家。多数情况下，代号由国家名称的首字母与两位年份组成（显然并不总与首次部署年份一致）。&lt;/p&gt;
&lt;h3 id=&#34;哈萨克斯坦代号-k18k24&#34;&gt;哈萨克斯坦（代号 K18、K24）&lt;/h3&gt;
&lt;p&gt;Geedge 成立于 2018 年。泄露材料显示，哈萨克斯坦政府是其第一位客户，始于 2019 年。报告将 Geedge 的部署与该国推动全国范围 TLS MITM 的愿景联系起来，这一点我们曾在 &lt;a href=&#34;https://github.com/net4people/bbs/issues/6&#34;&gt;#6&lt;/a&gt;、&lt;a href=&#34;https://github.com/net4people/bbs/issues/56&#34;&gt;#56&lt;/a&gt; 与 &lt;a href=&#34;https://github.com/net4people/bbs/issues/339&#34;&gt;#339&lt;/a&gt; 中见到。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=42&#34;&gt;p.42&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Geedge 的产品 Tiangou Secure Gateway（TSG）能够实施类似政府颁发根证书的攻击，这或许是 Geedge 最初接触哈萨克斯坦政府时的卖点之一。
一张日期为 2020 年 10 月 16 日的图片列出了一个国家中心及其他 17 个城市的 IP 地址，这些地点运行着三种 Geedge 产品：Bifang（集中管理）、Galaxy（TSG-Galaxy 的早期名称）与 Nezha（Network Zodiac 的旧称）。Geedge 的一份不完整的网络规划文档开始于 2020 年 9 月记录与某哈萨克国家中心相关的事件。该日志记录至 2022 年 10 月，并包含一张表，列出与项目相关的修订情况，包括日期、版本号、修改内容以及负责修改的作者。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;埃塞俄比亚代号-e21&#34;&gt;埃塞俄比亚（代号 E21）&lt;/h3&gt;
&lt;p&gt;Geedge 于 2021 年在埃塞俄比亚开展工作。&lt;/p&gt;
&lt;p&gt;本节直接点名了&lt;a href=&#34;https://github.com/net4people/bbs/issues/369#issuecomment-2195455424&#34;&gt;郑超&lt;/a&gt;：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=45&#34;&gt;p.45&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;一条 2022 年 12 月的日志条目记载：Geedge CTO 郑超批准了位于亚的斯亚贝巴的两座 Safaricom 区域数据中心的相关工作。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我们已提到，TSG 可在镜像模式或在线模式下运行。报告声称，从镜像切换到在线可能先于一次断网，并将其与&lt;a href=&#34;https://github.com/net4people/bbs/issues/210&#34;&gt;2023 年 2 月的社交媒体封锁&lt;/a&gt;联系起来。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=46&#34;&gt;p.46&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Geedge 的修订日志显示，从镜像模式切换到在线模式与政府准备实施断网之间存在相关性。例如，切换到在线配置可能表明断网即将到来；从总体上看，镜像模式更优化于监控，而在线模式更适合断网。日志总计显示在埃塞俄比亚发生了 18 次切换为在线模式的变更，其中两次发生在 2023 年 2 月断网之前、位于 Safaricom 数据中心。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;巴基斯坦代号-p19&#34;&gt;巴基斯坦（代号 P19）&lt;/h3&gt;
&lt;p&gt;Geedge 于 2023 年进入巴基斯坦，同年 Sandvine 退出该国。在 &lt;a href=&#34;https://www.amnesty.org/en/documents/asa33/0206/2025/en/&#34;&gt;Shadows of Control&lt;/a&gt; 报告中，国际特赦组织将 Geedge 运营的防火墙称为 “WMS 2.0”（网络管理/监控系统 2.0），以与其所取代的早期版本 WMS 区分。&lt;/p&gt;
&lt;p&gt;Geedge 在巴基斯坦的存在与&lt;a href=&#34;https://github.com/net4people/bbs/issues/510&#34;&gt;此前关于中国参与国家防火墙的报道&lt;/a&gt;相一致；巴基斯坦官员的表述与 Geedge 的 TSG 已知能力相吻合：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=48&#34;&gt;p.48&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;接受半岛电视台采访的一位巴基斯坦资深 ISP 高管所使用的语言与 Geedge 的营销材料高度契合。&lt;a href=&#34;https://www.aljazeera.com/news/2024/11/26/pakistan-tests-china-like-digital-firewall-to-tighten-online-surveillance&#34;&gt;51&lt;/a&gt; 这位未具名高管称，新的 WMS 不仅部署在国家互联网关口，也部署在移动服务提供商与 ISP 的本地数据中心。[52] 由于之前的系统只能监控出入境的内容，巴基斯坦无法审查由 Netflix 与 Meta 等运行的本地缓存 CDN 所托管的内容。对比 WMS 1.0 与 WMS 2.0，这位高管表示：“与 Sandvine 系统不同，新的基于 DPI 的系统现在能够监控本地互联网流量”，它使用“内联网络”，这也更可能降低用户的上网速度。该高管还指出，这项中国（Geedge）技术提供了在“细粒度层面”管理应用与网站的能力，特性优于 Sandvine。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Geedge 的 Sanity Directory 具备将网络行为归因到特定 SIM 卡的能力。在巴基斯坦，SIM 卡又与现实身份相绑定：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=49&#34;&gt;p.49&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;……自 2015 年起，该国每张发放给移动用户的新 SIM 卡都必须注册到特定用户名下，并与通过国家数据库与登记局（NADRA）登记的生物特征（包括指纹）绑定。人们需要 NADRA 档案才能获得医疗、银行与教育等基本服务。NADRA 档案还与其他数据库相连，如选民登记与税务记录，合在一起对每个公民形成一份全面记录。&lt;a href=&#34;https://www.amnesty.org/en/documents/asa33/0206/2025/en/&#34;&gt;[57]&lt;/a&gt; Geedge 的 Sanity Directory 组件的核心功能之一，就是将流量归因到特定 SIM 卡。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;缅甸代号-m22&#34;&gt;缅甸（代号 M22）&lt;/h3&gt;
&lt;p&gt;缅甸之所以重要，是因为这是 Geedge 首次在国外的工作被公开知晓，当时由 &lt;a href=&#34;https://github.com/net4people/bbs/issues/369#issuecomment-2195258977&#34;&gt;Justice for Myanmar 报道&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;除了此前报道过的 &lt;a href=&#34;https://github.com/net4people/bbs/issues/369#issuecomment-2899187182&#34;&gt;Frontiir&lt;/a&gt; 之外，泄露材料还列出了缅甸所有 ISP 的数据中心。此前，当被询问时，Frontiir 曾虚假否认参与任何监控项目。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=53&#34;&gt;p.53&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;该规划文档列出了该国所有 ISP（无论国营或私营）所在的数据中心。“四大” ISP（MyTel、Ooredoo、MPT 与 ATOM）在列，同时也列出了较小的服务商，如 Frontiir、Global Technology Group、Golden TMH Telecom、Stream Net、IM-Net、Myanmar Broadband Telecom、Myanmar Telecommunications Network Public Company Limited、Campana 与中国联通。
文档还包含所有 ISP 的链路测试报告。这些报告提供了 2024 年不同日期进行的网站连通性测试信息。测试目标似乎是评估各 ISP 网络上的审查效果。&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Frontiir 的一位发言人否认其曾“在其网络上构建、规划或设计过任何与监控相关的内容”。然而，泄露文档表明，Geedge 硬件安装在缅甸所有 ISP 的机房中，包括 Frontiir。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;有关政府希望封锁的应用与 VPN 列表的信息：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=54&#34;&gt;p.54&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;泄露文档还包含关于封锁 VPN、Tor（尤其是由 Tor 驱动的移动应用 Orbot）与 Psiphon 的详细信息。与埃塞俄比亚或哈萨克斯坦等其他客户国家提供的 VPN 封锁清单相比，缅甸的“欲封锁 VPN 清单”更长。文档记录了制定“高优先级应用”封锁规则的过程，其中包含 55 款应用，包括消息应用 Signal 与 WhatsApp。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;代号-a24&#34;&gt;代号 A24&lt;/h3&gt;
&lt;p&gt;有一位 Geedge 客户仅以代号 A24 为人所知。在泄露发生时，这段业务关系显然还处于早期阶段。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=55&#34;&gt;p.55&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;虽然泄露文档包含与本报告中所列已知客户国家相关的具体地点和/或 ISP，但与 A24 相关的数据并不包含这些可用于识别客户的信息。关于 A24 身份的唯一线索只有首字母 A 与年份 2024。
除此之外，信息显示，截至泄露发生时，A24 与 Geedge 的关系还处在早期。为向客户澄清两种模式的差异，进行了两次 Geedge 设备的概念验证部署：一次为镜像模式，一次为在线模式。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;中国的区域性防火墙&#34;&gt;中国的区域性防火墙&lt;/h2&gt;
&lt;p&gt;报告显示 Geedge 参与了中国的区域（省级）防火墙建设，尤其是在新疆。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=9&#34;&gt;p.9&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;除与国际政府客户合作外，本研究还提供了证据，显示中国正在出现一种补充国家级“防火长城”的省级防火墙模式。Geedge Networks 正与中国多个地方政府合作构建省级防火墙，其审查规则可能因地区而异。InterSecLab 已识别出在新疆、福建与江苏的中国区域性省级防火墙项目。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;新疆代号-j24&#34;&gt;新疆（代号 J24）&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Xinjiang&#34;&gt;新疆&lt;/a&gt; 的代号为 J24。泄露文档直接指出：新疆的区域防火墙将作为中国全国部署的样板。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=56&#34;&gt;p.56&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;泄露材料包含 2024 年 6 月 22 日在中国科学院新疆分中心的一次讲话记录。该讲话的笔记（很可能由 Geedge 员工所记）写道，Geedge 的项目“旨在将区域中心打造成反恐的先锋力量，尤其是在翻墙压制方面”。笔记提到，“国家（防火墙）正从集中式向分布式演进”，而新疆区域中心旨在“成为可复制或可借鉴的省级（防火墙）建设样板”。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;与大多数其他 Geedge 部署相似，新疆的部署遵循一个由“中央指挥中心”连接“运营商”数据中心的结构。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=57&#34;&gt;p.57&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;与更早的项目相比，J24 规模更为庞大，且不再通过 ISP 作为终端用户来运转。相反，它遵循与 Geedge 在国外客户地区类似的结构：由一个“国家中心”（在新疆，Geedge 将其称为中央指挥中心）来统筹分布式的区域中心（Geedge 称之为运营商中心）。在 J24 下，这些运营商中心位于中国电信、中国移动、中国广电与中国联通的机房中。与所谓国家中心相似，中央指挥中心可以远程管理部署在运营商站点的监控设备。据一份文档显示，这些 ISP 的设施中共有 17 个运营商中心。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;新疆部署的需求体现出强烈且侵入性的监控，这与我们所了解的该地区压制状况相一致。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=57&#34;&gt;p.57&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在题为 “CBNR-J24 需求组织” 的文档中，Geedge 概述了要在 Cyber Narrator 中为新疆部署加入的一系列功能。Geedge Networks 希望在 Cyber Narrator 中支持对用户互联网行为、生活方式模式与关系的归纳与分析功能。他们还希望加入根据目标交流对象构建关系图谱的能力，并按照用户所用应用或访问网站对人群进行分组。
未来开发需求还提到，加入检查连接至特定移动基站的用户能力，以通过这些基站进行位置三角定位，并检测在某一地区出现的大量人群聚集。
此外，项目计划加入创建地理围栏的能力，当特定个体进入指定区域时触发告警。还强调了查询历史位置信息以追踪过往活动轨迹的功能。Geedge 希望能够标记频繁更换 SIM 卡、拨打国际电话或使用翻墙工具与境外社交媒体应用的个人。
J24 项目还包括面向特定群体的功能。这些功能将允许在地图上显示被监控群体的地理分布，并检测群体成员在特定地点的异常聚集情况。这样可使操作员追踪并预判大型抗议与示威的形成。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;福建江苏与其他省份&#34;&gt;福建、江苏与其他省份&lt;/h3&gt;
&lt;p&gt;有一些关于 Geedge 在&lt;a href=&#34;https://en.wikipedia.org/wiki/Fujian&#34;&gt;福建&lt;/a&gt; 与&lt;a href=&#34;https://en.wikipedia.org/wiki/Jiangsu&#34;&gt;江苏&lt;/a&gt; 开展工作的文档，但相关信息少于其他地区。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=58&#34;&gt;p.58&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;文档显示，Geedge Networks 于 2022 年在福建开展了类似的省级防火墙试点项目——福建是位于台湾海峡对岸的一个省份。然而，与其他部署相比，关于该项目的信息相对有限。泄露文档中，该试点没有代号，仅被称为“福建项目”。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://interseclab.org/wp-content/uploads/2025/09/The-Internet-Coup_September2025.pdf#page=59&#34;&gt;p.59&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;若干文档还提到江苏这个中国东部沿海省份。Geedge 与当地机关（江苏省公安厅，JPSB）合作的动机据称是打击网络诈骗。沟通记录显示，JPSB 对允许 Geedge 构建一套大数据集群持谨慎态度，更倾向于让 Geedge 将其工具部署在现有基础设施上。一个名为“江苏南京”的初始测试环境于 2023 年 2 月投入运行，“江苏反诈项目”似乎在 2024 年 3 月 15 日转入生产模式。&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;6-源码文件分析&#34;&gt;6. 源码文件分析&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;此次泄漏文件的源代码的部分还没有被仔细分析。&lt;/strong&gt; 该泄漏事件意义重大且深远，由于资料体量庞大，GFW Report 将在&lt;a href=&#34;https://gfw.report/blog/geedge_and_mesa_leak/zh/&#34;&gt;当前页面&lt;/a&gt;，以及 &lt;a href=&#34;https://github.com/net4people/bbs/issues/519&#34;&gt;Net4People&lt;/a&gt; 上持续更新我们的分析与发现。&lt;/p&gt;
&lt;p&gt;这里是该段落的中文翻译，保留了原始的 Markdown 格式：&lt;/p&gt;
&lt;h3 id=&#34;61-mesa-git-贡献者分析&#34;&gt;6.1 MESA Git 贡献者分析&lt;/h3&gt;
&lt;p&gt;2025 年 9 月 26 日，动态网络技术公司 (DIT) 发布了一个网站，用于可视化 MESA 实验室 Git 仓库的贡献者及其贡献详情：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://mesaauthor.dit-inc.us/&#34;&gt;https://mesaauthor.dit-inc.us/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;7-致谢&#34;&gt;7. 致谢&lt;/h2&gt;
&lt;p&gt;本项工作离不开多个组织和研究团体的贡献。我们特别感谢 InterSecLab、国际特赦组织 (Amnesty International)、Justice for Myanmar、环球邮报 (The Globe and Mail)、Der Standard 以及 Follow the Money 所做出的深入且严谨的工作。作为研究联盟的一部分，InterSecLab 在过去九个月中持续对 600 GB 的泄露数据进行索引、翻译、分析、解读和总结。这一努力对于揭示此次泄露的重要意义起到了不可替代的作用。这些组织的调查、报道和分析为未来的工作提供了重要的背景和洞见。&lt;/p&gt;
&lt;p&gt;需要澄清的是，GFW Report从未对这些组织形成的报告分析作出过任何贡献。&lt;/p&gt;
&lt;h2 id=&#34;8-联系或加入我们&#34;&gt;8. 联系或加入我们&lt;/h2&gt;
&lt;p&gt;本报告最初发布于 &lt;a href=&#34;https://gfw.report/blog/geedge_and_mesa_leak/zh/&#34;&gt;GFW Report&lt;/a&gt;。我们也将在 &lt;a href=&#34;https://github.com/net4people/bbs/issues/519&#34;&gt;Net4People&lt;/a&gt; 上积极更新我们的分析与发现。&lt;/p&gt;
&lt;p&gt;我们鼓励您就此话题公开或私下分享问题、评论、分析或更多证据。我们的私人联系方式可以在 &lt;a href=&#34;https://gfw.report&#34;&gt;GFW Report&lt;/a&gt; 网站页脚找到。&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>2025年8月20日中国防火长城GFW对443端口实施无条件封禁的分析</title>
        <link>https://gfw.report/blog/gfw_unconditional_rst_20250820/zh/</link>
        <pubDate>Wed, 20 Aug 2025 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/gfw_unconditional_rst_20250820/zh/</guid>
        
        <description>&lt;h2 id=&#34;1-引言&#34;&gt;1. 引言&lt;/h2&gt;
&lt;p&gt;2025 年 8 月 20 日北京时间（UTC+8）约 00:34 至 01:48 间，中国国家防火墙（GFW）出现异常行为：对所有指向 TCP 443 端口的连接无条件注入伪造的 TCP &lt;code&gt;RST+ACK&lt;/code&gt; 包，导致连接中断。该事件引发了中国与世界其他地区之间的大规模互联网连通性故障（&lt;a href=&#34;https://t.me/DNSPODT/11175&#34;&gt;来源1&lt;/a&gt; 与 &lt;a href=&#34;https://t.me/zaihuapd/35214&#34;&gt;来源2&lt;/a&gt;）。&lt;/p&gt;
&lt;p&gt;本报告记录了我们对这一短暂但广泛的封禁事件的测量与分析。主要发现如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;无条件的 &lt;code&gt;RST+ACK&lt;/code&gt; 注入仅发生在 TCP 443 端口，未见于其他常见端口（如 22、80、8443）。&lt;/li&gt;
&lt;li&gt;该无条件注入同时扰乱了出入境中国双方向的连接，但触发机制&lt;strong&gt;不对称&lt;/strong&gt;：从中国境内向境外发起的连接，客户端的 &lt;code&gt;SYN&lt;/code&gt; 包与服务器的 &lt;code&gt;SYN+ACK&lt;/code&gt; 包各自触发三个 &lt;code&gt;RST+ACK&lt;/code&gt;包；从境外向中国境内发起的连接，只有服务器返回的 &lt;code&gt;SYN+ACK&lt;/code&gt; 会触发 &lt;code&gt;RST+ACK&lt;/code&gt;，客户端发送的 &lt;code&gt;SYN&lt;/code&gt; 不会触发注入。&lt;/li&gt;
&lt;li&gt;负责注入的设备指纹与已知 GFW 设备不匹配，因此&lt;strong&gt;此次事件要么由新的 GFW 设备造成，要么是由已知设备以一种新的或误配置的状态运行造成的&lt;/strong&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;需注意的是，本次事件持续时间较短（约 74 分钟），对我们的测量和分析带来一定限制。我们鼓励社区成员分享各自的观测与分析，以共同完善对该事件的理解。&lt;/p&gt;
&lt;h2 id=&#34;2-封禁的触发&#34;&gt;2. 封禁的触发&lt;/h2&gt;
&lt;p&gt;我们首先从中国境内（AS45090，腾讯云，北京）与多个境外测量点同时发起探测以确认封禁。&lt;/p&gt;
&lt;h3 id=&#34;21-境内发起inside-out&#34;&gt;2.1 境内发起（inside-out）&lt;/h3&gt;
&lt;p&gt;我们使用如下命令尝试与 &lt;code&gt;$NON_CN_IP&lt;/code&gt; 建立 TCP 三次握手：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nc -vn $NON_CN_IP &lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;同时使用 &lt;code&gt;tcpdump&lt;/code&gt; 抓包：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tcpdump -n host $NON_CN_IP
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;观测显示：客户端发送的 &lt;code&gt;SYN&lt;/code&gt; 包会触发三连发伪造 &lt;code&gt;RST+ACK&lt;/code&gt;，其相对序列号均为 &lt;code&gt;0&lt;/code&gt;，TCP 窗口大小递增为 &lt;code&gt;1980&lt;/code&gt;、&lt;code&gt;1981&lt;/code&gt;、&lt;code&gt;1982&lt;/code&gt;。服务器返回的 &lt;code&gt;SYN+ACK&lt;/code&gt; 同样会触发三连发 &lt;code&gt;RST+ACK&lt;/code&gt;，其相对序列号为 &lt;code&gt;1&lt;/code&gt;，TCP 窗口大小递增为 &lt;code&gt;3293&lt;/code&gt;、&lt;code&gt;3294&lt;/code&gt;、&lt;code&gt;3295&lt;/code&gt;。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo tcpdump -n host $NON_CN_IP
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;01:31:07.153262 IP $CN_IP.52596 &amp;gt; $NON_CN_IP.443: Flags [S], seq 3193349615, win 64240, options [mss 1460,sackOK,TS val 318868316 ecr 0,nop,wscale 7], length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;01:31:07.159991 IP $NON_CN_IP.443 &amp;gt; $CN_IP.52596: Flags [R.], seq 0, ack 3193349616, win 1980, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;01:31:07.159991 IP $NON_CN_IP.443 &amp;gt; $CN_IP.52596: Flags [R.], seq 0, ack 1, win 1981, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;01:31:07.160021 IP $NON_CN_IP.443 &amp;gt; $CN_IP.52596: Flags [R.], seq 0, ack 1, win 1982, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;01:31:07.274422 IP $NON_CN_IP.443 &amp;gt; $CN_IP.52596: Flags [S.], seq 2837031664, ack 3193349616, win 65160, options [mss 1424,sackOK,TS val 80839422 ecr 318868316,nop,wscale 7], length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;01:31:07.274442 IP $CN_IP.52596 &amp;gt; $NON_CN_IP.443: Flags [R], seq 3193349616, win 0, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;01:31:07.278233 IP $NON_CN_IP.443 &amp;gt; $CN_IP.52596: Flags [R.], seq 1, ack 1, win 3295, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;01:31:07.278233 IP $NON_CN_IP.443 &amp;gt; $CN_IP.52596: Flags [R.], seq 1, ack 1, win 3293, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;01:31:07.278233 IP $NON_CN_IP.443 &amp;gt; $CN_IP.52596: Flags [R.], seq 1, ack 1, win 3294, length 0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;22-境外发起outside-in&#34;&gt;2.2 境外发起（outside-in）&lt;/h3&gt;
&lt;p&gt;从境外同样可以触发 &lt;code&gt;RST+ACK&lt;/code&gt; 注入。此处 &lt;code&gt;$CN_IP&lt;/code&gt; 为 &lt;code&gt;baidu.com&lt;/code&gt; 的某个 IP:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;11:44:41.194853 IP (tos 0x0, ttl 64, id 48747, offset 0, flags [DF], proto TCP (6), length 60)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    192.168.0.162.34500 &amp;gt; $CN_IP.443: Flags [S], cksum 0x418a (incorrect -&amp;gt; 0x252a), seq 3455861170, win 64240, options [mss 1460,sackOK,TS val 134891089 ecr 0,nop,wscale 7], length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;11:44:41.440817 IP (tos 0x0, ttl 46, id 48747, offset 0, flags [DF], proto TCP (6), length 60)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $CN_IP.443 &amp;gt; 192.168.0.162.34500: Flags [S.], cksum 0xd4a2 (correct), seq 1580408478, ack 3455861171, win 8192, options [mss 1452,sackOK,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,wscale 5], length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;11:44:41.440817 IP (tos 0x0, ttl 96, id 40305, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $CN_IP.443 &amp;gt; 192.168.0.162.34500: Flags [R.], cksum 0x515b (correct), seq 1, ack 1, win 2072, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;11:44:41.440817 IP (tos 0x0, ttl 97, id 39808, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $CN_IP.443 &amp;gt; 192.168.0.162.34500: Flags [R.], cksum 0x515a (correct), seq 1, ack 1, win 2073, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;11:44:41.440817 IP (tos 0x0, ttl 98, id 38891, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $CN_IP.443 &amp;gt; 192.168.0.162.34500: Flags [R.], cksum 0x5159 (correct), seq 1, ack 1, win 2074, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;11:44:41.440901 IP (tos 0x0, ttl 64, id 48748, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    192.168.0.162.34500 &amp;gt; $CN_IP.443: Flags [.], cksum 0x4176 (incorrect -&amp;gt; 0x5781), seq 1, ack 1, win 502, length 0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;境外客户端仅收到三份 &lt;code&gt;RST+ACK&lt;/code&gt;（而非六份）。相对序列号为 &lt;code&gt;1&lt;/code&gt; 表明触发源是中国侧服务器返回的 &lt;code&gt;SYN+ACK&lt;/code&gt;，而非客户端的 &lt;code&gt;SYN&lt;/code&gt;。事实上，当我们向与 &lt;code&gt;$CN_IP&lt;/code&gt; 同一 &lt;code&gt;/24&lt;/code&gt; 子网的、未开放目标端口的境内 IP 发送 &lt;code&gt;SYN&lt;/code&gt;（因此对端不返回 &lt;code&gt;SYN+ACK&lt;/code&gt;）时，无法触发封禁。&lt;/p&gt;
&lt;h3 id=&#34;23-受影响的端口&#34;&gt;2.3 受影响的端口&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;RST+ACK&lt;/code&gt; 注入被确认&lt;strong&gt;特定于&lt;/strong&gt; TCP &lt;code&gt;443&lt;/code&gt; 端口。我们从中国境内（AS45090，腾讯云，北京）的机器对某境外 IP 进行了部分端口扫描，确认包括 1–72、22、80、444、8443 在内的其他常见端口未受影响，未收到 RST。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nping -4 -c &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; --tcp-connect $NON_CN_IP -p 1-65535
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;我们亦对 1–65535 端口进行了全量扫描，但当我们在 2025-08-20 01:48 CST 运行时，封禁已结束，无法再触发：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nmap -sS -p- $NON_CN_IP -oN scan_results.txt -T4 --min-rate &lt;span style=&#34;color:#ae81ff&#34;&gt;10000&lt;/span&gt; -Pn
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;3-归因与设备指纹&#34;&gt;3. 归因与设备指纹&lt;/h2&gt;
&lt;p&gt;中国的 GFW 并非单一设备，而是由多类执行审查的网络设备构成的复杂系统。既有研究指出，负责基于 HTTP Host 与 TLS SNI 的过滤组件在注入 TCP RST 时具有独特的报文级指纹。本节旨在识别本次异常行为的具体责任组件。&lt;/p&gt;
&lt;p&gt;为指纹比对，在这起事件结束后，我们从境内测量点向曾触发无条件 RST 的目标 IP 发送探测。复用相同目的 IP 使探测报文更可能沿相同网络路径并与同一组审查中间盒交互，从而有利于一致的指纹分析。&lt;/p&gt;
&lt;p&gt;我们的探测结果表明：&lt;strong&gt;无任何捕获到的报文指纹能与事件期间的特征完全吻合——尤其是那些呈现递增关系的字段&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;鉴于本次无条件注入的三份 &lt;code&gt;RST+ACK&lt;/code&gt; 都带有 IP 标志 &lt;code&gt;DF&lt;/code&gt;（Don’t Fragment，不可分片），它们与 Niere 等人识别的 &lt;code&gt;MB-1&lt;/code&gt;（见&lt;a href=&#34;https://censorbib.nymity.ch/pdf/Niere2025a.pdf#page=8&#34;&gt;图 4&lt;/a&gt;）相似，但&lt;strong&gt;并不相同&lt;/strong&gt;；也与 Wu 等人识别的 &lt;code&gt;GFW (II)&lt;/code&gt;（见&lt;a href=&#34;https://gfw.report/publications/sp25/en/#tbl:4-injection-behaviors-packet-fingerprints&#34;&gt;表 4&lt;/a&gt;）相似，但&lt;strong&gt;并不相同&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;然而存在关键差异：已知的中间盒注入器会发送三份&lt;strong&gt;完全相同&lt;/strong&gt;的 &lt;code&gt;RST+ACK&lt;/code&gt;；而本事件中观测到的报文在若干字段上呈&lt;strong&gt;明显递增&lt;/strong&gt;。这提示&lt;strong&gt;该事件要么由此前未被编目的 GFW 设备引起，要么是已知设备处于一种新颖或误配置的工作状态&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id=&#34;31-gfw-无条件-rstack-报文的指纹&#34;&gt;3.1 GFW 无条件 &lt;code&gt;RST+ACK&lt;/code&gt; 报文的指纹&lt;/h3&gt;
&lt;p&gt;该无条件 &lt;code&gt;RST+ACK&lt;/code&gt; 以三连发形式出现，且其 IP TTL 与 TCP 窗口大小呈递增关系。受限于样本，我们未能确定其 IP ID 的稳定特征。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;IP 标志&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;IP ID&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;IP TTL&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;TCP 相对序列号&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;TCP 标志&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;TCP 窗口大小&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;不可分片（DF）&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;40305 (0x9D71)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;96&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;1&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;RST+ACK&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;2072&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;不可分片（DF）&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;39808 (0x9B80)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;97&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;1&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;RST+ACK&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;2073&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;不可分片（DF）&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;38891 (0x97E3)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;98&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;1&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;RST+ACK&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;2074&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;em&gt;表 1：无条件注入的 TCP RST 报文特征&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;32-gfw-基于-http-host-的审查设备之-rst-指纹&#34;&gt;3.2 GFW 基于 HTTP Host 的审查设备之 RST 指纹&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl --resolve youtube.com:80:$NON_CN_IP http://youtube.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo tcpdump -v port &lt;span style=&#34;color:#ae81ff&#34;&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tcpdump: listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:27:09.790274 IP (tos 0x0, ttl 64, id 12103, offset 0, flags [DF], proto TCP (6), length 60)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $CN_IP.51506 &amp;gt; $NON_CN_IP.deploy.static.akamaitechnologies.com.http: Flags [S], cksum 0x630f (correct), seq 3187873750, win 64240, options [mss 1460,sackOK,TS val 329430953 ecr 0,nop,wscale 7], length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:27:09.919296 IP (tos 0x68, ttl 251, id 0, offset 0, flags [DF], proto TCP (6), length 60)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.http &amp;gt; $CN_IP.51506: Flags [S.], cksum 0xaf88 (correct), seq 155578285, ack 3187873751, win 65160, options [mss 1424,sackOK,TS val 2237542832 ecr 329430953,nop,wscale 7], length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:27:09.919331 IP (tos 0x0, ttl 64, id 12104, offset 0, flags [DF], proto TCP (6), length 52)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $CN_IP.51506 &amp;gt; a$NON_CN_IP.deploy.static.akamaitechnologies.com.http: Flags [.], cksum 0xda42 (correct), ack 1, win 502, options [nop,nop,TS val 329431082 ecr 2237542832], length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:27:09.919414 IP (tos 0x0, ttl 64, id 12105, offset 0, flags [DF], proto TCP (6), length 127)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $CN_IP.51506 &amp;gt; a$NON_CN_IP.deploy.static.akamaitechnologies.com.http: Flags [P.], cksum 0x0926 (correct), seq 1:76, ack 1, win 502, options [nop,nop,TS val 329431082 ecr 2237542832], length 75: HTTP, length: 75
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        GET / HTTP/1.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        Host: youtube.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        User-Agent: curl/7.81.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        Accept: */*
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:27:09.923159 IP (tos 0x68, ttl 251, id 31725, offset 0, flags [none], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.http &amp;gt; $CN_IP.51506: Flags [R], cksum 0xc7c6 (correct), seq 155578286, win 42571, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:27:09.924494 IP (tos 0x68, ttl 251, id 45284, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.http &amp;gt; $CN_IP.51506: Flags [R.], cksum 0x9162 (correct), seq 1, ack 76, win 1658, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:27:09.924494 IP (tos 0x68, ttl 251, id 45284, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.http &amp;gt; $CN_IP.51506: Flags [R.], cksum 0x9162 (correct), seq 1, ack 76, win 1658, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:27:09.924510 IP (tos 0x68, ttl 251, id 45284, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.http &amp;gt; $CN_IP.51506: Flags [R.], cksum 0x9162 (correct), seq 1, ack 76, win 1658, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:27:10.048400 IP (tos 0x68, ttl 251, id 34753, offset 0, flags [DF], proto TCP (6), length 52)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.http &amp;gt; $CN_IP.51506: Flags [.], cksum 0xd96f (correct), ack 76, win 509, options [nop,nop,TS val 2237542961 ecr 329431082], length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:27:10.048426 IP (tos 0x68, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $CN_IP.51506 &amp;gt; a$NON_CN_IP.deploy.static.akamaitechnologies.com.http: Flags [R], cksum 0x90e0 (correct), seq 3187873826, win 0, length 0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;33-gfw-基于-tls-sni-的审查设备之-rst-指纹&#34;&gt;3.3 GFW 基于 TLS SNI 的审查设备之 RST 指纹&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl --resolve youtube.com:443:$NON_CN_IP https://youtube.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo tcpdump -v port &lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tcpdump: listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:25:15.234561 IP (tos 0x0, ttl 64, id 59308, offset 0, flags [DF], proto TCP (6), length 60)                                                                                    [0/966]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $CN_IP.35816 &amp;gt; a$NON_CN_IP.deploy.static.akamaitechnologies.com.https: Flags [S], cksum 0x579d (correct), seq 2971216783, win 64240, options [mss 1460,sackOK,TS val 329316397 ecr 0,nop,wscale 7], length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:25:15.365226 IP (tos 0x68, ttl 251, id 0, offset 0, flags [DF], proto TCP (6), length 60)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.https &amp;gt; $CN_IP.35816: Flags [S.], cksum 0x4c87 (correct), seq 2839767305, ack 2971216784, win 65160, options [mss 1424,sackOK,TS val 91287507 ecr 329316397,nop,wscale 7], length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:25:15.365257 IP (tos 0x0, ttl 64, id 59309, offset 0, flags [DF], proto TCP (6), length 52)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $CN_IP.35816 &amp;gt; a$NON_CN_IP.deploy.static.akamaitechnologies.com.https: Flags [.], cksum 0x773f (correct), ack 1, win 502, options [nop,nop,TS val 329316528 ecr 91287507], length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:25:15.428628 IP (tos 0x0, ttl 64, id 59310, offset 0, flags [DF], proto TCP (6), length 569)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $CN_IP.35816 &amp;gt; a$NON_CN_IP.deploy.static.akamaitechnologies.com.https: Flags [P.], cksum 0x9a41 (correct), seq 1:518, ack 1, win 502, options [nop,nop,TS val 329316591
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ecr 91287507], length 517
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:25:15.433547 IP (tos 0x68, ttl 251, id 47980, offset 0, flags [none], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.https &amp;gt; $CN_IP.35816: Flags [R], cksum 0x7ed4 (correct), seq 2839767306, win 4547, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:25:15.434682 IP (tos 0x68, ttl 251, id 11362, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.https &amp;gt; $CN_IP.35816: Flags [R.], cksum 0xa0ec (correct), seq 1, ack 518, win 4332, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:25:15.434682 IP (tos 0x68, ttl 251, id 11362, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.https &amp;gt; $CN_IP.35816: Flags [R.], cksum 0xa0ec (correct), seq 1, ack 518, win 4332, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:25:15.434709 IP (tos 0x68, ttl 251, id 11362, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.https &amp;gt; $CN_IP.35816: Flags [R.], cksum 0xa0ec (correct), seq 1, ack 518, win 4332, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:25:15.435139 IP (tos 0x68, ttl 251, id 42431, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.https &amp;gt; $CN_IP.35816: Flags [R.], cksum 0xaac5 (correct), seq 1, ack 518, win 1811, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:25:15.559257 IP (tos 0x68, ttl 251, id 29047, offset 0, flags [DF], proto TCP (6), length 52)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.https &amp;gt; $CN_IP.35816: Flags [.], cksum 0x7435 (correct), ack 518, win 506, options [nop,nop,TS val 91287701 ecr 3293165
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;91], length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:25:15.559269 IP (tos 0x68, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $CN_IP.35816 &amp;gt; a$NON_CN_IP.deploy.static.akamaitechnologies.com.https: Flags [R], cksum 0xc436 (correct), seq 2971217301, win 0, length 0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;4-结束时间&#34;&gt;4. 结束时间&lt;/h2&gt;
&lt;p&gt;无条件 RST 注入在 2025-08-20 01:48（UTC+8）之前停止，事件持续约 74 分钟（00:34–01:48，UTC+8）。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nmap -sS -p- $NON_CN_IP -oN scan_results.txt -T4 --min-rate &lt;span style=&#34;color:#ae81ff&#34;&gt;10000&lt;/span&gt; -Pn
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Starting Nmap 7.80 ( https://nmap.org ) at 2025-08-20 01:48 CST
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Nmap scan report for $NON_CN_IP.deploy.static.akamaitechnologies.com ($NON_CN_IP)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host is up.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;All 65535 scanned ports on $NON_CN_IP.deploy.static.akamaitechnologies.com ($NON_CN_IP) are filtered
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;5-感谢&#34;&gt;5. 感谢&lt;/h2&gt;
&lt;p&gt;我们感谢许多用户和读者向我们及时的汇报审查事件。特别是这次审查时间持续时间很短，如果没有他们的及时通知，我们不可能在短时间内进行测量。我们还感谢Eric Wustrow提供的部分由国外发往国内的测量数据。&lt;/p&gt;
&lt;h2 id=&#34;6-联系我们&#34;&gt;6. 联系我们&lt;/h2&gt;
&lt;p&gt;这篇报告首发于&lt;a href=&#34;https://gfw.report/blog/gfw_unconditional_rst_20250820/zh/&#34;&gt;GFW Report&lt;/a&gt;。我们还在&lt;a href=&#34;https://github.com/net4people/bbs/issues/511&#34;&gt;net4people&lt;/a&gt;同步更新了这篇报告。&lt;/p&gt;
&lt;p&gt;我们鼓励您公开地或私下地分享与报告中的发现和假设相关的问题、评论或证据。我们私下的联系方式可见&lt;a href=&#34;https://gfw.report&#34;&gt;GFW Report&lt;/a&gt;的页脚。&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>Analysis of the GFW&#39;s Unconditional Port 443 Block on August 20, 2025</title>
        <link>https://gfw.report/blog/gfw_unconditional_rst_20250820/en/</link>
        <pubDate>Wed, 20 Aug 2025 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/gfw_unconditional_rst_20250820/en/</guid>
        
        <description>&lt;h2 id=&#34;1-introduction&#34;&gt;1. Introduction&lt;/h2&gt;
&lt;p&gt;Between approximately 00:34 and 01:48 (Beijing Time, UTC+8) on August 20, 2025, the Great Firewall of China (GFW) exhibited anomalous behavior by unconditionally injecting forged TCP &lt;code&gt;RST+ACK&lt;/code&gt; packets to disrupt all connections on TCP port 443. This incident caused massive disruption of the Internet connections between China and the rest of the world (&lt;a href=&#34;https://t.me/DNSPODT/11175&#34;&gt;source1&lt;/a&gt; and &lt;a href=&#34;https://t.me/zaihuapd/35214&#34;&gt;source2&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;This report documents our measurements and analysis of this temporary, widespread blocking event. Our primary findings are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The unconditional &lt;code&gt;RST+ACK&lt;/code&gt; injections was on TCP port 443, but not on other common ports like 22, 80, 8443.&lt;/li&gt;
&lt;li&gt;The unconditional &lt;code&gt;RST+ACK&lt;/code&gt; injection disrupted connections both to and from China, but the trigger mechanism was asymmetrical. For traffic originating from inside China, the &lt;code&gt;SYN&lt;/code&gt; packet from the client and the &lt;code&gt;SYN+ACK&lt;/code&gt; packet could each trigger three injected &lt;code&gt;RST+ACK&lt;/code&gt; packets. For traffic to inside China, only the server&amp;rsquo;s &lt;code&gt;SYN+ACK&lt;/code&gt; response, not the client&amp;rsquo;s &lt;code&gt;SYN&lt;/code&gt; packet, could trigger the &lt;code&gt;RST+ACK&lt;/code&gt; packets.&lt;/li&gt;
&lt;li&gt;The responsible device does not match the fingerprints of any known GFW devices, suggesting that &lt;strong&gt;the incident was caused by either a new GFW device or a known device operating in a novel or misconfigured state&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It is important to note that our analysis was limited by the short duration of the incident (approximately 74 minutes). We encourage others in the community to share their observations to build a more complete picture of this event.&lt;/p&gt;
&lt;h2 id=&#34;2-triggering-the-blocking&#34;&gt;2. Triggering the blocking&lt;/h2&gt;
&lt;p&gt;We first confirmed the blocking by sending probes from a vantage points inside of China (AS45090, Tencent Cloud, Beijing), and from multiple vantage points outside of China.&lt;/p&gt;
&lt;h3 id=&#34;21-inside-out-triggering&#34;&gt;2.1 Inside-out triggering&lt;/h3&gt;
&lt;p&gt;In particular, we used the following command to try to establish a TCP handshake with a &lt;code&gt;$NON_CN_IP&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nc -vn $NON_CN_IP &lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nc: connect to $NON_CN_IP port &lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;tcp&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; failed: Connection refused
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;We simultaneously used &lt;code&gt;tcpdump&lt;/code&gt; to capture traffic:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tcpdump -n host $NON_CN_IP
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It appears that the &lt;code&gt;SYN&lt;/code&gt; packet triggered three forged &lt;code&gt;RST+ACK&lt;/code&gt; packets, each with a relative sequence number &lt;code&gt;0&lt;/code&gt;, as well as incremental TCP window sizes of &lt;code&gt;1980&lt;/code&gt;, &lt;code&gt;1981&lt;/code&gt;, and &lt;code&gt;1982&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;And the &lt;code&gt;SYN+ACK&lt;/code&gt; packet sent by the server also triggered three &lt;code&gt;RST+ACK&lt;/code&gt; packets, each with a relative sequence number &lt;code&gt;1&lt;/code&gt;, as well as incremental TCP window sizes of &lt;code&gt;3293&lt;/code&gt;, &lt;code&gt;3294&lt;/code&gt;, and &lt;code&gt;3295&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo tcpdump -n host $NON_CN_IP
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;01:31:07.153262 IP $CN_IP.52596 &amp;gt; $NON_CN_IP.443: Flags [S], seq 3193349615, win 64240, options [mss 1460,sackOK,TS val 318868316 ecr 0,nop,wscale 7], length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;01:31:07.159991 IP $NON_CN_IP.443 &amp;gt; $CN_IP.52596: Flags [R.], seq 0, ack 3193349616, win 1980, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;01:31:07.159991 IP $NON_CN_IP.443 &amp;gt; $CN_IP.52596: Flags [R.], seq 0, ack 1, win 1981, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;01:31:07.160021 IP $NON_CN_IP.443 &amp;gt; $CN_IP.52596: Flags [R.], seq 0, ack 1, win 1982, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;01:31:07.274422 IP $NON_CN_IP.443 &amp;gt; $CN_IP.52596: Flags [S.], seq 2837031664, ack 3193349616, win 65160, options [mss 1424,sackOK,TS val 80839422 ecr 318868316,nop,wscale 7], length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;01:31:07.274442 IP $CN_IP.52596 &amp;gt; $NON_CN_IP.443: Flags [R], seq 3193349616, win 0, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;01:31:07.278233 IP $NON_CN_IP.443 &amp;gt; $CN_IP.52596: Flags [R.], seq 1, ack 1, win 3295, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;01:31:07.278233 IP $NON_CN_IP.443 &amp;gt; $CN_IP.52596: Flags [R.], seq 1, ack 1, win 3293, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;01:31:07.278233 IP $NON_CN_IP.443 &amp;gt; $CN_IP.52596: Flags [R.], seq 1, ack 1, win 3294, length 0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;22-outside-in-triggering&#34;&gt;2.2 Outside-in triggering&lt;/h3&gt;
&lt;p&gt;Similarly, the &lt;code&gt;RST+ACK&lt;/code&gt; packets can be triggered from outside of China. The &lt;code&gt;$CN_IP&lt;/code&gt; is an IP address of &lt;code&gt;baidu.com&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;11:44:41.194853 IP (tos 0x0, ttl 64, id 48747, offset 0, flags [DF], proto TCP (6), length 60)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    192.168.0.162.34500 &amp;gt; $CN_IP.443: Flags [S], cksum 0x418a (incorrect -&amp;gt; 0x252a), seq 3455861170, win 64240, options [mss 1460,sackOK,TS val 134891089 ecr 0,nop,wscale 7], length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;11:44:41.440817 IP (tos 0x0, ttl 46, id 48747, offset 0, flags [DF], proto TCP (6), length 60)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $CN_IP.443 &amp;gt; 192.168.0.162.34500: Flags [S.], cksum 0xd4a2 (correct), seq 1580408478, ack 3455861171, win 8192, options [mss 1452,sackOK,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,wscale 5], length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;11:44:41.440817 IP (tos 0x0, ttl 96, id 40305, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $CN_IP.443 &amp;gt; 192.168.0.162.34500: Flags [R.], cksum 0x515b (correct), seq 1, ack 1, win 2072, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;11:44:41.440817 IP (tos 0x0, ttl 97, id 39808, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $CN_IP.443 &amp;gt; 192.168.0.162.34500: Flags [R.], cksum 0x515a (correct), seq 1, ack 1, win 2073, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;11:44:41.440817 IP (tos 0x0, ttl 98, id 38891, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $CN_IP.443 &amp;gt; 192.168.0.162.34500: Flags [R.], cksum 0x5159 (correct), seq 1, ack 1, win 2074, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;11:44:41.440901 IP (tos 0x0, ttl 64, id 48748, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    192.168.0.162.34500 &amp;gt; $CN_IP.443: Flags [.], cksum 0x4176 (incorrect -&amp;gt; 0x5781), seq 1, ack 1, win 502, length 0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The client outside of China received only three TCP &lt;code&gt;RST+ACK&lt;/code&gt; packets, not six. The relative sequence number &lt;code&gt;1&lt;/code&gt; suggests that the GFW was triggered by the &lt;code&gt;SYN+ACK&lt;/code&gt; packet responded by the Chinese server, and the SYN packet didn&amp;rsquo;t trigger the blocking. Indeed, we couldn&amp;rsquo;t trigger the blocking when the sending &lt;code&gt;SYN&lt;/code&gt; packets to a Chinese IP address within the same &lt;code&gt;/24&lt;/code&gt; subnet as &lt;code&gt;$CN_IP&lt;/code&gt; which didn&amp;rsquo;t have an open port (and thus did not send any &lt;code&gt;SYN+ACK&lt;/code&gt; packet back to the client.)&lt;/p&gt;
&lt;h3 id=&#34;23-affected-ports&#34;&gt;2.3 Affected ports&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;RST+ACK&lt;/code&gt; injection was confirmed to be specific to TCP port &lt;code&gt;443&lt;/code&gt;. We conducted a partial port scan from a machine inside China (AS45090, Tencent Cloud, Beijing) to an external IP address. We confirmed that other common ports, including 1-72, 22, 80, 444, and 8443, were not affected and did not receive a TCP RST.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nping -4 -c &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; --tcp-connect $NON_CN_IP -p 1-65535
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;We also ran a scan to probe all ports from 1-65535, but by the time we ran it at 01:48 CST 2025-08-20, we could no longer trigger the blocking anymore:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nmap -sS -p- $NON_CN_IP -oN scan_results.txt -T4 --min-rate &lt;span style=&#34;color:#ae81ff&#34;&gt;10000&lt;/span&gt; -Pn
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;3-attribution-and-device-fingerprinting&#34;&gt;3. Attribution and Device Fingerprinting&lt;/h2&gt;
&lt;p&gt;The Great Firewall of China (GFW) is not a single entity but a complex system composed of various network devices that perform censorship. Previous research has established that different components, such as those responsible for HTTP Host-based and TLS SNI-based filtering, exhibit unique packet-level fingerprints when injecting TCP RST packets. The goal of this analysis was to identify which specific GFW component was responsible for the anomalous behavior observed during the incident.&lt;/p&gt;
&lt;p&gt;To fingerprint the responsible device, after the incident had concluded, we sent probes from the vantage point in China to the IP address that triggered the unconditional RSTs. We used the same destination IP address so that our probe packets would be more likely to traverse the same network path and interact with the same set of censorship middleboxes, allowing for a consistent fingerprint analysis.&lt;/p&gt;
&lt;p&gt;Our analysis of the probe results revealed that &lt;strong&gt;no captured packet fingerprint exactly matched the characteristics observed during the incident—specifically&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Since the unconditionally injection contain three RST+ACK packets with the IP Flag &lt;code&gt;DF&lt;/code&gt; (&lt;code&gt;Don&#39;t Fragment&lt;/code&gt;) on, they are similar, but not identical, to &lt;code&gt;MB-1&lt;/code&gt; identified by Niere et al. (see &lt;a href=&#34;https://censorbib.nymity.ch/pdf/Niere2025a.pdf#page=8&#34;&gt;Figure 4&lt;/a&gt;); and they are also similar to, but not identical to, &lt;code&gt;GFW (II)&lt;/code&gt; identified by Wu et al. (see &lt;a href=&#34;https://gfw.report/publications/sp25/en/#tbl:4-injection-behaviors-packet-fingerprints&#34;&gt;Table 4&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;However, a key difference exists: the known middlebox injector sends three &lt;strong&gt;identical&lt;/strong&gt; TCP &lt;code&gt;RST+ACK&lt;/code&gt; packets. In contrast, the packets observed during this incident contained fields that were clearly incremental, not identical. This discrepancy suggests that &lt;strong&gt;the incident was caused by either a previously uncatalogued GFW device or a known device operating in a novel or misconfigured state.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;31-fingerprints-of-gfws-unconditional-rstack-packets&#34;&gt;3.1 Fingerprints of GFW&amp;rsquo;s Unconditional RST+ACK packets&lt;/h3&gt;
&lt;p&gt;The unconditional RST+ACK packets comes in three packets, with an incrementally increasing IP TTL and an incrementally increasing TCP window size. We limited data, we were not able to identify the IP ID of it.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;IP Flag&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;IP ID&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;IP TTL&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;TCP Relative Sequence Number&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;TCP Flags&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;TCP Window Size&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Don&amp;rsquo;t Fragment&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;40305 (0x9D71)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;96&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;1&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;RST+ACK&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;2072&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Don&amp;rsquo;t Fragment&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;39808 (0x9B80)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;97&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;1&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;RST+ACK&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;2073&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Don&amp;rsquo;t Fragment&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;38891 (0x97E3)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;98&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;1&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;RST+ACK&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;2074&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;em&gt;Table 1: Characteristics of Unconditionally Injected TCP RST Packets&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;32-fingerprints-of-the-rst-packets-by-gfws-http-host-based-censorship-devices&#34;&gt;3.2 Fingerprints of the RST packets by GFW&amp;rsquo;s HTTP Host-based censorship devices&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl --resolve youtube.com:80:$NON_CN_IP http://youtube.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo tcpdump -v port &lt;span style=&#34;color:#ae81ff&#34;&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tcpdump: listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:27:09.790274 IP (tos 0x0, ttl 64, id 12103, offset 0, flags [DF], proto TCP (6), length 60)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $CN_IP.51506 &amp;gt; $NON_CN_IP.deploy.static.akamaitechnologies.com.http: Flags [S], cksum 0x630f (correct), seq 3187873750, win 64240, options [mss 1460,sackOK,TS val 329430953 ecr 0,nop,wscale 7], length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:27:09.919296 IP (tos 0x68, ttl 251, id 0, offset 0, flags [DF], proto TCP (6), length 60)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.http &amp;gt; $CN_IP.51506: Flags [S.], cksum 0xaf88 (correct), seq 155578285, ack 3187873751, win 65160, options [mss 1424,sackOK,TS val 2237542832 ecr 329430953,nop,wscale 7], length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:27:09.919331 IP (tos 0x0, ttl 64, id 12104, offset 0, flags [DF], proto TCP (6), length 52)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $CN_IP.51506 &amp;gt; a$NON_CN_IP.deploy.static.akamaitechnologies.com.http: Flags [.], cksum 0xda42 (correct), ack 1, win 502, options [nop,nop,TS val 329431082 ecr 2237542832], length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:27:09.919414 IP (tos 0x0, ttl 64, id 12105, offset 0, flags [DF], proto TCP (6), length 127)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $CN_IP.51506 &amp;gt; a$NON_CN_IP.deploy.static.akamaitechnologies.com.http: Flags [P.], cksum 0x0926 (correct), seq 1:76, ack 1, win 502, options [nop,nop,TS val 329431082 ecr 2237542832], length 75: HTTP, length: 75
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        GET / HTTP/1.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        Host: youtube.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        User-Agent: curl/7.81.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        Accept: */*
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:27:09.923159 IP (tos 0x68, ttl 251, id 31725, offset 0, flags [none], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.http &amp;gt; $CN_IP.51506: Flags [R], cksum 0xc7c6 (correct), seq 155578286, win 42571, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:27:09.924494 IP (tos 0x68, ttl 251, id 45284, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.http &amp;gt; $CN_IP.51506: Flags [R.], cksum 0x9162 (correct), seq 1, ack 76, win 1658, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:27:09.924494 IP (tos 0x68, ttl 251, id 45284, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.http &amp;gt; $CN_IP.51506: Flags [R.], cksum 0x9162 (correct), seq 1, ack 76, win 1658, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:27:09.924510 IP (tos 0x68, ttl 251, id 45284, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.http &amp;gt; $CN_IP.51506: Flags [R.], cksum 0x9162 (correct), seq 1, ack 76, win 1658, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:27:10.048400 IP (tos 0x68, ttl 251, id 34753, offset 0, flags [DF], proto TCP (6), length 52)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.http &amp;gt; $CN_IP.51506: Flags [.], cksum 0xd96f (correct), ack 76, win 509, options [nop,nop,TS val 2237542961 ecr 329431082], length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:27:10.048426 IP (tos 0x68, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $CN_IP.51506 &amp;gt; a$NON_CN_IP.deploy.static.akamaitechnologies.com.http: Flags [R], cksum 0x90e0 (correct), seq 3187873826, win 0, length 0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;33-fingerprints-of-the-rst-packets-by-gfws-tls-sni-based-censorship-devices&#34;&gt;3.3 Fingerprints of the RST packets by GFW&amp;rsquo;s TLS SNI-based censorship devices&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl --resolve youtube.com:443:$NON_CN_IP https://youtube.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo tcpdump -v port &lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tcpdump: listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:25:15.234561 IP (tos 0x0, ttl 64, id 59308, offset 0, flags [DF], proto TCP (6), length 60)                                                                                    [0/966]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $CN_IP.35816 &amp;gt; a$NON_CN_IP.deploy.static.akamaitechnologies.com.https: Flags [S], cksum 0x579d (correct), seq 2971216783, win 64240, options [mss 1460,sackOK,TS val 329316397 ecr 0,nop,wscale 7], length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:25:15.365226 IP (tos 0x68, ttl 251, id 0, offset 0, flags [DF], proto TCP (6), length 60)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.https &amp;gt; $CN_IP.35816: Flags [S.], cksum 0x4c87 (correct), seq 2839767305, ack 2971216784, win 65160, options [mss 1424,sackOK,TS val 91287507 ecr 329316397,nop,wscale 7], length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:25:15.365257 IP (tos 0x0, ttl 64, id 59309, offset 0, flags [DF], proto TCP (6), length 52)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $CN_IP.35816 &amp;gt; a$NON_CN_IP.deploy.static.akamaitechnologies.com.https: Flags [.], cksum 0x773f (correct), ack 1, win 502, options [nop,nop,TS val 329316528 ecr 91287507], length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:25:15.428628 IP (tos 0x0, ttl 64, id 59310, offset 0, flags [DF], proto TCP (6), length 569)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $CN_IP.35816 &amp;gt; a$NON_CN_IP.deploy.static.akamaitechnologies.com.https: Flags [P.], cksum 0x9a41 (correct), seq 1:518, ack 1, win 502, options [nop,nop,TS val 329316591
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ecr 91287507], length 517
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:25:15.433547 IP (tos 0x68, ttl 251, id 47980, offset 0, flags [none], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.https &amp;gt; $CN_IP.35816: Flags [R], cksum 0x7ed4 (correct), seq 2839767306, win 4547, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:25:15.434682 IP (tos 0x68, ttl 251, id 11362, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.https &amp;gt; $CN_IP.35816: Flags [R.], cksum 0xa0ec (correct), seq 1, ack 518, win 4332, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:25:15.434682 IP (tos 0x68, ttl 251, id 11362, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.https &amp;gt; $CN_IP.35816: Flags [R.], cksum 0xa0ec (correct), seq 1, ack 518, win 4332, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:25:15.434709 IP (tos 0x68, ttl 251, id 11362, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.https &amp;gt; $CN_IP.35816: Flags [R.], cksum 0xa0ec (correct), seq 1, ack 518, win 4332, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:25:15.435139 IP (tos 0x68, ttl 251, id 42431, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.https &amp;gt; $CN_IP.35816: Flags [R.], cksum 0xaac5 (correct), seq 1, ack 518, win 1811, length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:25:15.559257 IP (tos 0x68, ttl 251, id 29047, offset 0, flags [DF], proto TCP (6), length 52)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a$NON_CN_IP.deploy.static.akamaitechnologies.com.https &amp;gt; $CN_IP.35816: Flags [.], cksum 0x7435 (correct), ack 518, win 506, options [nop,nop,TS val 91287701 ecr 3293165
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;91], length 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;04:25:15.559269 IP (tos 0x68, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 40)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $CN_IP.35816 &amp;gt; a$NON_CN_IP.deploy.static.akamaitechnologies.com.https: Flags [R], cksum 0xc436 (correct), seq 2971217301, win 0, length 0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;4-ending-time&#34;&gt;4. Ending time&lt;/h2&gt;
&lt;p&gt;The unconditional RST appeared to stop prior to 2025-08-20 01:48 UTC+8, making the entire incident last for around 74 minutes (between 00:34 and 01:48 UTC+8).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nmap -sS -p- $NON_CN_IP -oN scan_results.txt -T4 --min-rate &lt;span style=&#34;color:#ae81ff&#34;&gt;10000&lt;/span&gt; -Pn
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Starting Nmap 7.80 ( https://nmap.org ) at 2025-08-20 01:48 CST
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Nmap scan report for $NON_CN_IP.deploy.static.akamaitechnologies.com ($NON_CN_IP)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host is up.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;All 65535 scanned ports on $NON_CN_IP.deploy.static.akamaitechnologies.com ($NON_CN_IP) are filtered
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;5-acknowledgments&#34;&gt;5. Acknowledgments&lt;/h2&gt;
&lt;p&gt;We are grateful to the many users and readers who promptly reported censorship incidents to us. In particular, this censorship event was of a very short duration, and without their timely notifications, it would have been impossible for us to conduct measurements in such a short period. We also thank Eric Wustrow for providing some of the measurement data sent from abroad to within the country.&lt;/p&gt;
&lt;h2 id=&#34;6-contact-us&#34;&gt;6. Contact Us&lt;/h2&gt;
&lt;p&gt;This report was first published on &lt;a href=&#34;https://gfw.report/blog/gfw_unconditional_rst_20250820/zh/&#34;&gt;GFW Report&lt;/a&gt;. We have also synchronously updated this report on &lt;a href=&#34;https://github.com/net4people/bbs/issues/511&#34;&gt;net4people&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We encourage you to share questions, comments, or evidence related to the findings and hypotheses in this report, either publicly or privately. Our private contact information can be found in the footer of the &lt;a href=&#34;https://gfw.report&#34;&gt;GFW Report&lt;/a&gt; website.&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>Exposing and Circumventing SNI-based QUIC Censorship of the Great Firewall of China</title>
        <link>https://gfw.report/publications/usenixsecurity25/en/</link>
        <pubDate>Thu, 31 Jul 2025 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/publications/usenixsecurity25/en/</guid>
        
        <description>&lt;!-- use CSS file --&gt;
&lt;link rel=&#34;stylesheet&#34; href=&#34;./css/paper.css&#34;&gt;
&lt;!-- use paper-specific CSS --&gt;
&lt;link rel=&#34;stylesheet&#34; href=&#34;../usenixsecurity25.css&#34;&gt;

&lt;!-- Used to render latex syntax --&gt;
&lt;script type=&#34;text/javascript&#34; async
  src=&#34;https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML&#34;&gt;
&lt;/script&gt;

&lt;!-- Used to render Table of Content --&gt;
&lt;link href=&#34;./css/tocbot.css&#34; rel=&#39;stylesheet&#39; type=&#39;text/css&#39; /&gt;
&lt;script src=&#34;./js/tocbot.min.js&#34;&gt;&lt;/script&gt;
&lt;script&gt;
    document.addEventListener(&#39;DOMContentLoaded&#39;, function() {
    tocbot.init({
        tocSelector: &#39;.js-toc&#39;,
        contentSelector: &#39;.js-toc-content&#39;,
        headingSelector: &#39;h2, h3&#39;,
        collapseDepth: 3,
        activeLinkClass: &#39;&#39;
    });
    });
&lt;/script&gt;

&lt;h1 class=&#34;titleHead&#34;&gt;Exposing and Circumventing SNI-based
QUIC Censorship
of the Great Firewall of China&lt;/h1&gt;

&lt;div class=&#34;authors&#34;&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Ali Zohaib&lt;span class=&#34;footnote-mark&#34;&gt;&lt;a href=&#34;#fn:equal-contribution&#34;&gt;&lt;sup class=&#34;textsuperscript cmsy-8&#34;&gt;∗&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;
        &lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;University of Massachusetts Amherst&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Qiang Zao&lt;span class=&#34;footnote-mark&#34;&gt;&lt;a href=&#34;#fn:equal-contribution&#34;&gt;&lt;sup class=&#34;textsuperscript cmsy-8&#34;&gt;∗&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;
        &lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;GFW Report&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Jackson Sippe&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;University of Colorado Boulder&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Abdulrahman Alaraj&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;University of Colorado Boulder&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Amir Houmansadr&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;University of Massachusetts Amherst&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Zakir Durumeric&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;Stanford University&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Eric Wustrow&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;University of Colorado Boulder&lt;/p&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;!--l. 47--&gt;
&lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
     &lt;ol&gt;
         &lt;li class=&#34;footnote-text&#34;&gt;
             &lt;a id=&#34;fn:equal-contribution&#34;&gt;&lt;/a&gt;
             &lt;span class=&#34;footnote-mark&#34;&gt;&lt;sup class=&#34;textsuperscript&#34;&gt;*&lt;/sup&gt;&lt;/span&gt;
             &lt;span class=&#34;footnotes-text&#34;&gt;Ali Zohaib and Qiang Zao contributed equally to this work.&lt;/span&gt;
         &lt;/li&gt;
     &lt;/ol&gt;
&lt;/div&gt;

&lt;div class=&#34;js-toc&#34;&gt;&lt;/div&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;abstract&#34;&gt;&lt;a id=&#34;sec:abstract&#34; href=&#34;#sec:abstract&#34;&gt;Abstract&lt;/a&gt;&lt;/h2&gt;
&lt;!--l. 1--&gt;&lt;p class=&#34;noindent&#34; &gt;Despite QUIC handshake packets being encrypted, the Great
Firewall of China (GFW) has begun blocking QUIC connections
to specific domains since April 7, 2024. In this work, we
measure and characterize the GFW’s censorship of QUIC to
understand &lt;span
class=&#34;ptmri8t-&#34;&gt;how &lt;/span&gt;and &lt;span
class=&#34;ptmri8t-&#34;&gt;what &lt;/span&gt;it blocks. Our measurements reveal
that the GFW decrypts QUIC Initial packets at scale, applies
heuristic filtering rules, and uses a blocklist distinct from its other
censorship mechanisms. We expose a critical flaw in this new
system: the computational overhead of decryption reduces its
effectiveness under moderate traffic loads. We also demonstrate
that this censorship mechanism can be weaponized to block UDP
traffic between arbitrary hosts in China and the rest of the world.
We collaborate with various open-source communities to
integrate circumvention strategies
into a leading web browser,
the quic-go library,
and all major QUIC-based circumvention tools.
&lt;/p&gt;&lt;/section&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;1&#34;&gt;&lt;a id=&#34;sec:1-introduction&#34; href=&#34;#sec:1-introduction&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;1.&lt;/span&gt; Introduction&lt;/a&gt;&lt;/h2&gt;
&lt;!--l. 4--&gt;&lt;p class=&#34;noindent&#34; &gt;Since its standardization in 2021, QUIC has rapidly become a
major Internet protocol. It now serves as the cryptographic basis
of HTTP/3 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:rfc9114&#34;&gt;7&lt;/a&gt;]&lt;/span&gt; and in 2024, Cloudflare estimated that over 30%
of web requests use QUIC &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:cloudflare-radar-worldwide&#34;&gt;14&lt;/a&gt;]&lt;/span&gt;. QUIC’s popularity also poses a
problem for censors, who must adapt their previous techniques to
the new protocol. While censors have previously altogether
blocked the protocol &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Elmenhorst2021a&#34;&gt;25&lt;/a&gt;, &lt;a href=&#34;#cite:Xue2022b&#34;&gt;70&lt;/a&gt; §5.2]&lt;/span&gt;, for the first time, user
reports began to suggest that the Great Firewall of China
(GFW) had started blocking QUIC connections for specific
domains &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:God2024QUIC&#34;&gt;33&lt;/a&gt;]&lt;/span&gt; in April 2024, similar to their SNI-based          censorship of TLS traffic &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Chai2019a&#34;&gt;11&lt;/a&gt;, &lt;a href=&#34;#cite:Hoang2024a&#34;&gt;37&lt;/a&gt;]&lt;/span&gt;.
     &lt;/p&gt;
&lt;!--l. 16--&gt;&lt;p class=&#34;indent&#34; &gt;    Censoring QUIC connections to specific websites is challenging
     at the state-level because QUIC encrypts all packets, unlike TLS
     where the destination server name is sent in plaintext. In QUIC,
     even the first handshake message, the QUIC client Initial, is
     encrypted, albeit under a key that is derivable by a passive
     network observer. This means that a censor that wants to block
     QUIC connections based on the Server Name Indication (SNI)
     field needs to decrypt the first packet of every QUIC connection
     to reveal the destination site. It is thus important for the
     anti-censorship community to understand the GFW’s new
     censorship design and implementation details to update
     circumvention strategies.
     &lt;/p&gt;
&lt;!--l. 41--&gt;&lt;p class=&#34;indent&#34; &gt;    In this work,&lt;span class=&#34;footnote-mark&#34;&gt;&lt;a href=&#34;#fn:project-homepage&#34;&gt;&lt;sup class=&#34;textsuperscript&#34;&gt;1&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a
 id=&#34;x1-1001f1&#34;&gt;&lt;/a&gt;
   we measure China’s new capability to inspect and block
     QUIC connections—the first nation-wide inspection and
     targeted censorship of QUIC. We confirm that China is
     decrypting and inspecting the first packet in QUIC connections
     at scale. Through several experiments, we infer the rules
     and high-level parsing logic of how the GFW processes
     QUIC connections. For instance, we discover that the GFW
     ignores QUIC packets with a source port lower than the
     destination port, likely as an optimization to inspect client-only
     traffic.
     &lt;/p&gt;
&lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
     &lt;ol&gt;
          &lt;li class=&#39;footnote-text&#39;&gt;
               &lt;a id=&#39;fn:project-homepage&#39;&gt;&lt;/a&gt;
               &lt;span class=&#39;footnote-mark&#39;&gt;
                    &lt;sup class=&#39;textsuperscript&#39;&gt;1&lt;/sup&gt;
               &lt;/span&gt;
               &lt;span class=&#39;footnotes-text&#39;&gt;Project homepage: &lt;a href=&#34;https://gfw.report/publications/usenixsecurity25/en&#34;&gt;https://gfw.report/publications/usenixsecurity25/en&lt;/a&gt;&lt;/span&gt;
          &lt;/li&gt;
     &lt;/ol&gt;
&lt;/div&gt;
&lt;!--l. 50--&gt;&lt;p class=&#34;indent&#34; &gt;    We use traceroute-like measurements to show that the devices
     responsible for QUIC censorship are co-located at the same
     hop as existing GFW devices, indicating that they may use
     shared infrastructure or have similar management. However,
     despite this proximity, we measure the set of domains that
     trigger QUIC censorship, and find that the GFW’s QUIC
     blocklist substantially differs from blocklists used for TLS,
     HTTP, or DNS censorship in China. In particular, the QUIC
     blocklist is roughly 60% of the size of the DNS blocklist in
     terms of number of domains. Surprisingly, a large number
     of these domains do not even support QUIC, making it
     unclear why they ended up on a QUIC-specific censorship


list.
&lt;/p&gt;
&lt;!--l. 61--&gt;&lt;p class=&#34;indent&#34; &gt;  We further demonstrate that China’s targeted QUIC censorship
can be overwhelmed such that the GFW is not fully able to
censor QUIC connections. This reveals an exploitable flaw in
the GFW’s QUIC censorship where an attacker can send a
moderate number of QUIC Initial packets—even to uncensored
domains—and overwhelm the GFW such that other QUIC
connections to censored domains are blocked at dramatically
lower rates.
&lt;/p&gt;
&lt;!--l. 68--&gt;&lt;p class=&#34;indent&#34; &gt;  Finally, we show that the GFW’s QUIC censorship system
makes the whole country vulnerable to attack. We present an
availability attack that weaponizes the QUIC censorship
mechanism to block any host in China from communicating over
UDP with any foreign host. For example, this attack could be
used to block access to all DNS servers outside of the country
causing widespread Internet outages. We demonstrate this attack
against ourselves using our own servers around the world, and
show that a single spoofing machine can prevent the majority of
these hosts from communicating with our vantage point in China.
Because of the potential severity, we disclose this vulnerability to
China’s CERT. We conclude with a discussion of implications for
the censorship circumvention community and of the complex
ethical considerations of exploiting vulnerabilities against a
harmful actor, the GFW.

&lt;/p&gt;
&lt;h2 class=&#34;sectionHead&#34; id=&#34;2&#34;&gt;&lt;a id=&#34;sec:2-background-and-related-work&#34; href=&#34;#sec:2-background-and-related-work&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;2.&lt;/span&gt; Background and Related Work&lt;/a&gt;&lt;/h2&gt;
&lt;!--l. 4--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;QUIC Protocol.   &lt;/span&gt;QUIC is a UDP-based network protocol that
was initially developed by Google &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:quic2017&#34;&gt;27&lt;/a&gt;]&lt;/span&gt; and later standardized
by the IETF as RFC 9000 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:rfc9000&#34;&gt;43&lt;/a&gt;]&lt;/span&gt; in 2021. QUIC is akin to
TLS but operates over UDP, reducing latency and enabling
browser-controlled congestion control. QUIC was adopted to
serve as the cryptographic basis of HTTP/3 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:rfc9114&#34;&gt;7&lt;/a&gt;]&lt;/span&gt; and in 2024,
Cloudflare estimated that over 30% of web requests use
QUIC &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:cloudflare-radar-worldwide&#34;&gt;14&lt;/a&gt;]&lt;/span&gt;. QUIC also poses a shift for the anti-censorship
community as it encrypts all packets to prevent tracking and
tampering by middleboxes &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:quic2017&#34;&gt;27&lt;/a&gt; §3]&lt;/span&gt;.
&lt;/p&gt;
&lt;!--l. 13--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;QUIC Client Initial.   &lt;/span&gt;The first packet in a QUIC handshake is
the &lt;span
class=&#34;ptmri8t-&#34;&gt;Client Initial &lt;/span&gt;packet. Since QUIC packets are encrypted from
the outset but a key exchange has not occurred, initial packets are
encrypted with a key derived from the Destination Connection ID
(DCID) and a version-specific salt &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:rfc9001&#34;&gt;58&lt;/a&gt;]&lt;/span&gt;. Both of these fields are
sent in plaintext in the QUIC client initial packet, allowing the
server (and a passive network observer) to decrypt the payload.
As such, this protection does not provide confidentiality or
integrity against observing parties, but protects against off-path
spoofing attacks.
&lt;/p&gt;
&lt;!--l. 27--&gt;&lt;p class=&#34;indent&#34; &gt;  Once the payload of the initial packet is decrypted, it reveals a
set of one or more &lt;span
class=&#34;cmtt-10&#34;&gt;CRYPTO &lt;/span&gt;frames containing a TLS 1.3 Client
Hello message that lists the cipher suites and TLS extensions
supported by the client. Typically, one of these TLS extensions      will be the Server Name Indication (SNI), which specifies the
     hostname the client is attempting to connect to. Because initial
     keys can be computed by any network observer, the TLS Client
     Hello and its plaintext contents, including the SNI, can be
     decrypted.
     &lt;/p&gt;
&lt;!--l. 40--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;QUIC Blocking.   &lt;/span&gt;In 2021, Elmenhorst et al. found that
     while many QUIC websites were not accessible in Iran and
     China, it was not because of any SNI-based censorship.
     Instead, it’s because Iran blocked UDP traffic to those QUIC
     endhosts &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Elmenhorst2021a&#34;&gt;25&lt;/a&gt; §5.2]&lt;/span&gt;, and China blocked both TCP and UDP
     traffic to those specific QUIC endhosts &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Elmenhorst2021a&#34;&gt;25&lt;/a&gt; §5.1]&lt;/span&gt;. Later, in
     March 2022, ValdikSS found that the Russian TSPU blocked
     all QUIC connections that used QUIC version 1 (0x00,
     0x00, 0x00, 0x01), were destined to port 443, and had a
     payload size of at least 1001 bytes &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Xue2022b&#34;&gt;70&lt;/a&gt; §5.2, &lt;a href=&#34;#cite:ValdikSS_2022_NTC_HTTP3_QUIC_Post10&#34;&gt;63&lt;/a&gt;]&lt;/span&gt;. In
     December 2024, Uzbekistan blocked QUIC connections
     with Encrypted Client Hello (ECH) extensions &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:uzbekistan-quic-ech-block&#34;&gt;16&lt;/a&gt;]&lt;/span&gt;. To
     our best knowledge, China initiated the blocking of QUIC
     connections based on the SNI field in April 2024, &lt;span
class=&#34;ptmri8t-&#34;&gt;making it&lt;/span&gt;
     &lt;span
class=&#34;ptmri8t-&#34;&gt;the first and only country being able to do so as of June&lt;/span&gt;
     &lt;span
class=&#34;ptmri8t-&#34;&gt;2025&lt;/span&gt;.
     &lt;/p&gt;
&lt;!--l. 82--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;Other Censorship Mechanisms.   &lt;/span&gt;The GFW employs multiple
     methods to implement its blocking policies, including DNS
     poisoning &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Anonymous2014a&#34;&gt;4&lt;/a&gt;, &lt;a href=&#34;#cite:Anonymous2020a&#34;&gt;6&lt;/a&gt;, &lt;a href=&#34;#cite:Duan2012a&#34;&gt;20&lt;/a&gt;, &lt;a href=&#34;#cite:Farnan2016a&#34;&gt;29&lt;/a&gt;, &lt;a href=&#34;#cite:Hoang2021a&#34;&gt;38&lt;/a&gt;]&lt;/span&gt;, IP blocking &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Elmenhorst2021a&#34;&gt;25&lt;/a&gt;, &lt;a href=&#34;#cite:Wu2023a&#34;&gt;66&lt;/a&gt;]&lt;/span&gt;,
     keyword-based filtering &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Chai2019a&#34;&gt;11&lt;/a&gt;, &lt;a href=&#34;#cite:Clayton2006a&#34;&gt;13&lt;/a&gt;, &lt;a href=&#34;#cite:Hoang2024a&#34;&gt;37&lt;/a&gt;]&lt;/span&gt;, and active
     probing &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Alice2020a&#34;&gt;2&lt;/a&gt;, &lt;a href=&#34;#cite:Ensafi2015b&#34;&gt;26&lt;/a&gt;, &lt;a href=&#34;#cite:Wu2023a&#34;&gt;66&lt;/a&gt; §5, &lt;a href=&#34;#cite:Winter2012a&#34;&gt;65&lt;/a&gt; §4.5, &lt;a href=&#34;#cite:Dunna2018a&#34;&gt;22&lt;/a&gt; §4.3]&lt;/span&gt;. For
     UDP-based DNS requests, the GFW injects fake responses to
     queries for forbidden domains. For HTTP(S) traffic, it performs
     stateful inspection of TCP connections and injects forged
     RST packets upon detecting censored domains in HTTP
     Host headers or TLS SNI extension fields &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Wu2025a&#34;&gt;67&lt;/a&gt;]&lt;/span&gt;. This is
     followed by a brief period of “residual blocking,” primarily
     enforced via additional forged SYN+ACK and RST injections,
     though recent work has shown that packet dropping is also
     used &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Hoang2024a&#34;&gt;37&lt;/a&gt; §5.4, &lt;a href=&#34;#cite:Bock2020ESNI&#34;&gt;10&lt;/a&gt;]&lt;/span&gt;.

     &lt;/p&gt;
     &lt;h2 class=&#34;sectionHead&#34; id=&#34;3&#34;&gt;
          &lt;a id=&#34;sec:3-quic-censorship-mechanism&#34; href=&#34;#sec:3-quic-censorship-mechanism&#34;&gt;
            &lt;span class=&#34;titlemark&#34;&gt;3.&lt;/span&gt; QUIC Censorship Mechanism
          &lt;/a&gt;
     &lt;/h2&gt;
     &lt;!--l. 4--&gt;&lt;p class=&#34;noindent&#34; &gt;In this section, we investigate how the GFW detects and blocks
     QUIC connections to forbidden domains. We show that the GFW
     blocks QUIC connections based on client Initial SNI, regardless
     of the server IP address. The GFW inspects the first packet in a
     UDP flow, and if it is a QUIC client Initial containing a domain
     name on China’s QUIC-specific blocklist, the GFW drops
     subsequent packets from the client to server for 3 minutes
     (&lt;a href=&#34;#fig:1-quic-blocking-overview&#34;&gt;Figure 1&lt;/a&gt;).
     &lt;/p&gt;
     &lt;div class=&#39;figure&#39;&gt;
          &lt;p class=&#39;noindent&#39; id=&#39;fig:1-quic-blocking-overview&#39;&gt;
              &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/quic-blocking-overview-.png&#39; /&gt;
              &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:1-quic-blocking-overview&#34;&gt;Figure 1&lt;/a&gt;:  Overview  of  QUIC  SNI  Censorship,  including
               the   decision   flow,   initial   packet   decryption,   SNI-based
               filtering,  and  residual  blocking  rules  triggered  for  flagged
               connections.
              &lt;/p&gt;
          &lt;/p&gt;
     &lt;/div&gt;
&lt;!--l. 23--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;Experiment Setup and Vantage Points.   &lt;/span&gt;We used a set of
     vantage points inside and outside China for our experiments,
     which allowed us to test connections bidirectionally over the
     GFW. In total, we used seven vantage points in China: four


in Beijing, two in Guangzhou, and one in Shanghai. We
chose these regions in China since they are home to major
Internet Exchange Points (IXPs) where the GFW is known to
be deployed &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Sakamoto2024a&#34;&gt;52&lt;/a&gt; §4.5, &lt;a href=&#34;#cite:Hanson2015a&#34;&gt;36&lt;/a&gt;, &lt;a href=&#34;#cite:Fan2025a&#34;&gt;28&lt;/a&gt; VI.C]&lt;/span&gt;. These vantage
points were provisioned through Tencent Cloud (AS45090)
and Alibaba Cloud (AS37963). Outside China, we utilized
six vantage points located in Singapore (AS16509), San
Jose (AS14618), San Francisco (AS14061), N. Virginia
(AS14618), Cape Town (AS16509), and a U.S. university
(AS32).
&lt;/p&gt;
&lt;!--l. 37--&gt;&lt;p class=&#34;indent&#34; &gt;  We developed a custom QUIC client using Quiche &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:cloudflare-quiche&#34;&gt;46&lt;/a&gt;]&lt;/span&gt; that
allows us to craft specific client Initial packets. As we observed
blocking to be triggered by clients’ packets regardless of server
response, the servers in our experiments ran &lt;span
class=&#34;cmtt-10&#34;&gt;tcpdump &lt;/span&gt;rather
than a QUIC server. To ensure accurate measurements and
avoid interference, we configured &lt;span
class=&#34;cmtt-10&#34;&gt;iptables &lt;/span&gt;rules on the
servers to drop any outgoing ICMP packets directed to the
clients.
&lt;/p&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3.1&#34;&gt;
     &lt;a id=&#34;sec:3.1-quic-connection-blocking&#34; href=&#34;#sec:3.1-quic-connection-blocking&#34;&gt;
          &lt;span class=&#34;titlemark&#34;&gt;3.1.&lt;/span&gt; QUIC Connection Blocking
     &lt;/a&gt;
&lt;/h3&gt;
&lt;!--l. 60--&gt;&lt;p class=&#34;noindent&#34; &gt;Upon observing a QUIC client Initial message with a forbidden
SNI, the GFW drops all subsequent UDP packets sharing the
same source IP, destination IP, and destination port. We
discovered this behavior by sending QUIC client Initial messages
from the three locations of our vantage points in China to a
server in the US. These messages used QUIC version 1, and
&lt;span
class=&#34;cmtt-10&#34;&gt;google.com &lt;/span&gt;in the SNI. We found that while the QUIC client
Initial messages reached our server, any subsequent UDP packets
in the connection from client to server were dropped by the
censor for 180 seconds.
&lt;/p&gt;
&lt;!--l. 73--&gt;&lt;p class=&#34;indent&#34; &gt;  During this time, if the client sent 10 byte random data
packets from even a different source port to the same server
endpoint (destination IP and port), these were dropped by the
GFW as well. However, random data packets sent to a new
destination port on the server were not blocked, indicating the
GFW blocks based on the 3-tuple (source IP, destination IP,
destination port) to prevent trivial circumvention attempts via
source port changes. As confirmed by having the server
send a Server Initial message along with additional UDP
packets carrying random 10-byte payloads after receiving the
QUIC client Initial message, we also observed that this
blocking was only client-to-server; server-sent packets were not
dropped.
&lt;/p&gt;
&lt;!--l. 95--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;A Single Packet Triggers Residual Blocking.   &lt;/span&gt;Unlike previously
documented TLS-SNI censorship by the GFW &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Hoang2021a&#34;&gt;38&lt;/a&gt; §3.1]&lt;/span&gt;,
which requires the detection of at least two packets (SYN
followed by a PSH/ACK), the QUIC censorship mechanism can
be activated by a single QUIC client Initial packet containing a
forbidden SNI. This is the first known instance of the GFW
implementing &lt;span
class=&#34;ptmri8t-&#34;&gt;residual blocking via packet dropping for&lt;/span&gt;
&lt;span
class=&#34;ptmri8t-&#34;&gt;a UDP-based protocol &lt;/span&gt;. While the GFW has historically
censored DNS traffic over UDP through spoofed packet
injections &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Anonymous2014a&#34;&gt;4&lt;/a&gt;, &lt;a href=&#34;#cite:Anonymous2020a&#34;&gt;6&lt;/a&gt;, &lt;a href=&#34;#cite:Hoang2021a&#34;&gt;38&lt;/a&gt;]&lt;/span&gt;, it has not employed packet dropping as a
method of blocking for UDP-based protocols. This may be
because this type of censorship requires an &lt;span
class=&#34;ptmri8t-&#34;&gt;in-path &lt;/span&gt;capability to
drop packets, compared to prior injection-only censorship which
can be accomplished with &lt;span
class=&#34;ptmri8t-&#34;&gt;on-path &lt;/span&gt;techniques where the
censoring device only sees a copy of packets. The residual
packet-dropping behavior of the GFW also introduces a new
vector for availability attacks, where an attacker can use the
GFW to block communication between arbitrary hosts. We
explore this attack in &lt;a href=&#34;#sec:6-availability-attack&#34;&gt;Section 6&lt;/a&gt;.
&lt;/p&gt;
&lt;!--l. 114--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;Inconsistent Bidirectional Blocking.   &lt;/span&gt;While our preliminary
experiments showed that traffic entering or exiting China could
trigger blocking, this behavior changed on September 30, 2024.
Since then, inbound traffic to most of our vantage points has no
longer triggered blocking, with the exception of traffic to Beijing
and Guangzhou.                                         &lt;/p&gt;
&lt;!--l. 127--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;Blocking Latency.   &lt;/span&gt;Our experiments show a brief delay between
     detection of a QUIC client Initial packet containing a forbidden
     SNI and when the GFW begins to drop packets, which allows
     several packets to reach the server. The fact that GFW was not
     able to drop the QUIC client Initial with forbidden SNI shows a
     level of &lt;span
class=&#34;ptmri8t-&#34;&gt;on-path &lt;/span&gt;deployment of the GFW &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Wang2017a&#34;&gt;64&lt;/a&gt; §2.1]&lt;/span&gt;. In
     combination with the &lt;span
class=&#34;ptmri8t-&#34;&gt;in-path &lt;/span&gt;packet dropping capability, we
     consider its deployment architecture to be a &lt;span
class=&#34;ptmri8t-&#34;&gt;hybrid &lt;/span&gt;of both
     on-path and in-path, which is similar to the GFW’s blocking of
     TLS ESNI traffic &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:gfw2020esni&#34;&gt;32&lt;/a&gt;]&lt;/span&gt;.
     &lt;/p&gt;
&lt;!--l. 137--&gt;&lt;p class=&#34;indent&#34; &gt;    To precisely measure this blocking delay, we adopted a
     methodology similar to what used in a 2020 study that measured
     the delay in blocking of TLS traffic containing an Encrypted
     Server Name Indication (ESNI) extension &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:gfw2020esni&#34;&gt;32&lt;/a&gt;]&lt;/span&gt;. Specifically, we
     measured how long we continued to receive subsequent packets
     after a triggering QUIC Initial packet.
     &lt;/p&gt;
&lt;!--l. 146--&gt;&lt;p class=&#34;indent&#34; &gt;    We conducted a day-long experiment to determine the GFW’s
     blocking latency for QUIC. From our vantage point in Beijing,
     for the first five minutes of each hour, we initiated 25 UDP flows
     (unique source and destination ports) to a server we controlled in
     Singapore. In each connection, we continuously sent unique
     10-byte payloads at a rate of 100 packets per second. Five
     seconds into the experiment, we sent a QUIC Initial packet with
     a forbidden SNI &lt;span
class=&#34;cmtt-10&#34;&gt;google.com &lt;/span&gt;to each of the 25 destination ports
     corresponding to the ongoing connections, but from different
     source ports. These QUIC Initials trigger the GFW to block each
     of the 25 destination ports (for our client/server pair for any
     source port) such that the server would stop receiving the 10-byte
     payloads.
     &lt;/p&gt;
&lt;!--l. 159--&gt;&lt;p class=&#34;indent&#34; &gt;    On the server side, we captured packets and looked for
     connections in which there was at least a 120-second gap
     between UDP packets, indicating that the QUIC client Initial
     successfully triggered censorship. For these connections, we
     looked at the sending time on the client of the blocking QUIC
     Initial and the last UDP payload the server received before
     the censorship-induced gap. This represents the blocking
     latency when packets were still allowed to pass the GFW
     immediately following a censorship trigger to a 10 ms
     granularity.
     &lt;/p&gt;
&lt;!--l. 182--&gt;&lt;p class=&#34;indent&#34; &gt;    Blocking latencies ranged 60 ms to 7.5 seconds (&lt;a href=&#34;#fig:2-how-fast-the-gfw-blocks&#34;&gt;Figure 2&lt;/a&gt;).
     Over 90% of connections were blocked within one second, but
     there is a long tail that takes longer. We hypothesize that the
     variable delay in blocking corresponds to the variable volume of
     QUIC traffic the GFW must process (See &lt;a href=&#34;#app:appendix-a&#34;&gt;Appendix A&lt;/a&gt;). We
     explore exploiting this property in &lt;a href=&#34;#sec:5-gfw-degradation-attack&#34;&gt;Section 5&lt;/a&gt; to degrade the
     performance of the GFW’s QUIC censorship.

     &lt;/p&gt;
     &lt;div class=&#39;figure&#39;&gt;
          &lt;p class=&#39;noindent&#39; id=&#39;fig:2-how-fast-the-gfw-blocks&#39;&gt;
              &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/how-fast-the-gfw-blocks-.png&#39; /&gt;
              &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:2-how-fast-the-gfw-blocks&#34;&gt;Figure 2&lt;/a&gt;:  The CDF shows the distribution of the time taken
               by  the  GFW  to  enact  a  blocking  rule  causing  subsequent
               packet  drops.  In  over  90%  of  cases,  the  GFW  blocks  the
               connection within one second. The observed blocking times
               range from a minimum of 0.06 seconds to a maximum of 7.5
               seconds.
              &lt;/p&gt;
          &lt;/p&gt;
     &lt;/div&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3.2&#34;&gt;
     &lt;a id=&#34;sec:3.2-flow-tracking-logic&#34; href=&#34;#sec:3.2-flow-tracking-logic&#34;&gt;
          &lt;span class=&#34;titlemark&#34;&gt;3.2.&lt;/span&gt; Flow Tracking Logic
     &lt;/a&gt;
&lt;/h3&gt;
&lt;!--l. 215--&gt;&lt;p class=&#34;indent&#34; &gt;  Unlike TCP, which has a clear three-way handshake that marks
the start of a new connection, UDP is connectionless without any
explicit transport layer handshake. This makes it challenging for
middleboxes to identify the beginning of a new UDP flow.
Although, QUIC connections can be traced using Connection IDs
(CIDs), we found that the GFW does not use CIDs to track QUIC
flows. Instead, it uses the UDP 4-tuple (source IP, destination IP,
source port, destination port) and employs a &lt;span
class=&#34;ptmri8t-&#34;&gt;60-second&lt;/span&gt;
&lt;span
class=&#34;ptmri8t-&#34;&gt;timeout for keeping state &lt;/span&gt;in its flow tracking system. To learn
this, we relied on the fact that the GFW will only block a
connection if the first packet in a UDP flow is a QUIC client
Initial message with a forbidden SNI. If any other UDP
packet precedes the Initial packet, the connection will not be
blocked.
&lt;/p&gt;
&lt;!--l. 235--&gt;&lt;p class=&#34;indent&#34; &gt;  From one of our Beijing vantage points, we sent a UDP packet
with a random 10-byte payload to a server in the U.S. We
then waited a variable delay before sending three QUIC
client Initial messages in the same connection as the 10-byte
random, each spaced one second apart. We repeated this
experiment, increasing the delay between the random payload
packet and client Initial packets by one second each iteration,
until we observed blocking (i.e. no packets received for
180 seconds).
&lt;/p&gt;
&lt;!--l. 243--&gt;&lt;p class=&#34;indent&#34; &gt;  We found that blocking occurred when the delay between the
first random payload and the client Initial packet reached
60 seconds implying that the flow initiated by the random UDP
payload was tracked for 60 seconds. The QUIC Initial packets
sent after this 60 second window triggered blocking, indicating
that the GFW had reset the state for the flow and was treating the
QUIC Initial packets as a new flow.
&lt;/p&gt;
&lt;!--l. 250--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;No UDP Reassembly.   &lt;/span&gt;We found that the GFW does not
reassemble QUIC Initial packets that are split across more than
one UDP datagram. This design choice may be reasonable at the
time of its deployment on April 7, 2024, considering that there
had been few QUIC clients sending large QUIC Initial packets
that do not fit in a typical UDP datagram. However, as detailed
in &lt;a href=&#34;#sec:7-circumvention&#34;&gt;Section 7&lt;/a&gt;, since September 13, 2024 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:chrome-kyber-update&#34;&gt;1&lt;/a&gt;]&lt;/span&gt;, Chrome
introduced a series of changes to its QUIC Initial packets,
making them too large to fit into a single UDP datagram. These
changes to the widely used browser render the GFW less
effective, as it can only block if the SNI extension appears in the
first UDP datagram.

&lt;/p&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3.3&#34;&gt;
     &lt;a id=&#34;sec:3.3-source-port-must-exceed-destination-port&#34; href=&#34;#sec:3.3-source-port-must-exceed-destination-port&#34;&gt;
          &lt;span class=&#34;titlemark&#34;&gt;3.3.&lt;/span&gt; Source Port Must Exceed Destination Port
     &lt;/a&gt;
&lt;/h3&gt;

&lt;!--l. 337--&gt;&lt;p class=&#34;indent&#34; &gt;  We found that sending a QUIC client Initial packet with a
forbidden SNI to the server in the U.S. did not always trigger
blocking. To further investigate this behavior, we conducted
multiple experiments aimed at determining the specific rules the
censor uses to filter QUIC connections.
&lt;/p&gt;
&lt;!--l. 342--&gt;&lt;p class=&#34;indent&#34; &gt;  We selected a range of ports from 401 to 450 with a step
size of 1. We sent QUIC client Initial messages with SNI
&lt;span
class=&#34;cmtt-10&#34;&gt;google.com &lt;/span&gt;from our vantage point in Beijing to our U.S.
server, enumerating all possible source and destination port
pairs in the range. After sending each QUIC client Initial
message, we waited one second, then sent five additional UDP
packets–each with a unique 10-byte payload–spaced one second
apart. This process was repeated ten times, using a different
destination IP address (from the /28 subnet assigned to our
server) in each iteration. We waited for five minutes between
iterations to avoid any residual blocking from previous
connections. For each port pairing, we then recorded the
number of connections that were successfully received and the
number that were blocked (i.e. no follow-up UDP packets
received).
&lt;/p&gt;
&lt;!--l. 356--&gt;&lt;p class=&#34;indent&#34; &gt;  As shown in &lt;a href=&#34;#fig:3-heatmap-ports-401-450-step-1_heatmap&#34;&gt;Figure 3&lt;/a&gt;, the GFW does not block connections
where the source port number is less than or equal to the
destination port number. However, blocking is not uniform,
which suggests variability in how consistently connections are
blocked. We also conducted the same experiment for the full
range of ports (1 to 65535) with a step size of 1,000 and
found this filtering rule to be consistent across all ports
(&lt;a href=&#34;#app:appendix-b&#34;&gt;Appendix B&lt;/a&gt;).
&lt;/p&gt;

&lt;div class=&#39;figure&#39;&gt;
     &lt;p class=&#39;noindent&#39; id=&#39;fig:3-heatmap-ports-401-450-step-1_heatmap&#39;&gt;
         &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/heatmap-ports-401-450-step-1_heatmap-.png&#39; /&gt;
         &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:3-heatmap-ports-401-450-step-1_heatmap&#34;&gt;Figure 3&lt;/a&gt;:  GFW  exempts  connections  where  the  source
     port  of  the  QUIC  Initial  packet  is  equal  to  or  lower  than
     the  destination  port.  The  experiment  was  conducted  on
     December 2, 2024, from a vantage point in Beijing, China.
         &lt;/p&gt;
     &lt;/p&gt;
&lt;/div&gt;

&lt;!--l. 373--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;The GFW Limits the Number of Connections to&lt;/span&gt;
&lt;span
class=&#34;ptmb8t-&#34;&gt;Inspect.   &lt;/span&gt;The censor applies this heuristic port checking
rule to limit the number of connections it needs to inspect.
Since most clients will choose a (high) ephemeral
port
&lt;span class=&#34;footnote-mark&#34;&gt;&lt;a href=&#34;#fn:gfw-heuristic&#34;&gt;&lt;sup class=&#34;textsuperscript&#34;&gt;2&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;
and connect to lower well-known port numbers (e.g., 443), the
GFW can discard likely server-to-client traffic by ignoring
packets that have a source port lower than destination port.
&lt;/p&gt;
&lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
     &lt;ol&gt;
         &lt;li class=&#39;footnote-text&#39;&gt;
             &lt;a id=&#39;fn:gfw-heuristic&#39;&gt;&lt;/a&gt;
             &lt;span class=&#39;footnote-mark&#39;&gt;
                 &lt;sup class=&#39;textsuperscript&#39;&gt;2&lt;/sup&gt;
             &lt;/span&gt;
             &lt;span class=&#39;footnotes-text&#39;&gt;Linux hosts typically use an ephemeral port range of 32768 to 60999,
               while macOS and Windows Vista or later use the range 49152 to 65535. &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:ephemeral-ports&#34;&gt;56&lt;/a&gt;]&lt;/span&gt;
         &lt;/li&gt;
     &lt;/ol&gt;
   &lt;/div&gt;

&lt;!--l. 389--&gt;&lt;p class=&#34;indent&#34; &gt;  Two questions arise when the censor employs this rule:
1) how much traffic does the censor quickly rule out? 2)
how many QUIC client Initials does the censor miss? To
evaluate the efficiency and false negative rate of this rule,
we collected UDP flows from a tap in a US university and
analyzed the distribution of source and destination port
numbers.
&lt;/p&gt;
&lt;!--l. 396--&gt;&lt;p class=&#34;indent&#34; &gt;  &lt;a href=&#34;#tbl:1-distribution-packet-counts&#34;&gt;Table 1&lt;/a&gt; shows the distribution of QUIC client Initial
packets (Inits) and UDP datagrams based on source and
destination ports, observed on a tap in a US university between
8:00 and 9:00 local time (Pacific Standard Time, UTC-8),
on January 22, 2025. The censor only processes a packet
where UDP &lt;span
class=&#34;zptmcmrm-&#34;&gt;sport &amp;#x003E; dport&lt;/span&gt;, meaning they capture more than       90% of all QUIC client Initial packets, while looking up
     flow table for only 30% of all UDP packets. The actual
     percentage of UDP payloads attempted for decryption is even
     lower: as detailed in &lt;a href=&#34;#sec:3.2-flow-tracking-logic&#34;&gt;Section 3.2&lt;/a&gt;, the GFW only parses the
     payload of the first UDP datagram in a flow, defined as a
     five-tuple (source IP, destination IP, source port, destination
     port, UDP protocol), that has not been seen in the last 60
     seconds.
     &lt;/p&gt;
     &lt;div class=&#39;table-container&#39; id=&#39;tbl:1-distribution-packet-counts&#39;&gt;
          &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:1-distribution-packet-counts&#34;&gt;TABLE 1&lt;/a&gt;: Distribution of packet counts based on source and destination ports, observed on a tap in a US university between 8:00 and 9:00 local time (Pacific Standard Time, UTC-8), on January 22, 2025. The censor only further considers flow tracking if a UDP header has &lt;span class=&#34;zptmcmrm-&#34;&gt;sport &amp;gt; dport&lt;/span&gt;, making it possible to capture more than 90% of all QUIC client Initials while looking up flow table for only 30% of all UDP packets.&lt;/p&gt;
          &lt;div class=&#39;tabular&#39;&gt;
            &lt;table class=&#39;tabular&#39; id=&#39;TBL-1&#39;&gt;
              &lt;colgroup id=&#39;TBL-1-1g&#39;&gt;&lt;col id=&#39;TBL-1-1&#39;/&gt;&lt;/colgroup&gt;
              &lt;colgroup id=&#39;TBL-1-2g&#39;&gt;&lt;col id=&#39;TBL-1-2&#39;/&gt;&lt;col id=&#39;TBL-1-3&#39;/&gt;&lt;/colgroup&gt;
              &lt;colgroup id=&#39;TBL-1-3g&#39;&gt;&lt;col id=&#39;TBL-1-4&#39;/&gt;&lt;col id=&#39;TBL-1-5&#39;/&gt;&lt;/colgroup&gt;
              &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;5&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;
                &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;/td&gt;
                &lt;td colspan=&#34;2&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;QUIC Client Inits&lt;/div&gt;&lt;/td&gt;
                &lt;td colspan=&#34;2&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;UDP datagrams&lt;/div&gt;&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;5&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;
                &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;sport &lt;span class=&#34;zptmcmrm-&#34;&gt; &amp;gt; &lt;/span&gt;dport&lt;/td&gt;
                &lt;td style=&#34;white-space:nowrap; text-align:right; border-right: none;&#34;&gt;6.7 M&lt;/td&gt;
                &lt;td style=&#34;white-space:nowrap; text-align:left; border-left: none; padding-left: 1ch;&#34;&gt;(92.3%)&lt;/td&gt;
                &lt;td style=&#34;white-space:nowrap; text-align:right; border-right: none;&#34;&gt;3.7 B&lt;/td&gt;
                &lt;td style=&#34;white-space:nowrap; text-align:left; border-left: none; padding-left: 1ch;&#34;&gt;(29.8%)&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;5&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;
                &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;sport &lt;span class=&#34;zptmcmrm-&#34;&gt; &amp;lt; &lt;/span&gt;dport&lt;/td&gt;
                &lt;td style=&#34;white-space:nowrap; text-align:right; border-right: none;&#34;&gt;0.6 M&lt;/td&gt;
                &lt;td style=&#34;white-space:nowrap; text-align:left; border-left: none; padding-left: 1ch;&#34;&gt;(7.6%)&lt;/td&gt;
                &lt;td style=&#34;white-space:nowrap; text-align:right; border-right: none;&#34;&gt;8.4 B&lt;/td&gt;
                &lt;td style=&#34;white-space:nowrap; text-align:left; border-left: none; padding-left: 1ch;&#34;&gt;(68.0%)&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;5&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;
                &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;sport &lt;span class=&#34;zptmcmrm-&#34;&gt; = &lt;/span&gt;dport&lt;/td&gt;
                &lt;td style=&#34;white-space:nowrap; text-align:right;  border-right: none;&#34;&gt;4.6 K&lt;/td&gt;
                &lt;td style=&#34;white-space:nowrap; text-align:left; border-left: none; padding-left: 1ch;&#34;&gt;(0.06%)&lt;/td&gt;
                &lt;td style=&#34;white-space:nowrap; text-align:right; border-right: none;&#34;&gt;27.7 M&lt;/td&gt;
                &lt;td style=&#34;white-space:nowrap; text-align:left; border-left: none; padding-left: 1ch;&#34;&gt;(2.2%)&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;5&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
            &lt;/table&gt;
          &lt;/div&gt;
        &lt;/div&gt;


&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3.4&#34;&gt;
     &lt;a id=&#34;sec:3.4-diurnal-blocking-pattern&#34; href=&#34;#sec:3.4-diurnal-blocking-pattern&#34;&gt;
          &lt;span class=&#34;titlemark&#34;&gt;3.4.&lt;/span&gt; Diurnal Blocking Pattern
     &lt;/a&gt;
&lt;/h3&gt;

&lt;!--l. 464--&gt;&lt;p class=&#34;noindent&#34; &gt;The variability in &lt;a href=&#34;#fig:3-heatmap-ports-401-450-step-1_heatmap&#34;&gt;Figure 3&lt;/a&gt; indicates that connections are not
consistently blocked and that blocking is non-deterministic. To
explore this, we ran a week-long experiment from different
vantage points to observe the frequency of QUIC connection
blocking throughout the day and across all destination ports. We
used our three locations in China to establish a connection to a
U.S.-based server. We sent a 1,000 concurrent probes (i.e. a
QUIC client Initial packet containing SNI &lt;span
class=&#34;cmtt-10&#34;&gt;google.com&lt;/span&gt;,
followed by 1 second delay and 5 subsequent UDP packets
containing unique 10-byte payloads, every 5 seconds from our
three China vantage points to 10 IPv4 addresses and all ports of
our server in the U.S.) In all cases, we ensured that the source
port was greater than the destination port per &lt;a href=&#34;#sec:3.3-source-port-must-exceed-destination-port&#34;&gt;Section 3.3&lt;/a&gt;. We
mark a connection as censored if none of the 10-byte follow-up
UDP payload packets are received by the server, after the QUIC
client Initial. We then calculate the percentage of blocked
connections by aggregating the data for each hour for each client
location.
&lt;/p&gt;
&lt;!--l. 481--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;Blocking Rate Is Influenced by the Time of the Day.   &lt;/span&gt;As
can be seen in &lt;a href=&#34;#fig:4-diurnal-timeseries-three-sources&#34;&gt;Figure 4&lt;/a&gt;, there is a clear diurnal pattern
across all three cities, with blocking percentages peaking
during early morning hours and dropping to the lowest
levels during the day. Beijing consistently shows the highest
levels of blocking, followed by Shanghai and Guangzhou.
This pattern suggests that the blocking rate is influenced
by the Internet usage patterns in China, with the highest
blocking rates observed during periods of low network
traffic.
&lt;/p&gt;
&lt;div class=&#39;figure&#39;&gt;
     &lt;p class=&#39;noindent&#39; id=&#39;fig:4-diurnal-timeseries-three-sources&#39;&gt;
          &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/diurnal-timeseries-three-sources-.png&#39; /&gt;
          &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:4-diurnal-timeseries-three-sources&#34;&gt;Figure 4&lt;/a&gt;:  Percentage of blocked QUIC connections over time for clients sending connections from three major cities in China
               to a server in the US. The timestamps shown are in China Standard Time (CST, UTC+8) and span from November 15 to 22,
               2024.
          &lt;/p&gt;
     &lt;/p&gt;
&lt;/div&gt;
&lt;!--l. 490--&gt;&lt;p class=&#34;indent&#34; &gt;  We hypothesize that this behavior occurs because the GFW
can only handle a limited volume of traffic at any given time.
The operational cost of decrypting QUIC Initial packets is
substantial at scale, making the blocking rate sensitive to
network load, which varies during the day. Diurnal patterns of
blocking have also been observed in prior studies on GFW’s
keyword filtering and DNS injection mechanisms &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Anonymous2014a&#34;&gt;4&lt;/a&gt; §7, &lt;a href=&#34;#cite:Crandall2007a&#34;&gt;15&lt;/a&gt; §3.2]&lt;/span&gt;, suggesting computational limitations that render
the GFW less effective during peak hours. We note that
this becomes increasingly relevant in the context of QUIC
connections, as parsing QUIC traffic is computationally
expensive compared to other plaintext protocols like HTTP
and DNS. In &lt;a href=&#34;#sec:5-gfw-degradation-attack&#34;&gt;Section 5&lt;/a&gt;, we present further evidence that
increasing the number of QUIC Initial packets past the GFW can
overwhelm it, leading to a degradation in its censorship
effectiveness.
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3.5&#34;&gt;
     &lt;a id=&#34;sec:3.5-locating-the-censorship-devices&#34; href=&#34;#sec:3.5-locating-the-censorship-devices&#34;&gt;
          &lt;span class=&#34;titlemark&#34;&gt;3.5.&lt;/span&gt; Locating the Censorship Devices
     &lt;/a&gt;
&lt;/h3&gt;
&lt;!--l. 568--&gt;&lt;p class=&#34;indent&#34; &gt;  We performed an incremental IP TTL measurement to
locate the censorship devices. We set a fixed IP TTL value
in the QUIC client Initial messages, starting from 1 and
incrementing by 1 in each experiment. In the first second of
each experiment, we sent 10 QUIC client Initial messages
with the SNI of &lt;span
class=&#34;cmtt-10&#34;&gt;google.com &lt;/span&gt;to port 53 of our server in
the US, ensuring that the blocking would be triggered as
long as it reaches the censor. After 5 seconds, we then sent
100 UDP datagrams with the same 4-tuple as the QUIC
client Initial message. The payload of these UDP packets
consisted of 10-bytes that included the encoded TTL value
used in the QUIC client Initial packets. We inferred if a
QUIC Initial message reached the censor by observing if the
100 UDP datagrams were dropped. This measurement was
performed from three vantage points in China: Beijing,
Shanghai, and Guangzhou, with each experiment repeated 10
times.
&lt;/p&gt;
&lt;!--l. 581--&gt;&lt;p class=&#34;indent&#34; &gt;  As shown in &lt;a href=&#34;#tbl:2-traceroute-blocking-points&#34;&gt;Table 2&lt;/a&gt;, we found the QUIC blocking is not
triggered until the IP TTL value is 9, 11, and 12 for our clients
Shanghai, Beijing and Guangzhou, respectively. The hop
triggering the blocking is located in the backbone network of
ChinaNet for Shanghai and Guangzhou, and in the backbone
network of China Unicom for Beijing.
&lt;/p&gt;
&lt;!--l. 586--&gt;&lt;p class=&#34;indent&#34; &gt;  Similarly, we sent DNS queries for &lt;span
class=&#34;cmtt-10&#34;&gt;google.com &lt;/span&gt;using the
same 4-tuple with incrementing IP TTLs to port 53 of the server,
We observed that DNS injection was not triggered until the IP
TTL value matched those observed for QUIC blocking,
suggesting that the new devices are co-located at the same hop as
the existing GFW devices.
&lt;div class=&#39;table-container&#39; id=&#39;tbl:2-traceroute-blocking-points&#39;&gt;
     &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:2-traceroute-blocking-points&#34;&gt;TABLE 2&lt;/a&gt;: Traceroute results identifying GFW’s UDP censorship points: path to devices performing QUIC and DNS blocking, including the final uncensored hop from three different client locations.&lt;/p&gt;
     &lt;div class=&#39;tabular&#39;&gt;
       &lt;table class=&#39;tabular&#39; id=&#39;TBL-2&#39;&gt;
         &lt;colgroup id=&#39;TBL-2-1g&#39;&gt;
           &lt;col id=&#39;TBL-2-1&#39;/&gt;
           &lt;col id=&#39;TBL-2-2&#39;/&gt;
           &lt;col id=&#39;TBL-2-3&#39;/&gt;
           &lt;col id=&#39;TBL-2-4&#39;/&gt;
         &lt;/colgroup&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;City&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;Hops Away (QUIC/DNS)&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;Blocking Hop -1 (ISP/AS)&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;Blocking Hop (ISP/AS)&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;Shanghai&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;9/9&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;ChinaNet Shanghai Province Network (AS4812)&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;ChinaNet Backbone (AS4134)&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;Beijing&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;12/12&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;China Unicom Backbone (AS4837)&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;China Unicom Backbone (AS4837)&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;Guangzhou&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;11/11&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;ChinaNet Guangdong Province Network (AS4134)&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;ChinaNet Backbone (AS4134)&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
       &lt;/table&gt;
     &lt;/div&gt;
   &lt;/div&gt;
   &lt;h3 class=&#34;subsectionHead&#34; id=&#34;3.6&#34;&gt;
     &lt;a id=&#34;sec:3.6-quic-parsing-idiosyncrasies&#34; href=&#34;#sec:3.6-quic-parsing-idiosyncrasies&#34;&gt;
       &lt;span class=&#34;titlemark&#34;&gt;3.6.&lt;/span&gt; QUIC Parsing Idiosyncrasies
     &lt;/a&gt;
   &lt;/h3&gt;

&lt;!--l. 699--&gt;&lt;p class=&#34;noindent&#34; &gt;The GFW’s QUIC censorship does not strictly follow the QUIC
specifications &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:rfc9000&#34;&gt;43&lt;/a&gt;, &lt;a href=&#34;#cite:rfc9001&#34;&gt;58&lt;/a&gt;]&lt;/span&gt; in several ways. We crafted and sent
several modified QUIC payloads that should be rejected by
RFC-compliant implementations, to see if they would still trigger
the GFW’s censorship. If they do, it indicates that the GFW does
not properly ignore non-compliant QUIC payloads, potentially
presenting an opportunity for circumvention methods or other
vulnerabilities. Our modified QUIC payloads are described
in &lt;a href=&#34;#tbl:3-experiment-characterization&#34;&gt;Table 3&lt;/a&gt;, and &lt;a href=&#34;#fig:5-quic_parse_heatmap&#34;&gt;Figure 5&lt;/a&gt; shows the results of sending these
over the GFW. For each payload, we sent 20 connections in both
directions—from vantage points in China to servers outside the
country, and vice versa—to determine whether they would
trigger censorship.
&lt;/p&gt;
&lt;div class=&#34;table-container&#34; id=&#34;tbl:3-experiment-characterization&#34;&gt;
     &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:3-experiment-characterization&#34;&gt;TABLE 3&lt;/a&gt;: Description of each experiment we run to characterize the GFW’s QUIC parsing mechanism. For each, we mark if the payload is ever observed to be blocked (&lt;a href=&#34;#sec:3.6-quic-parsing-idiosyncrasies&#34;&gt;Section 3.6&lt;/a&gt;), and if it can be used to degrade the GFW (&lt;a href=&#34;#sec:5-gfw-degradation-attack&#34;&gt;Section 5&lt;/a&gt;).&lt;/p&gt;
     &lt;div class=&#34;tabular&#34;&gt;
       &lt;table class=&#34;tabular&#34; id=&#34;TBL-3&#34;&gt;
         &lt;colgroup id=&#34;TBL-3-1g&#34;&gt;
           &lt;col id=&#34;TBL-3-1&#34; /&gt;
           &lt;col id=&#34;TBL-3-2&#34; /&gt;
           &lt;col id=&#34;TBL-3-3&#34; /&gt;
           &lt;col id=&#34;TBL-3-4&#34; /&gt;
         &lt;/colgroup&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;Exp. No.&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;Descriptions of the Tested QUIC Initial Packets&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;Blocked?&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;Degrades?&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;1&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;Packet number is one-byte.&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✓&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✓&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;2&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;Remove last byte from QUIC packet.&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✕&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✓&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;3&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;Bad version number with incorrect auth tag. Version Number: &lt;span class=&#34;cmtt-9&#34;&gt;0x00000002&lt;/span&gt;.&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✕&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✕&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;4&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;Both connection IDs have a length of &lt;span class=&#34;cmtt-9&#34;&gt;0x00&lt;/span&gt;.&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✓&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✓&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;5&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;Source connection ID has a length of &lt;span class=&#34;cmtt-9&#34;&gt;0xff&lt;/span&gt;.&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✕&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✓&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;6&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;CRYPTO frame has a length of &lt;span class=&#34;cmtt-9&#34;&gt;0x00&lt;/span&gt; but still contains a payload.&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✓&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✓&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;7&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;Sensitive domain in an extension other than the SNI extension (e.g. ALPN contains &lt;span class=&#34;cmtt-9&#34;&gt;google.com&lt;/span&gt;).&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✕&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✓&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;8&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;QUIC payload contains a single &lt;span class=&#34;cmtt-9&#34;&gt;CRYPTO&lt;/span&gt; frame along with multiple &lt;span class=&#34;cmtt-9&#34;&gt;PING&lt;/span&gt; and &lt;span class=&#34;cmtt-9&#34;&gt;PADDING&lt;/span&gt; frames.&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✕&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✓&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;9&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;A QUIC Initial packet whose TLS Client Hello contained an Encrypted Client Hello extension with an outer SNI of &lt;span class=&#34;cmtt-9&#34;&gt;cloudflare-ech.com&lt;/span&gt;.&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✕&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✓&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;10&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;A QUIC Version 2 packet.&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✕&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✕&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
       &lt;/table&gt;
     &lt;/div&gt;
   &lt;/div&gt;

     &lt;div class=&#39;figure&#39;&gt;
          &lt;p class=&#39;noindent&#39; id=&#39;fig:5-quic_parse_heatmap&#39;&gt;
          &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/quic_parse_heatmap-.png&#39; /&gt;
          &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:5-quic_parse_heatmap&#34;&gt;Figure 5&lt;/a&gt;:  Percentage  of  blocked  QUIC-like  packets  for
               each  experiment  run.  For  each  payload,  we  created  20
               connections and measured how many were received by the
               destination host. Each payload, described in &lt;a href=&#34;#tbl:3-experiment-characterization&#34;&gt;Table 3&lt;/a&gt;, tests a
               modification to the standard QUIC client Initial and provides
               insight into the parsing logic of the GFW QUIC censor.
          &lt;/p&gt;
          &lt;/p&gt;
     &lt;/div&gt;
&lt;!--l. 719--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;No Need for Padding.   &lt;/span&gt;While the QUIC specification requires
that Initial packets must be padded to a minimum of 1200 bytes,
we found that the GFW does not enforce this requirement. We
were able to trigger censorship with payloads as small as
137 bytes. However, since the GFW does not inject responses,
there is not a risk of amplification attacks.
&lt;/p&gt;
&lt;!--l. 729--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;Length Field Ambiguity.   &lt;/span&gt;Connection ID lengths are defined in
the specification to be between 8 and 20 bytes; however, the field
supports lengths up to 255 bytes. We find that setting both
source and destination connection IDs to a length of &lt;span
class=&#34;cmtt-10&#34;&gt;0x00&lt;/span&gt;
(too short) is blocked, though this should be ignored as per
the specification. On the other hand, a length of &lt;span
class=&#34;cmtt-10&#34;&gt;0xff &lt;/span&gt;is
not blocked, indicating that the GFW correctly checks the
upper limit. Curiously, we find that the GFW will block a
payload even if the &lt;span
class=&#34;cmtt-10&#34;&gt;CRYPTO &lt;/span&gt;frame has a specified length of
&lt;span
class=&#34;cmtt-10&#34;&gt;0x00&lt;/span&gt;, as long as the actual payload contains a forbidden
SNI. The GFW appears to assume the &lt;span
class=&#34;cmtt-10&#34;&gt;CRYPTO &lt;/span&gt;frame length
from the rest of the payload, meaning it cannot correctly
handle split &lt;span
class=&#34;cmtt-10&#34;&gt;CRYPTO &lt;/span&gt;frames (such as used by Google Chrome
browsers).
&lt;/p&gt;
&lt;!--l. 742--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;Version Specific Blocking.   &lt;/span&gt;Only QUIC version 1 packets
containing the plaintext byte pattern &lt;span
class=&#34;cmtt-10&#34;&gt;0x00000001 &lt;/span&gt;in the version
field are subject to blocking. The recently standardized QUIC
version 2 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:rfc9369&#34;&gt;21&lt;/a&gt;]&lt;/span&gt;, which uses a different salt value for initial
encryption keys, remains unblocked. This suggests the GFW
either has not updated its filtering mechanisms for new version
salt values or relies on version 1-specific plaintext byte pattern
matching for packet inspection.

&lt;/p&gt;
&lt;h2 class=&#34;sectionHead&#34; id=&#34;4&#34;&gt;
     &lt;a id=&#34;sec:4-monitoring-the-blocklist-over-time&#34; href=&#34;#sec:4-monitoring-the-blocklist-over-time&#34;&gt;
          &lt;span class=&#34;titlemark&#34;&gt;4.&lt;/span&gt; Monitoring the Blocklist over Time
     &lt;/a&gt;
&lt;/h2&gt;
   &lt;!--l. 4--&gt;&lt;p class=&#34;noindent&#34; &gt;In this section, we investigate the websites that are blocked by      the GFW’s QUIC-SNI censorship mechanism. We consider
     currently blocked sites, how the blocklist has changed over time,
     and how the QUIC blocklist compares to blocklists used by
     other censorship methods like TLS-SNI, HTTP, and DNS.
     As noted in &lt;a href=&#34;#sec:3.4-diurnal-blocking-pattern&#34;&gt;Section 3.4&lt;/a&gt;, the GFW’s QUIC censorship
     mechanism is non-deterministic, which requires an experimental
     methodology that minimizes false negatives. For each name that
     we test, we send QUIC client Initial messages carrying the
     SNI from several vantage points and repeat the process
     over multiple trials. Additionally, to avoid inaccuracies
     from residual censorship on a specific destination port, we
     do not send connections to the same 3-tuple (source IP,
     destination IP, destination port) within any 180 second
     window.
     &lt;/p&gt;
&lt;!--l. 17--&gt;&lt;p class=&#34;indent&#34; &gt;    We monitor the GFW’s QUIC blocklist over a period of more
     than three months. Because of the inconsistency in bidirectional
     blocking—specifically, that most of our vantage points stopped
     experiencing bidirectional blocking after September 30,
     2024—we adopted an inside-out measurement approach. We
     deployed ten vantage points in Beijing (AS45090) to run the
     client-side script and a vantage point in a US university (AS32)
     for the server. The server was assigned a /28 IPv4 subnet. For
     each name to test, the client sends a QUIC client Initial message
     to the server, waits for one second, and then sends 5 unique
     10-byte UDP payload packets spaced 1 second apart. We mark
     an SNI as blocked if &lt;span
class=&#34;ptmri8t-&#34;&gt;none &lt;/span&gt;of the follow-up UDP payload packets
     are received.
     &lt;/p&gt;
&lt;!--l. 28--&gt;&lt;p class=&#34;indent&#34; &gt;    We use the &lt;span
class=&#34;ptmri8t-&#34;&gt;full  &lt;/span&gt;Tranco list (ID:
     664NX) &lt;span class=&#34;footnote-mark&#34;&gt;&lt;a href=&#34;#fn:ranco-full-list&#34;&gt;&lt;sup class=&#34;textsuperscript&#34;&gt;3&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;
     &lt;a id=&#34;fnref:tranco-full-list&#34;&gt;&lt;/a&gt;
   obtained on October 2, 2024, which consists of approximately
     seven million fully qualified domain names (FQDNs) for testing.
     We acknowledge that this list may not exhaustively capture all
     censored names. However, we argue that a reasonably large list
     of popular names provides a representative sample of the GFW’s
     QUIC blocklist.
     &lt;/p&gt;
     &lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
          &lt;ol&gt;
               &lt;li class=&#34;footnote-text&#34;&gt;
               &lt;a id=&#34;fn:ranco-full-list&#34;&gt;&lt;/a&gt;
               &lt;span class=&#34;footnote-mark&#34;&gt;
                    &lt;sup class=&#34;textsuperscript&#34;&gt;3&lt;/sup&gt;
               &lt;/span&gt;
               &lt;span class=&#34;footnotes-text&#34;&gt;
                    The list available at:
                    &lt;a href=&#34;https://tranco-list.eu/list/664NX/full&#34;&gt;https://tranco-list.eu/list/664NX/full&lt;/a&gt;
               &lt;/span&gt;
               &lt;/li&gt;
          &lt;/ol&gt;
     &lt;/div&gt;
&lt;!--l. 36--&gt;&lt;p class=&#34;indent&#34; &gt;    In each test, for each name, each of the ten client vantage
     points in Beijing sends a QUIC client Initial message to a
     distinct IP address of our US server. Based on our finding
     in &lt;a href=&#34;#sec:3.3-source-port-must-exceed-destination-port&#34;&gt;Section 3.3&lt;/a&gt;, we always use source ports greater than
     destination port to trigger blocking. We run these experiments as
     cronjobs between 3 AM and 6 AM CST. This is because we
     observed the highest rate of blocking during these hours
     (&lt;a href=&#34;#sec:3.4-diurnal-blocking-pattern&#34;&gt;Section 3.4&lt;/a&gt;).
     &lt;/p&gt;
&lt;!--l. 45--&gt;&lt;p class=&#34;indent&#34; &gt;    Since the blocking rate during this time is observed to be at
     least 50% for our connections, we repeat each QUIC client Initial
     test ten times to ensure that the accuracy of our blocklist
     extraction is above &lt;span
class=&#34;zptmcmr-&#34;&gt;1&lt;/span&gt;&lt;span
class=&#34;zpzccmry-&#34;&gt;−&lt;/span&gt;
&lt;span
     class=&#34;zptmcmr-&#34;&gt;(1 − 50% )&lt;/span&gt;
     &lt;sup&gt;&lt;span
class=&#34;zptmcmr-x-x-74&#34;&gt;10&lt;/span&gt;&lt;/sup&gt; &lt;span
class=&#34;zptmcmr-&#34;&gt;= 99&lt;/span&gt;&lt;span
class=&#34;zptmcmrm-&#34;&gt;.&lt;/span&gt;&lt;span
class=&#34;zptmcmr-&#34;&gt;9%&lt;/span&gt;. On the server
     side, we aggregate the data for each SNI that is blocked for each
     day. These experiments have been running for over three
     months, starting from October 8, 2024, to January 15,
     2025.


&lt;/p&gt;
&lt;div class=&#39;figure&#39;&gt;
     &lt;p class=&#39;noindent&#39; id=&#39;fig:6-availability-attack&#39;&gt;
     &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/domains-blocked-over-quic-weekly-.png&#39; /&gt;
          &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:6-availability-attack&#34;&gt;Figure 6&lt;/a&gt;:  Number of FQDNs blocked by the GFW’s QUIC
               SNI censorship for the full Tranco list (ID: 664NX), between
               October 8,  2024  and  January 15,  2025.  The  number  of
               blocked domains are aggregated weekly. The bar chart shows
               weekly churn in the blocklist over time.
          &lt;/p&gt;
     &lt;/p&gt;
&lt;/div&gt;
&lt;!--l. 53--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;QUIC Blocklist.   &lt;/span&gt;On a weekly basis, we found that the GFW
blocked an average of 43.8K FQDNs from the Tranco list
(&lt;a href=&#34;#fig:6-availability-attack&#34;&gt;Figure 6&lt;/a&gt;). Over the full duration of our experiments, we
observed that the GFW blocked 58,207 unique FQDNs from the
Tranco list (&lt;a href=&#34;#tbl:4-fqdn-quic-block&#34;&gt;Table 4&lt;/a&gt;).
&lt;/p&gt;
&lt;div class=&#39;table-container&#39; id=&#39;tbl:4-fqdn-quic-block&#39;&gt;
     &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:4-fqdn-quic-block&#34;&gt;TABLE 4&lt;/a&gt;: Number of Fully Qualified Domain Name (FQDNs) supporting QUIC, blocked by QUIC-SNI censorship, and their intersection. QUIC censorship test was conducted between October 8, 2024 and January 15, 2025.&lt;/p&gt;
     &lt;div class=&#39;tabular&#39;&gt;
          &lt;table class=&#39;tabular&#39; id=&#39;TBL-4&#39;&gt;
          &lt;colgroup&gt;&lt;col id=&#39;TBL-4-1&#39;/&gt;&lt;col id=&#39;TBL-4-2&#39;/&gt;&lt;/colgroup&gt;
          &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;2&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;
               &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Fully Qualified Domain Name&lt;/td&gt;
               &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;Count&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;2&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;
               &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Total Tested (Tranco List)&lt;/td&gt;
               &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;6,955,968&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;2&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;
               &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Supporting QUIC&lt;/td&gt;
               &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;1,489,967&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;2&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;
               &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Ever Blocked over QUIC&lt;/td&gt;
               &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;58,207&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;2&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;
               &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Blocked &amp;amp; Supporting QUIC&lt;/td&gt;
               &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;38,451&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;2&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
          &lt;/table&gt;
     &lt;/div&gt;
&lt;/div&gt;
&lt;!--l. 93--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;Domains Blocked Over QUIC May Not Support QUIC.   &lt;/span&gt;We
tested domains for QUIC support by making direct HTTP/3
requests rather than relying on &lt;span
class=&#34;cmtt-10&#34;&gt;Alt-Svc &lt;/span&gt;headers, because some
servers support HTTP/3-over-QUIC without advertising it.
From our measurements, we identified 58,207 FQDNs that
were blocked over QUIC, of which 38,451 actually support
HTTP/3-over-QUIC (see &lt;a href=&#34;#tbl:4-fqdn-quic-block&#34;&gt;Table 4&lt;/a&gt;). Within this larger set of
blocked names, 9,345 popular second-level domains (e.g.,
&lt;span
class=&#34;cmtt-10&#34;&gt;google.com&lt;/span&gt;, &lt;span
class=&#34;cmtt-10&#34;&gt;hrw.org&lt;/span&gt;, &lt;span
class=&#34;cmtt-10&#34;&gt;youtube.com&lt;/span&gt;, &lt;span
class=&#34;cmtt-10&#34;&gt;tiktok.com&lt;/span&gt;) were
found blocked, although only 3,233 of them actually support
QUIC. Notably, a substantial number of &lt;span
class=&#34;cmtt-10&#34;&gt;googlevideo.com&lt;/span&gt;
subdomains (35,443) appeared on the blocklist, suggesting a
broader blocking rule targeting &lt;span
class=&#34;cmtt-10&#34;&gt;*.googlevideo.com &lt;/span&gt;and
resulting in an increase the number of QUIC-supporting
domains. Since not all QUIC-blocked domains actually support
QUIC, it is difficult to determine the exact logic behind the
GFW’s blocklist. The GFW may be blocking these domains
preemptively, anticipating potential future QUIC support or it
may be using other criteria unrelated to QUIC for its blocking
decisions.
&lt;/p&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4.1&#34;&gt;
     &lt;a id=&#34;sec:4.1-comparison-with-other-blocklists&#34; href=&#34;#sec:4.1-comparison-with-other-blocklists&#34;&gt;
          &lt;span class=&#34;titlemark&#34;&gt;4.1.&lt;/span&gt; Comparison with Other Blocklists
     &lt;/a&gt;
&lt;/h3&gt;
&lt;!--l. 113--&gt;&lt;p class=&#34;noindent&#34; &gt;We conducted a comparative analysis of the GFW’s QUIC-SNI
blocklist against other established GFW censorship mechanisms,
including TLS-SNI, HTTP Host, and DNS-based blocking. To
evaluate TLS-SNI blocking, we employed a methodology based
on prior work &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Chai2019a&#34;&gt;11&lt;/a&gt;, &lt;a href=&#34;#cite:Hoang2024a&#34;&gt;37&lt;/a&gt;]&lt;/span&gt;. We established a client in Beijing and a
sink server in the U.S. to perform inside-out measurements,
maintaining consistency with our QUIC-SNI blocking analysis.
Our sink server was configured to accept TCP connections but
not respond with any data. In each test, after completing the
TCP handshake, the client transmitted TLS Client Hello
messages containing test domain SNI values. We monitored the
connection for TCP &lt;span
class=&#34;cmtt-10&#34;&gt;RST&lt;/span&gt;s packets—a characteristic signature of
SNI blocking. For HTTP Host testing, we applied a similar
approach but replaced the TLS Client Hello with HTTP
GET requests containing the test domain in the Host header
field.
&lt;/p&gt;
&lt;!--l. 126--&gt;&lt;p class=&#34;indent&#34; &gt;  For DNS censorship testing, we followed established
methodologies from previous research &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Anonymous2020a&#34;&gt;6&lt;/a&gt;, &lt;a href=&#34;#cite:Hoang2021a&#34;&gt;38&lt;/a&gt;]&lt;/span&gt;. We configured
our Beijing-based client to send DNS queries to a controlled
US-based IP address where no DNS server was running. This
configuration allowed us to definitively attribute any received
DNS responses to GFW injection, as our server was configured
to ignore all queries. To ensure consistent comparison across all
three testing methods (TLS-SNI, HTTP Host, and DNS), we
utilized domains from the same Tranco list. We performed
these measurements and collected blocklisted domains over
a one-week period from January 9, 2025, to January 15,          2025.
     &lt;/p&gt;
&lt;!--l. 136--&gt;&lt;p class=&#34;indent&#34; &gt;    &lt;a href=&#34;#fig:7-venn-intersection-between-lists&#34;&gt;Figure 7&lt;/a&gt; illustrates the overlap between the blocklists for
     TLS-SNI, HTTP Host, DNS, and QUIC protocols. For our tested
     Tranco list domains, DNS blocking affected the largest number
     of domains (106,973), followed by HTTP (105,488) and HTTPS
     (102,216). The QUIC blocklist was notably smaller, containing
     approximately 55 percent the number of domains compared to
     the other three blocklists. Among the 58,207 domains that were
     ever blocked over QUIC, 11,854 were exclusively blocked
     through this protocol. Notably, of these QUIC-exclusive blocked
     domains, we found only 2,329 domains that actually supported
     QUIC.
     &lt;/p&gt;
     &lt;div class=&#39;figure&#39;&gt;
          &lt;p class=&#39;noindent&#39; id=&#39;fig:7-venn-intersection-between-lists&#39;&gt;
          &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/venn-intersection-between-lists-.png&#39; /&gt;
          &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:7-venn-intersection-between-lists&#34;&gt;Figure 7&lt;/a&gt;:  Venn   diagram   showing   the   overlap   between
               the  blocklists  for  HTTPS,  HTTP,  DNS,  and  QUIC.  The
               blocklists for each protocol are aggregated over a period of 1
               week from January 9, 2025 to January 15, 2025.
          &lt;/p&gt;
          &lt;/p&gt;
     &lt;/div&gt;
&lt;!--l. 146--&gt;&lt;p class=&#34;indent&#34; &gt;    We found 40,447 domains common to all four blocklists,
     representing a 24.4% overlap (measured as intersection divided
     by union). When comparing QUIC blocking against the other
     three protocols individually, we found the highest overlap
     (intersection over union) with HTTPS at 46,251 domains
     (40.51%), followed by HTTP with 43,191 domains (35.84%),
     and DNS with 41,484 domains (33.54%). These findings
     indicate that each censorship mechanism operates with distinct
     but overlapping blocklists, creating a complementary system that
     maximizes the GFW’s censorship coverage. For instance, an
     HTTP/3-over-QUIC browsing session in a modern browser
     typically starts with a DNS query, followed by request over
     HTTP/2 (or earlier) and then upgrades to HTTP/3 over QUIC.
     The GFW’s censorship strategy is designed to affect each
     stage either exclusively or in combination, ensuring that
     the user is unable to access the forbidden content on the
     web.
     &lt;/p&gt;
&lt;!--l. 200--&gt;&lt;p class=&#34;indent&#34; &gt;  &lt;a href=&#34;#tbl:5-jaccard-index&#34;&gt;Table 5&lt;/a&gt; shows the Jaccard Index (Intersection over Union) of
the GFW’s blocklists for DNS-, HTTP-, TLS-, and QUIC-based
censorship of the Tranco Top 10k, alongside websites supporting
QUIC, and a randomly selected sample of 500 FQDNs.
&lt;/p&gt;
&lt;div class=&#34;table-container&#34; id=&#34;tbl:5-jaccard-index&#34;&gt;
     &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:5-jaccard-index&#34;&gt;TABLE 5&lt;/a&gt;: The Jaccard Index (Intersection over Union) of the GFW’s blocklists for DNS-, HTTP-, TLS-, and QUIC-based censorship of the Tranco top 10k, alongside websites supporting QUIC, and a randomly selected sample of 500 fully qualified domain names (FQDNs).&lt;/p&gt;
     &lt;div class=&#34;tabular&#34;&gt;
       &lt;table class=&#34;tabular&#34; id=&#34;TBL-5&#34;&gt;
         &lt;colgroup id=&#34;TBL-5-1g&#34;&gt;&lt;col id=&#34;TBL-5-1&#34;/&gt;&lt;col id=&#34;TBL-5-2&#34;/&gt;&lt;col id=&#34;TBL-5-3&#34;/&gt;&lt;col id=&#34;TBL-5-4&#34;/&gt;&lt;col id=&#34;TBL-5-5&#34;/&gt;&lt;col id=&#34;TBL-5-6&#34;/&gt;&lt;col id=&#34;TBL-5-7&#34;/&gt;&lt;/colgroup&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;7&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;DNS&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;HTTP&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;TLS&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;QUIC&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;Support QUIC&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;Sample 500&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;7&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;DNS&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;7&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;HTTP&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.57&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;7&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;TLS&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.67&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.43&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;7&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;QUIC&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.19&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.20&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.26&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;7&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;Support QUIC&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.19&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.20&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.13&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.05&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;7&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;Sample 500&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.03&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.03&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.03&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.01&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.05&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;7&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
       &lt;/table&gt;
     &lt;/div&gt;
   &lt;/div&gt;
&lt;h2 class=&#34;sectionHead&#34; id=&#34;5&#34;&gt;
     &lt;a id=&#34;sec:5-gfw-degradation-attack&#34; href=&#34;#sec:5-gfw-degradation-attack&#34;&gt;
          &lt;span class=&#34;titlemark&#34;&gt;5.&lt;/span&gt; GFW Degradation Attack
     &lt;/a&gt;
&lt;/h2&gt;
&lt;!--l. 4--&gt;&lt;p class=&#34;noindent&#34; &gt;In &lt;a href=&#34;#fig:4-diurnal-timeseries-three-sources&#34;&gt;Figure 4&lt;/a&gt;, we observed that the GFW’s QUIC censorship was
less effective during times corresponding to high traffic volume
in China. This led us to hypothesize that the GFW’s effectiveness
could be purposefully degraded by sending QUIC packets that
the GFW would need to process. While our experiments provide
valuable insights into the design of China’s censorship system,
they also raise several ethical concerns which we carefully
considered and discuss in &lt;a href=&#34;#sec:9-conclusion&#34;&gt;Section 9&lt;/a&gt;. We designed our experiments
to ensure that users and other Internet devices were not
impacted, and specifically ensured our tests only degraded the
GFW.
&lt;/p&gt;
&lt;!--l. 23--&gt;&lt;p class=&#34;indent&#34; &gt;  In this experiment, we use three vantage points. The first is in
China (Beijing, Alibaba, AS37963) which we refer to as
ChinaVP, the second is in the US (East, Digital Ocean, AS14061)
which we refer to as USVP, and the third is in a research
institution in the US (University of Michigan, AS36375) which
we refer to as StressVP. Our goal is to measure the effectiveness
of the GFW’s QUIC censorship in the presence of moderate
volumes of QUIC traffic. This experiment consists of two parts
that are run simultaneously: a measurement part and a stressing
part.
&lt;/p&gt;
&lt;!--l. 33--&gt;&lt;p class=&#34;indent&#34; &gt;  In the measurement part, we configure our three vantage points
to do the following: the ChinaVP sends a QUIC Initial packet
(267 bytes of payload) containing a forbidden domain name,
namely &lt;span
class=&#34;cmtt-10&#34;&gt;google.com &lt;/span&gt;in the SNI field, to USVP where the
destination port is less than the source port (to trigger censorship
as shown in &lt;a href=&#34;#sec:3-quic-censorship-mechanism&#34;&gt;Section 3&lt;/a&gt;). After a 1-second pause, we send 100
UDP packets in the same flow containing a fixed innocuous
payload of 1,111 bytes. This process is repeated for 1000
different source-destination port pairs. We mark a connection as
permitted (evaded censorship) if the server (USVP) receives the
QUIC Initial packet and 95% or more of the packets that
follow.
&lt;/p&gt;
&lt;!--l. 64--&gt;&lt;p class=&#34;indent&#34; &gt;  In the stressing part, we use the StressVP to send two types of
traffic in varying sending rates (from 100kpps to 1500kpps, in
100kpps increments for seven minutes each and spaced by a
three-minute pause) towards the IPv4 addresses in the /14
network prefix in which the ChinaVP is hosted. Our goal is to
send enough traffic to stress the GFW without impacting the
network link or routers. By choosing a large network to
send over, the impact of our traffic is diluted for individual
hosts.                                                 &lt;/p&gt;
&lt;!--l. 73--&gt;&lt;p class=&#34;indent&#34; &gt;    Furthermore, to avoid having our stressing packets reach
     end-hosts, we estimate the hop-distance between the IPs
     in the /14 and StressVP. We run TTL-limited DNS scans
     using ZMap to resolve &lt;span
class=&#34;cmtt-10&#34;&gt;example.com &lt;/span&gt;on the entire /14. We
     approximate the hop-distance of each IP from StressVP by
     the cessation of DNS resolutions we receive from the 164
     DNS servers in the /14. We then set our TTL value for our
     stressing packets we send from the StressVP to one less
     than the smallest (closest) hop-distance DNS server in the
     /14.
     &lt;/p&gt;
&lt;!--l. 84--&gt;&lt;p class=&#34;indent&#34; &gt;    During the stressing part, we send two types of (TTL-limited)
     traffic past the GFW: QUIC Initial packets, and UDP packets
     with a fixed payload generated at random. For QUIC packets, we
     use the same QUIC Initial payload sent between ChinaVP and
     USVP containing a forbidden SNI to trigger the GFW’s
     censorship. For the random payload we use innocuous bytes with
     the same length as the QUIC payload. We use ZMap &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:zmap&#34;&gt;23&lt;/a&gt;]&lt;/span&gt; to
     send each of these payloads and configure the sending rate such
     that we send on average no more than 6 &lt;span
class=&#34;ptmri8t-&#34;&gt;pps &lt;/span&gt;to each IP in the
     /14.
     &lt;/p&gt;
&lt;!--l. 109--&gt;&lt;p class=&#34;indent&#34; &gt;  Our experiment consists of sending (TTL-limited) QUIC
Initial packets from our StressVP to the /14 of ChinaVP. This is
repeated three times on different days, once in an ascending order
and twice in a shuffled order of sending rates. Simultaneously,
we measure from ChinaVP to USVP the fraction of permitted
connections. We then repeat the experiment three times (not
coinciding with QUIC stressing), but send a random payload
instead of QUIC Initial packets and measure the fraction of
permitted connections. &lt;a href=&#34;#fig:8-stressing-rates&#34;&gt;Figure 8&lt;/a&gt; shows the impact of our
experiment (averaged) on the GFW. As we increase the rate of
QUIC Initial packets, the GFW is less able to censor connections
between ChinaVP and USVP. We also do not see this pattern
when sending random payloads, meaning that the degradation
is only due to processing QUIC payloads, and not due to
network volume degrading the network, as further supported
by our network monitoring. Note that all the experiments
were conducted in the early morning hours in China, during
which the GFW is more effective at censoring QUIC traffic
(see &lt;a href=&#34;#fig:8-stressing-rates&#34;&gt;Figure 4&lt;/a&gt;).
&lt;/p&gt;
&lt;div class=&#39;figure&#39;&gt;
     &lt;p class=&#39;noindent&#39; id=&#39;fig:8-stressing-rates&#39;&gt;
     &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/stressing-rates.png&#39; /&gt;
     &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:8-stressing-rates&#34;&gt;Figure 8&lt;/a&gt;:  We stress-test the GFW by sending two types of
          equal-length packets at 0–1500 Kpps: QUIC Initial packets
          containing a forbidden SNI (Censored Stressing) and UDP
          packets  containing  a  random  payload  (Random  Stressing).
          We  measure  the  effectiveness  of  QUIC  censorship  during
          this  test  by  sending  (at  a  fixed  rate)  QUIC  Initial  packets
          followed   by   100   data   packets,   mimicking   1000   QUIC
          connections from a vantage point in China to a vantage point
          in  the  US  and  calculating  the  fraction  of  connections  the
          GFW  fails  to  censor  (Censored  Traffic).  The  GFW  is  less
          effective at censoring our measurement QUIC connections
          as  we  increase  the  number  of  QUIC  Initial  packets  we
          stress-test  with,  increasing  the  difficulty  on  the  GFW  to
          process  QUIC  packets.  We  ensure  our  test  impacts  only
          the  GFW  and  not  the  network  by  measuring  the  rate  of
          uncensored QUIC traffic (Egress/Ingress Control Traffic) to
          and from both vantage points during our test.
     &lt;/p&gt;
     &lt;/p&gt;
&lt;/div&gt;
&lt;!--l. 125--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;Network Monitoring.   &lt;/span&gt;While we run our experiment, we
monitor the network between ChinaVP and USVP in two ways.
First, we send uncensored QUIC connections in both directions,
and monitor the fraction of packets received by both ends.
Second, we use ZMap to scan the /14 network on &lt;span
class=&#34;cmtt-10&#34;&gt;tcp/443 &lt;/span&gt;at a
slow rate (650 &lt;span
class=&#34;ptmri8t-&#34;&gt;pps&lt;/span&gt;), and measure the response rate in the
network. If either of these metrics decreases significantly during
our experiments, it may be due to a saturated network link,
indicating we must halt the experiment. Since we never observed
a decrease in either metric during our experiments, we believe
our experiments had negligible impact on networks and devices
beyond the GFW.
&lt;/p&gt;
&lt;!--l. 137--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;Reverse Engineering.   &lt;/span&gt;In addition to helping users evade
censorship, the degradation attack is also helpful in understanding
the GFW’s processing. For example, if a particular QUIC
payload can be used to degrade the GFW’s censorship
effectiveness, we know it has been processed at some level by the
GFW, even if that same payload is not blocked. On the other
hand, if a payload has no influence on the GFW, then it
is likely discarded prior to a computationally expensive
step.
&lt;/p&gt;
&lt;!--l. 146--&gt;&lt;p class=&#34;indent&#34; &gt;  &lt;a href=&#34;#tbl:3-experiment-characterization&#34;&gt;Table 3&lt;/a&gt; shows if each payload was successful in degrading the
GFW’s effectiveness to censor. We tested this by sending each
payload at 1200 Kpps, and observing if the fraction of permitted
censored connections exceeded 60%, indicating that the payload
had an impact on the GFW. These results suggest the GFW
processes all payloads with the default QUIC version, and that
even payloads that do not decrypt or have invalid authentication
tags can degrade the GFW. However, a valid tag is necessary to
trigger censorship, implying that the “slow” part of the GFW
is likely the cryptographic operations in decrypting the
payload.
&lt;/p&gt;
&lt;h2 class=&#34;sectionHead&#34; id=&#34;6&#34;&gt;
     &lt;a id=&#34;sec:6-availability-attack&#34; href=&#34;#sec:6-availability-attack&#34;&gt;
          &lt;span class=&#34;titlemark&#34;&gt;6.&lt;/span&gt; Availability Attack
     &lt;/a&gt;
&lt;/h2&gt;
     &lt;!--l. 3--&gt;&lt;p class=&#34;noindent&#34; &gt;Prior work has shown that residual censorship can sometimes be
     “weaponized” by attackers to conduct availability attacks &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Bock2021b&#34;&gt;8&lt;/a&gt;, &lt;a href=&#34;#cite:Bock2021a&#34;&gt;9&lt;/a&gt;]&lt;/span&gt;.
     In this type of attack, attacker sends a censorship-triggering
     request to Destination B, spoofing the source IP address to be
     from Victim A. If the request triggers residual blocking in a
     firewall between A and B, then the two hosts will be unable to
     communicate, as the firewall believes that Victim A sent a
     forbidden request. Residual censorship is commonly on the order
     of 1–3 minutes &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Bock2021a&#34;&gt;9&lt;/a&gt;, &lt;a href=&#34;#cite:Bock2020ESNI&#34;&gt;10&lt;/a&gt;, &lt;a href=&#34;#cite:Chai2019a&#34;&gt;11&lt;/a&gt;, &lt;a href=&#34;#cite:Hoang2024a&#34;&gt;37&lt;/a&gt;, &lt;a href=&#34;#cite:Wang2017a&#34;&gt;64&lt;/a&gt;, &lt;a href=&#34;#cite:Wu2023a&#34;&gt;66&lt;/a&gt;]&lt;/span&gt;, and an attacker can
     simply spoof additional triggering packets during or after the
     residual censorship expires to keep the victim and destination
     blocked.
     &lt;/p&gt;
&lt;!--l. 25--&gt;&lt;p class=&#34;indent&#34; &gt;    Our study represents the first known instance of the GFW
     implementing residual blocking for a UDP-based protocol. While
     the GFW has historically censored DNS traffic over UDP
     through spoofed packet injections, it has not employed packet
     dropping as a method of blocking for UDP-based protocols.
     However, the GFW’s new QUIC blocking mechanism employs
     packet-dropping in a way that introduces a new vector for
     availability attacks, impacting all of China. In particular, an
     attacker could use this availability attack to block UDP
     connections from hosts inside China from communicating with
     servers outside. For example, this attack could block all open or
     root DNS resolvers outside of China from being accessed from
     within China, leading to widespread DNS failures in the
     country.
     &lt;/p&gt;
&lt;!--l. 37--&gt;&lt;p class=&#34;indent&#34; &gt;    In this section, we investigate the practicality of this attack by
     performing it against our own hosts and servers.
     &lt;/p&gt;
&lt;!--l. 65--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;Attack Setup.   &lt;/span&gt;This attack requires the ability to spoof IP
     packets, which requires a server that is not limited by egress
     filtering. We obtained such a host from a public VPS provider,
     and verified that we can spoof IP packets and have them received
     within China. Inside China, we used a VPS under our control in
     Guangzhou, as this host experienced QUIC censorship both
     incoming and outgoing, meaning clients from outside China
     connecting to this server also experienced QUIC censorship. To
     simulate “victim” hosts, we acquired an AWS EC2 instance in
     each of the 32 regions that AWS operates in outside of
     China.
     &lt;/p&gt;
&lt;!--l. 77--&gt;&lt;p class=&#34;indent&#34; &gt;    For each EC2 instance, we sent a DNS query to our VPS in
     Guangzhou. We then measured if this request was received
     by our VPS, indicating that the connection was initially
     available.
     &lt;/p&gt;
&lt;!--l. 81--&gt;&lt;p class=&#34;indent&#34; &gt;    Next, from our attack machine capable of spoofing packets, we
     spoofed ten censored QUIC client Initial packets for each EC2
     instance to our VPS in China. These packets are designed to
     trigger the GFW’s residual censorship, between the EC2
     instances’s IP address and the IP:Port of the VPS in China. The
     path that these packets take to the VPS in China may differ
     significantly from the path that packets from the EC2 machine
     would take, meaning they may pass different GFW nodes,


rendering the attack ineffective. We sent these spoofed packets
every second.
&lt;/p&gt;
&lt;!--l. 91--&gt;&lt;p class=&#34;indent&#34; &gt;  Meanwhile, we measured the attack effectiveness from each
EC2 instance, sending a DNS request to the VPS in China every
five seconds. If the residual censorship was active on the path
between instance and VPS, the request would be blocked,
indicating a successful availability attack.
&lt;/p&gt;
&lt;div class=&#39;figure&#39;&gt;
     &lt;p class=&#39;noindent&#39; id=&#39;fig:9-affected_hosts&#39;&gt;
          &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/affected_hosts-.png&#39; /&gt;
               &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:9-affected_hosts&#34;&gt;Figure 9&lt;/a&gt;:  The map shows the locations of the EC2 instances
                    that were affected by the availability attack. Hosts that are
                    most  affected  are  shaded  in  red,  while  hosts  that  are  less
                    affected are shaded in green. The black point in China is the
                    location of the victim server and the black point in the US is
                    the location of the spoofing attack server.
               &lt;/p&gt;
     &lt;/p&gt;
&lt;/div&gt;
&lt;!--l. 169--&gt;&lt;p class=&#34;indent&#34; &gt;  &lt;a href=&#34;#tbl:6-region-packet-counts&#34;&gt;Table 6&lt;/a&gt; and &lt;a href=&#34;#fig:9-affected_hosts&#34;&gt;Figure 9&lt;/a&gt; show the locations of the EC2 instances
and the effects of the attack. Over half (17) of the 32 EC2
instances were heavily impacted by our attack. While some
packets still get through for heavily impacted hosts, we
find this is largely due to the timing of when the 3-minute
residual censorship expires. When it does, there is up to
one second before the next spoofing packet arrives to reblock the
instance. Sending faster or timing with the expiration improves
the blocking rate. We also observed that seven hosts were
affected approximately half the time, indicating that there may
be multiple network paths between a given instance and
VPS, and only some of those paths experienced the residual
censorship.
&lt;/p&gt;
&lt;div class=&#39;table-container&#39; id=&#39;tbl:6-region-packet-counts&#39;&gt;
     &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:6-region-packet-counts&#34;&gt;TABLE 6&lt;/a&gt;: Shows how many packets were received by the server from each AWS region. The availability attack ran for 30 minutes and a packet was sent by the real client every five seconds. The spoofing server was in the U.S. and the victim server was in Guangzhou, China. For each AWS host, the attack server sent ten spoofed QUIC client Initial packets, each in a new connection, every second.&lt;/p&gt;
     &lt;div class=&#39;tabular&#39;&gt;
       &lt;table class=&#39;tabular&#39; id=&#39;TBL-6&#39;&gt;
         &lt;colgroup id=&#39;TBL-6-1g&#39;&gt;
           &lt;col id=&#39;TBL-6-1&#39;/&gt;
           &lt;col id=&#39;TBL-6-2&#39;/&gt;
           &lt;col id=&#39;TBL-6-3&#39;/&gt;
           &lt;col id=&#39;TBL-6-4&#39;/&gt;
         &lt;/colgroup&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Continent/Region&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;City/Area&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;# Packets Received&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;% of 360&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Africa&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Cape Town&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;110&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;30.56%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Asia Pacific&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Hong Kong&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;360&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;100.00%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Asia Pacific&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Hyderabad&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;13&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;3.61%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Asia Pacific&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Jakarta&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;360&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;100.00%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Asia Pacific&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Malaysia&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;360&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;100.00%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Asia Pacific&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Melbourne&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;360&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;100.00%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Asia Pacific&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Mumbai&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;360&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;100.00%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Asia Pacific&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Osaka&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;145&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;40.28%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Asia Pacific&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Seoul&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;246&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;68.33%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Asia Pacific&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Singapore&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;360&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;100.00%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Asia Pacific&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Sydney&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;360&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;100.00%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Asia Pacific&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Thailand&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;360&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;100.00%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Asia Pacific&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Tokyo&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;229&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;63.61%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Canada&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Calgary&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;26&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;7.22%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Canada&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Central&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;13&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;3.61%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Europe&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Frankfurt&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;244&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;67.78%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Europe&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Ireland&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;16&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;4.44%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Europe&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;London&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;12&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;3.33%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Europe&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Milan&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;17&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;4.72%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Europe&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Paris&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;10&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;2.78%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Europe&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Spain&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;15&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;4.17%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Europe&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Stockholm&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;14&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;3.89%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Europe&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Zurich&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;17&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;4.72%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Israel&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Tel Aviv&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;18&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;5.00%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Mexico&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Central&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;13&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;3.61%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Middle East&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Bahrain&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;201&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;55.83%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Middle East&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;UAE&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;22&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;6.11%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;South America&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Sao Paulo&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;12&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;3.33%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;US East&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;N. Virginia&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;195&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;54.17%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;US East&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Ohio&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;21&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;5.83%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;US West&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;N. California&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;21&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;5.83%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;US West&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Oregon&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;19&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;5.28%&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
       &lt;/table&gt;
     &lt;/div&gt;
   &lt;/div&gt;

&lt;!--l. 186--&gt;&lt;p class=&#34;indent&#34; &gt;  The remaining eight instances were not affected at all, largely
in the Pacific region, suggesting that the spoofing location did not
share a network path with these hosts. We confirm that all 32
hosts were capable of triggering censorship when the censored
QUIC client Initial packet was sent directly from the real
client.
&lt;/p&gt;
&lt;!--l. 210--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;Defense.   &lt;/span&gt;Defending against this attack while still censoring is
difficult due to the stateless nature and ease of spoofing
UDP packets. One potential mitigation approach involves
only triggering censorship after detecting a corresponding
QUIC Server Hello and later client packets, ensuring that the
connection is live and not being spoofed from one end. However,
this approach has significant limitations. First, it necessitates
stateful tracking of connections, which imposes substantial
overhead on middleboxes. Furthermore, the inherent challenges
of asymmetric routing—where the client-to-server (C2S) and
server-to-client (S2C) paths differ—complicate the feasibility of
accurately tracking connections. If the paths are asymmetric, a
middlebox might fail to observe the Server Hello entirely,
potentially leaving the connection uncensored and vulnerable to
exploitation. Finally, an attacker could still spoof both sides of
the connection to trigger the blocking, making it an ineffective
defense.
&lt;/p&gt;
&lt;!--l. 232--&gt;&lt;p class=&#34;indent&#34; &gt;  Alternatively, the censor may employ an injection-based
blocking mechanism, avoiding packet-dropping based residual
censorship. However, this approach also has risks and constraints.
For instance, with the current latency associated with decryption
(shown in &lt;a href=&#34;#fig:2-how-fast-the-gfw-blocks&#34;&gt;Figure 2&lt;/a&gt;), a QUIC Server Initial could reach the
client and establish a shared secret, before the injected packet
arrives, rendering the injection ineffective.
&lt;/p&gt;
&lt;!--l. 244--&gt;&lt;p class=&#34;indent&#34; &gt;  Defending against this attack is uniquely challenging in QUIC,
because the protocol is designed to resist injection-based
teardown attacks, motivating the need for residual censorship. At
the same time, the connectionless nature of UDP makes spoofing
the client Initial trivial, opening the door for availability attacks
when residual censorship is employed. Careful engineering will
be needed to allow censors to apply targeted blocks in QUIC,
while simultaneously preventing availability attacks.
&lt;/p&gt;
&lt;h2 class=&#34;sectionHead&#34; id=&#34;7&#34;&gt;
     &lt;a id=&#34;sec:7-circumvention&#34; href=&#34;#sec:7-circumvention&#34;&gt;
          &lt;span class=&#34;titlemark&#34;&gt;7.&lt;/span&gt; Circumvention
     &lt;/a&gt;
&lt;/h2&gt;
     &lt;!--l. 12--&gt;&lt;p class=&#34;noindent&#34; &gt;As described in &lt;a href=&#34;#sec:3.2-flow-tracking-logic&#34;&gt;Section 3.2&lt;/a&gt;, the GFW makes several
     simplifying assumptions to efficiently parse and block QUIC
     traffic at line speed. These design choices again demonstrate
     that the designers and developers of the GFW follow the
     “worse-is-better” philosophy &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:worse-is-better&#34;&gt;31&lt;/a&gt;]&lt;/span&gt;. Such assumptions come at
     the cost of reducing the censorship system’s accuracy and
     robustness, which opens up opportunities for circumvention. We
     responsibly disclosed circumvention strategies we identified to
     the anti-censorship and open-source communities.
     &lt;/p&gt;
&lt;!--l. 31--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;Use Source Port &amp;#x003C;= Destination Port.   &lt;/span&gt;As detailed
     in &lt;a href=&#34;#sec:3.4-diurnal-blocking-pattern&#34;&gt;Section 3.4&lt;/a&gt;, the GFW focuses on client-to-server traffic by
     ignoring UDP datagrams whose &lt;span
class=&#34;zptmcmrm-&#34;&gt;srcport &amp;#x003C;&lt;/span&gt;&lt;span
class=&#34;zptmcmr-&#34;&gt;= &lt;/span&gt;&lt;span
class=&#34;zptmcmrm-&#34;&gt;dstport&lt;/span&gt;. A stopgap
     solution to bypass this blocking is to use destination ports that
     are higher than or equal to the source port. For the case of
     circumvention proxies, one may run the server on a port higher
     than or equal to the client’s ephemeral port range. Web services
     could also be run on non-standard higher ports, and provide
     these to web clients via &lt;span
class=&#34;cmtt-10&#34;&gt;Alt-Svc &lt;/span&gt; fields in HTTP headers or in
     DNS HTTPS records. An easy and application-independent
     way to listen on a higher port is to use iptables rules to
     redirect all traffic sent to a higher port (e.g. 65535) to the
     current listening port (e.g. 443) using &lt;span
class=&#34;cmtt-10&#34;&gt;iptables -t nat -A&lt;/span&gt;
  &lt;span
class=&#34;cmtt-10&#34;&gt;PREROUTING -p udp --dport 65535 -j REDIRECT&lt;/span&gt;
  &lt;span
class=&#34;cmtt-10&#34;&gt;--to-port 443&lt;/span&gt;. This is especially useful for software that
     cannot change its listening port or cannot listen on multiple
     ports.
     &lt;/p&gt;
&lt;!--l. 60--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;Precede QUIC Client Initial With Any UDP Datagram.   &lt;/span&gt;The
     GFW’s QUIC censorship mechanism relies on the assumption
     that the QUIC client Initial is the first packet in a new flow. A
     simple way to bypass this is to precede the client Initial
     with a UDP datagram with a random payload. For a real
     QUIC server, the first UDP datagram will be ignored, but the
     GFW will not be able to parse the SNI value from the first
     packet and exempt the flow. The subsequent client Initial
     packets will not be inspected and the connection will be
     established. We confirmed this defense works against the GFW
     to exempt connections from blocking by sending a UDP
     datagram with random payload before the QUIC client Initial.
     We also tested against the Chromium Quiche &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:google_quiche_2025&#34;&gt;35&lt;/a&gt;]&lt;/span&gt; QUIC
     server implementation to verify it ignores random UDP
     payloads.
     &lt;/p&gt;
&lt;!--l. 76--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;Connection Migration.   &lt;/span&gt;QUIC’s connection migration
     capability leverages connection IDs to maintain sessions across
     network changes. The GFW employs a selective filtering
     strategy: it permits the initial QUIC packet but blocks subsequent
     packets from client to server, while not monitoring connection
     IDs. Since server-to-client packets remain unblocked, clients that
     complete 1-RTT handshakes before the blocking is activated
     and then migrate to a different network 4-tuple (source IP,
     source port, destination IP, destination port) can bypass the


GFW.
&lt;/p&gt;
&lt;!--l. 83--&gt;&lt;p class=&#34;indent&#34; &gt;  A related approach is presented in QUICstep &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:jia2023quicstepcircumventingquicbasedcensorship&#34;&gt;44&lt;/a&gt;]&lt;/span&gt;, which
introduces a connection migration technique designed to
circumvent QUIC censorship. This method exploits QUIC’s
connection migration capability by performing the QUIC
handshake over a secure channel, which may have low bandwidth
and high latency. After successfully completing the handshake,
the connection migrates to a regular communication channel so
that all data is fully encrypted.
&lt;/p&gt;
&lt;!--l. 91--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;QUIC Client Initial Fragmentation.   &lt;/span&gt;A QUIC client Initial
message can be sent either as multiple UDP datagrams
or as a single UDP datagram containing multiple QUIC
frames. As of January 2025, the GFW does not reassemble
a TLS Client Hello when it is split across multiple UDP
datagrams or fragmented into multiple QUIC frames within a
single UDP datagram. This behavior can be leveraged to
circumvent the GFW’s QUIC censorship by splitting the SNI
across multiple QUIC &lt;span
class=&#34;cmtt-10&#34;&gt;CRYPTO &lt;/span&gt;frames in the client Initial
message.
&lt;/p&gt;
&lt;!--l. 100--&gt;&lt;p class=&#34;indent&#34; &gt;  Notably, Chrome’s Chaos Protection mechanism &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:chaos-protection-quiche2025&#34;&gt;19&lt;/a&gt;]&lt;/span&gt;,
introduced in 2021, disperses the QUIC client Initial message
into multiple QUIC frames that are shuffled across the UDP
datagrams. Additionally, Chrome (since version 124 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:chrome124relnotes&#34;&gt;12&lt;/a&gt;]&lt;/span&gt;)
supports post-quantum key agreement in TLS 1.3, that enables
the use of ML-KEM and Kyber keys. Enabling this feature
fragments the QUIC client Initial into multiple UDP datagrams
due to the larger key size exceeding the maximum QUIC packet
size. These features happen to exploit the GFW’s inability to
reassemble fragmented QUIC client Initial packets, allowing
Chrome packets to bypass the GFW’s QUIC censorship.
&lt;/p&gt;
&lt;!--l. 132--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;Encrypted Client Hello (ECH).   &lt;/span&gt;ECH &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:ietf-tls-esni-24&#34;&gt;51&lt;/a&gt;]&lt;/span&gt; allows a
client to encrypt part of their TLS Client Hello message to a
server with a key obtained via DNS HTTPS record. The SNI
extension is thus encrypted, allowing a client to hide it from
a censor. Unlike QUIC’s client Initial encryption, ECH
encryption is asymmetric and cannot be decrypted by a network
observer.
&lt;/p&gt;
&lt;!--l. 151--&gt;&lt;p class=&#34;indent&#34; &gt;  A censor could choose to block all ECH-containing payloads.
However, modern browsers have started to send “dummy” ECH
payloads in TLS, even when a server does not support it. As of
January 2025, the GFW does not block QUIC payloads that
contain ECH, unless the outer (decryptable) SNI is to a blocked
domain.
&lt;/p&gt;
&lt;!--l. 170--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;Version Negotiation.   &lt;/span&gt;QUIC’s version negotiation &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:rfc9000&#34;&gt;43&lt;/a&gt; §6]&lt;/span&gt;
mechanism presents an interesting circumvention opportunity.
This process typically begins when a server receives an Initial
packet with an unsupported version number. In response, the
server sends a Version Negotiation packet and waits for the client
to submit a new Initial packet using a supported version. A client
can strategically exploit this mechanism by deliberately sending
an Initial packet with an unknown version, making the payload of
the first packet undecryptable. As a result, subsequent packets in
the connection flow are able to bypass the GFW’s filtering         mechanisms. The client can then proceed with the handshake
     using a supported version, effectively circumventing the
     censorship measures.
     &lt;/p&gt;
&lt;!--l. 183--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;Are “Stopgap” Solutions Worth Deploying?   &lt;/span&gt;While many of
     these solutions opportunistically exploit implementation details
     in the GFW, it may not be trivial for China to patch all of these,
     due to resource constraints and other priorities &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:cat-and-mouse&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;. In past
     work, we have seen similar stopgap solutions work for multiple
     years against censors &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Wu2023a&#34;&gt;66&lt;/a&gt; §8.3]&lt;/span&gt;. On the other hand, many of
     these circumvention strategies can be easily deployed by
     QUIC-using proxies and circumvention tools, who do not face
     the same kinds of bureaucratic constraints &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:cat-and-mouse&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;.
     &lt;/p&gt;
&lt;!--l. 197--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;Responsible Disclosure.    &lt;/span&gt;We shared our findings on China’s
     QUIC censorship and the circumvention strategies with the
     anti-censorship and open-source communities. In specific, we
     contacted the developers of Mozilla Firefox &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:MozillaFirefox&#34;&gt;48&lt;/a&gt;]&lt;/span&gt;, Mozilla
     Neqo library &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:MozillaNeqo2025&#34;&gt;49&lt;/a&gt;]&lt;/span&gt;, quic-go library &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:quic-go-release&#34;&gt;53&lt;/a&gt;]&lt;/span&gt;, Lantern &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:lantern&#34;&gt;18&lt;/a&gt;]&lt;/span&gt;,
     Hysteria &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:hysteria&#34;&gt;39&lt;/a&gt;]&lt;/span&gt;, TUIC &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:tuic&#34;&gt;59&lt;/a&gt;]&lt;/span&gt;, sing-box &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:sing-box&#34;&gt;54&lt;/a&gt;]&lt;/span&gt;, V2Ray &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:v2ray&#34;&gt;61&lt;/a&gt;]&lt;/span&gt;, and
     Xray &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:xray&#34;&gt;68&lt;/a&gt;]&lt;/span&gt;.
     &lt;/p&gt;
&lt;!--l. 218--&gt;&lt;p class=&#34;indent&#34; &gt;
     Prior to our responsible disclosure to Mozilla,
     the SNI-slicing feature (implemented through client Initial Fragmentation)
     had already been included in the Neqo v0.12.0 release on January 27, 2025
     for protocol greasing &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:neqo_pr2228_2024&#34;&gt;24&lt;/a&gt;, &lt;a href=&#34;#cite:neqo_v0_12_0_release&#34;&gt;50&lt;/a&gt;]&lt;/span&gt;.
     Mozilla Firefox integrated this feature and enabled it by default
     in version 137 on April 30, 2025 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:neqo_pr2228_2024&#34;&gt;24&lt;/a&gt;, &lt;a href=&#34;#cite:bugzilla_1942325&#34;&gt;47&lt;/a&gt;]&lt;/span&gt;
     (configurable via the &lt;span class=&#34;cmtt-10&#34;&gt;network.http.http3.sni-slicing &lt;/span&gt;parameter in the
     &lt;span class=&#34;cmtt-10&#34;&gt;about:config &lt;/span&gt;page),
     leading to an inadvertent bypass of the GFW&#39;s QUIC SNI-based censorship.
     &lt;/p&gt;

     &lt;div class=&#39;table-container&#39; id=&#39;tbl:7-integration-timeline&#39;&gt;
&lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:7-integration-timeline&#34;&gt;TABLE 7&lt;/a&gt;: Integration timeline for quic-go v0.52.0 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:quic-go-release&#34;&gt;53&lt;/a&gt;]&lt;/span&gt;. Following its release on May 23, 2025, popular circumvention tools updated their dependency, which enables SNI slicing by default to bypass GFW’s QUIC SNI-based censorship.&lt;/p&gt;
     &lt;div class=&#39;tabular&#39;&gt;
          &lt;table class=&#39;tabular&#39; id=&#39;TBL-7&#39;&gt;
          &lt;colgroup&gt;&lt;col id=&#39;TBL-7-1&#39;/&gt;&lt;col id=&#39;TBL-7-2&#39;/&gt;&lt;col id=&#39;TBL-7-3&#39;/&gt;&lt;col id=&#39;TBL-7-4&#39;/&gt;&lt;/colgroup&gt;
          &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;
               &lt;td class=&#39;td11&#39; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Project&lt;/td&gt;
               &lt;td class=&#39;td11&#39; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Version&lt;/td&gt;
               &lt;td class=&#39;td10&#39; colspan=&#34;2&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;&lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Release Date&lt;/div&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;
               &lt;td class=&#39;td11&#39; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;sing-box&lt;/td&gt;
               &lt;td class=&#39;td11&#39; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;1.12.0-beta.17&lt;/td&gt;
               &lt;td class=&#39;td10&#39; colspan=&#34;2&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;&lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;May 22, 2025 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:singbox_release_1_12_0_beta_17&#34;&gt;55&lt;/a&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;
               &lt;td class=&#39;td11&#39; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;V2Ray&lt;/td&gt;
               &lt;td class=&#39;td11&#39; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;5.33.0&lt;/td&gt;
               &lt;td class=&#39;td10&#39; colspan=&#34;2&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;&lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;May 26, 2025 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:v2ray_release_5_33_0&#34;&gt;62&lt;/a&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;
               &lt;td class=&#39;td11&#39; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Xray&lt;/td&gt;
               &lt;td class=&#39;td11&#39; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;25.6.8&lt;/td&gt;
               &lt;td class=&#39;td10&#39; colspan=&#34;2&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;&lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;June 6, 2025 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:xray_release_25_6_8&#34;&gt;69&lt;/a&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;
               &lt;td class=&#39;td11&#39; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Hysteria&lt;/td&gt;
               &lt;td class=&#39;td11&#39; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;2.6.2&lt;/td&gt;
               &lt;td class=&#39;td10&#39; colspan=&#34;2&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;&lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;June 7, 2025 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:hysteria_release_2_6_2&#34;&gt;40&lt;/a&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
          &lt;/table&gt;
     &lt;/div&gt;
&lt;/div&gt;

&lt;!--l. 244--&gt;&lt;p class=&#34;indent&#34; &gt;  The quic-go library introduced SNI-slicing in its v0.52.0
release &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:quic-go-release&#34;&gt;53&lt;/a&gt;]&lt;/span&gt; on May 23, 2025 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:quic-go-release&#34;&gt;53&lt;/a&gt;]&lt;/span&gt;. As summarized
in &lt;a href=&#34;#tbl:7-integration-timeline&#34;&gt;Table 7&lt;/a&gt;, this update allows circumvention tools that
depend on quic-go to bypass the GFW’s QUIC SNI-based
censorship.
&lt;/p&gt;

&lt;!--l. 282--&gt;&lt;p class=&#34;indent&#34; &gt;  As of June 2025,
     we are working with a major open-source web browser to integrate a complementary circumvention technique (prepending dummy payload before the handshake) for more resilience against the GFW.
&lt;/p&gt;
&lt;h2 class=&#34;sectionHead&#34; id=&#34;8&#34;&gt;
     &lt;a id=&#34;sec:8-discussion&#34; href=&#34;#sec:8-discussion&#34;&gt;
          &lt;span class=&#34;titlemark&#34;&gt;8.&lt;/span&gt; Discussion
     &lt;/a&gt;
&lt;/h2&gt;
&lt;!--l. 4--&gt;&lt;p class=&#34;noindent&#34; &gt;Our findings raise two crucial questions about the GFW’s
blocking of QUIC connections: (1) its impact on regular web
traffic, and (2) its implications for QUIC-based proxying. When
accessing websites, browsers will first connect to servers using
HTTP(S)-over-TCP, and only attempt to use QUIC if the server
announces to support it (via the Alternate Service header).
Consequently, the HTTP Host-based and TLS SNI-based
blocking are still the primary mechanisms for blocking web
traffic, and only when a website is not censored by these two
mechanisms will the GFW’s QUIC blocking come into play. The
GFW’s QUIC blocking essentially acts as a secondary censorship
mechanism for web traffic.
&lt;/p&gt;
&lt;!--l. 19--&gt;&lt;p class=&#34;indent&#34; &gt;  Focusing on QUIC-based proxies, the growing popularity
of tools like Hysteria &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:hysteria&#34;&gt;39&lt;/a&gt;]&lt;/span&gt; and ongoing standardization
efforts—particularly by the IETF’s MASQUE &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:ietf-masque-working-group&#34;&gt;41&lt;/a&gt;]&lt;/span&gt; working
group—shows the protocol’s future potential for VPNs and
proxies. QUIC’s flow-controlled and multiplexed streams, rapid
connection establishment, and support for connection migration
offer significant performance gains. By using unprompted
authentication in HTTP/3 servers, QUIC tunnels can reside in
mainstream HTTP/3 traffic and potentially elude detection even
through active probing. However, our results show that the
GFW’s SNI-based filtering undermines these advantages early in
the handshake process, effectively blocking many QUIC proxies
at the outset.
&lt;/p&gt;
&lt;!--l. 32--&gt;&lt;p class=&#34;indent&#34; &gt;  A clear example is Cloudflare’s WARP VPN, which recently
started using MASQUE &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:warp-supports-masque&#34;&gt;17&lt;/a&gt;]&lt;/span&gt; (HTTP/3-over-QUIC proxying)
to tunnel traffic. We discovered that the subdomain used
for MASQUE was blocked by the GFW, disrupting the
VPN client’s startup handshake. This pattern signals an
explicit targeting of MASQUE proxies by the GFW. Similarly,
Hysteria faces a situation where not only its main project
domain &lt;span
class=&#34;cmtt-10&#34;&gt;v2.hysteria.network &lt;/span&gt;is blocked, but users’ custom
domains used for Hysteria proxies are also blocked.
&lt;/p&gt;
&lt;h2 class=&#34;sectionHead&#34; id=&#34;9&#34;&gt;
     &lt;a id=&#34;sec:9-conclusion&#34; href=&#34;#sec:9-conclusion&#34;&gt;
          &lt;span class=&#34;titlemark&#34;&gt;9.&lt;/span&gt; Conclusion
     &lt;/a&gt;
&lt;/h2&gt;
        &lt;!--l. 5--&gt;&lt;p class=&#34;noindent&#34; &gt;In response to the GFW’s QUIC SNI-based censorship from
     April 7, 2024, we conducted measurement experiments
     to characterize, monitor, expose, and bypass it. We show
     this new blocking mechanism can be exploited to block
     arbitrary UDP traffic between hosts inside and outside China.
     We also propose an off-path circumvention strategy which
     reduces the GFW’s effectiveness with moderate traffic loads.
     We collaborate with various open-source communities to
     integrate circumvention strategies into a major web browser, the
     quic-go library, and all major QUIC-based circumvention
     tools.

     &lt;/p&gt;
&lt;h2 class=&#34;sectionHead&#34; id=&#34;acknowledgments&#34;&gt;
     &lt;a id=&#34;sec:acknowledgments&#34; href=&#34;#sec:acknowledgments&#34;&gt;
          &lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; Acknowledgments
     &lt;/a&gt;
&lt;/h2&gt;
     &lt;!--l. 3--&gt;&lt;p class=&#34;noindent&#34; &gt;We thank the anonymous shepherd and reviewers for their
     valuable feedback. Our research was initiated by brave Chinese
     users who first reported the QUIC censorship, and we are deeply
     grateful for their courage. We extend our special thanks to the
     anonymous RQWDKM, who conducted initial measurements
     and investigation with us, participated in discussions, and
     provided detailed feedback on this paper.
     &lt;/p&gt;
&lt;!--l. 13--&gt;&lt;p class=&#34;indent&#34; &gt;
     We are indebted to the many people at Mozilla Neqo and
     Firefox teams for their invaluable discussions and support.
     &lt;/p&gt;
&lt;!--l. 25--&gt;&lt;p class=&#34;indent&#34; &gt;We also thank the developers and contributors of
     Hysteria, Lantern, sing-box, TUIC, V2Ray, and Xray, for
     providing online discussion spaces and for their rapid adoption of
     circumvention strategies.
     &lt;/p&gt;
&lt;!--l. 38--&gt;&lt;p class=&#34;indent&#34; &gt;    Finally, we are grateful to the following individuals, along
     with many others who prefer to remain anonymous, for their
     support, feedback, and insightful discussions: Bill Marczak,
     David Fifield, Jeffrey Knockel, Juraj Somorovsky,
     klzgrad, nekohasekai, Nick Sullivan, Niklas Niere,
     and Prateek Mittal.
     &lt;/p&gt;
&lt;!--l. 54--&gt;&lt;p class=&#34;indent&#34; &gt;    This work was partially supported by the U.S. National
     Science Foundation (NSF) under grant number CNS-2145783,
     until the award was prematurely terminated as part of the
     agency’s shift in priorities &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:nsf-shift&#34;&gt;30&lt;/a&gt;]&lt;/span&gt;, significantly impacting
     ongoing research efforts.
     &lt;/p&gt;
&lt;!--l. 60--&gt;&lt;p class=&#34;indent&#34; &gt;    The work was also supported in part by the NSF under grant
     numbers CNS-2319080 and CNS-2333965, by a Sloan Research
     Fellowship, and by the Young Faculty Award program of the
     Defense Advanced Research Projects Agency (DARPA) under
     the grant DARPA-RA-21-03-09-YFA9-FP-003. The views,


opinions, and/or findings expressed are those of the authors
and should not be interpreted as representing the official
views or policies of the Department of Defense or the U.S.
Government.
&lt;/p&gt;
&lt;h2 class=&#34;sectionHead&#34; id=&#34;ethics-considerations&#34;&gt;
     &lt;a id=&#34;sec:ethics-considerations&#34; href=&#34;#sec:ethics-considerations&#34;&gt;
          &lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; Ethics Considerations
     &lt;/a&gt;
&lt;/h2&gt;

&lt;!--l. 4--&gt;&lt;p class=&#34;noindent&#34; &gt;There are two major ethical considerations in our work: the
potential harm of our experiments on network infrastructure and
the disclosure of uncovered weaknesses.
&lt;/p&gt;
&lt;!--l. 13--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;Availability Attack.   &lt;/span&gt;In &lt;a href=&#34;#sec:6-availability-attack&#34;&gt;Section 6&lt;/a&gt;, we demonstrated that the
GFW could be co-opted to conduct an availability attack against
arbitrary Internet hosts. We demonstrated this attack against our
own servers to limit the risk of unforeseen collateral harm during
our experiments. While the attack does involve spoofing IP
packets, the only IP addresses we pretended to be were under our
control already. The result of this attack is that for a brief
duration, our own EC2 instances were unable to communicate
with our server in China.
&lt;/p&gt;
&lt;!--l. 29--&gt;&lt;p class=&#34;indent&#34; &gt;  We also analyze our work under the lens of two ethical
frameworks suggested by prior work on computer security and
ethics &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:kohno2023ethical&#34;&gt;45&lt;/a&gt;]&lt;/span&gt;. From a consequentialist ethical perspective,
there is negligible risk of harm from this attack. From a
deontological view, the choice of attacking only our own
hosts limits the involvement of others, and thus our duty to
others.
&lt;/p&gt;
&lt;!--l. 55--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;GFW Degradation Attack.   &lt;/span&gt;In &lt;a href=&#34;#sec:5-gfw-degradation-attack&#34;&gt;Section 5&lt;/a&gt;, we introduced a
method to degrade the GFW’s ability to block QUIC connections
by sending a large number of QUIC Initial packets. There are
several risks associated with this experiment that influenced our
experiment design. First, we considered whether it is morally
justified to disrupt the GFW, a system that is itself a source of
harm &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Fan2025a&#34;&gt;28&lt;/a&gt; §9.c]&lt;/span&gt; &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Fan2025a&#34;&gt;28&lt;/a&gt; §9.B]&lt;/span&gt; &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Anderson2012b&#34;&gt;3&lt;/a&gt;, &lt;a href=&#34;#cite:InternetSociety2023&#34;&gt;42&lt;/a&gt;]&lt;/span&gt;, as acknowledged even
by its creators &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Yan2006a&#34;&gt;71&lt;/a&gt; §1]&lt;/span&gt;. On the one hand, the GFW is not a
system we control and disrupting it could have negative
or unseen consequences. On the other hand, causing the
GFW to fail to censor provides a benefit to Chinese users,
as their Internet is otherwise restricted in opposition to
their human rights &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:unhrc2016internet&#34;&gt;60&lt;/a&gt;]&lt;/span&gt;. These considerations led us to
conclude that as long as the risk to systems beyond the
GFW was minimal, disrupting the GFW itself was morally
justified.
&lt;/p&gt;
&lt;!--l. 73--&gt;&lt;p class=&#34;indent&#34; &gt;  However, it is vitally important to consider the risk to other
systems. For example, if disrupting the GFW caused &lt;span
class=&#34;ptmri8t-&#34;&gt;all &lt;/span&gt;traffic to
be dropped, our experiment would risk interfering with normal
Internet communications between China and the rest of the
world. Indeed, while our analysis in &lt;a href=&#34;#sec:3.1-quic-connection-blocking&#34;&gt;Section 3.1&lt;/a&gt; suggests that
the GFW’s QUIC censorship is not purely in-path, we still
worried that its in-path element might impact all traffic.
However, our observation of the diurnal pattern of censorship
effectiveness gave us strong evidence that this was not the case.  During the day when QUIC connection volumes are high, the
  GFW is able to block only a small fraction of connections
  (&lt;a href=&#34;#fig:4-diurnal-timeseries-three-sources&#34;&gt;Figure 4&lt;/a&gt;), but uncensored QUIC and other types of traffic
  remain unaffected.
  &lt;/p&gt;
&lt;!--l. 92--&gt;&lt;p class=&#34;indent&#34; &gt;  Finally, we considered the risk that our experiments could
  disrupt the network itself. Since we send a large number of
  QUIC packets, there was the possibility of overwhelming a
  network link or destination. We took several steps to mitigate
  this risk. First, we limited our sending rate to 1.5 million
  packets/second, which consumes under 4 Gbps of bandwidth.
  We confirmed that our connection to upstream Internet
  providers was at least 40 Gbps, and transnational links
  are typically 100 Gbps or multi-Tbps, meaning our traffic
  would be only a small fraction of their capacity. Second, we
  limited the TTL of packets to ensure that they would pass the
  GFW but not reach the destination network. This approach
  limits the impact to only large core Internet links which can
  easily handle this relatively minor traffic volume. Third, we
  continuously monitored several health metrics across the
  networks we tested, including ZMap scans and bidirectional
  connectivity tests. We observed no network degradation during
  our experiments, indicating that we did not overwhelm the
  network.
  &lt;/p&gt;
&lt;!--l. 110--&gt;&lt;p class=&#34;indent&#34; &gt;  From a deontological perspective &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:unhrc2016internet&#34;&gt;60&lt;/a&gt; §4.1]&lt;/span&gt;, we must
  consider the rights of others (e.g. Internet users in China), as well
  as our intentions during the study. From this view, our research
  methodology confronts a direct conflict between two moral
  duties. On the one hand, we are obligated to avoid (potentially)
  interfering with the network resources of others. On the
  other hand, our experiments also fulfill a duty to prevent an
  ongoing harm: namely, the censorship of the GFW. We
  argue that the latter constitutes a higher moral imperative
  and thus decide to proceed with our experiments. From
  a consequential perspective &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:unhrc2016internet&#34;&gt;60&lt;/a&gt; §4.1]&lt;/span&gt;, we must weigh
  the benefits against the harms. The benefits are that our
  attacks reveal a way to restore users’ access to information,
  while minimizing the risk of harm to other networks and
  hosts.
  &lt;/p&gt;
&lt;!--l. 138--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;Disclosure.   &lt;/span&gt;Vulnerability disclosure is a standard practice for
  ethical security research, as it helps improve the system under
  study and to protect individuals impacted by the vulnerable
  system from attacks. In our case, disclosure is ethically
  complex because we are studying a system that would be
  harmful to improve (the GFW). On the other hand, it is
  important to protect Internet users that may be subject to
  attacks through vulnerabilities in the GFW. We carefully
  considered what—if any—vulnerabilities to disclose to
  protect users, but not improve the GFW’s ability to censor.
  Our goal is to maximize benefits by protecting users, while
  minimizing the risk of harm in “helping” China strengthen their
  censorship.
  &lt;/p&gt;
&lt;!--l. 153--&gt;&lt;p class=&#34;indent&#34; &gt;  Given these considerations, we decided to disclose the
  availability attack (&lt;a href=&#34;#sec:6-availability-attack&#34;&gt;Section 6&lt;/a&gt;) to the censor, as it can be used to
  harm users. On Jan. 22, 2025, we disclosed this vulnerability to


CNCERT and Fang Binxing—widely recognized as “the father
of the GFW” &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:goldkorn2013fang&#34;&gt;34&lt;/a&gt;]&lt;/span&gt;—and recommended that the vulnerable
QUIC censorship device be removed. A copy of the email is
included in &lt;a href=&#34;#app:appendix-c&#34;&gt;Appendix C&lt;/a&gt;. To ensure clarity, we contacted
the censors via an email in both English and Chinese, and
provided links to two private webpages (one in each language)
that detailed the attack. Although we did not receive any
response or formal acknowledgment, we observed a total
of 37 visits to the private English webpage (and none to
the Chinese version) between Jan. 24 and Feb. 24, 2025,
suggesting that our message was received. This lack of direct
engagement from CNCERT shows the challenge of vulnerability
disclosure with Internet censors &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Bock2021a&#34;&gt;9&lt;/a&gt; §VIII]&lt;/span&gt;. Chinese authorities
rarely admit the existence of censorship &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Streisand2023a&#34;&gt;57&lt;/a&gt;]&lt;/span&gt;, let alone
acknowledge its risks or consider dismantling their censorship
systems.
&lt;/p&gt;
&lt;!--l. 174--&gt;&lt;p class=&#34;indent&#34; &gt;  However, starting Mar. 13, 2025, we observed a change in the
GFW’s behavior: QUIC traffic originating from outside China
could no longer trigger the blocking. This change partially
mitigates the vulnerability, as the availability attack can no
longer be launched from outside China. It’s unclear whether this
change was due to our disclosure, though a similar change has
been observed in the past following a public disclosure of the
GFW’s ESNI censorship &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Bock2020ESNI&#34;&gt;10&lt;/a&gt;]&lt;/span&gt;.
&lt;/p&gt;
&lt;!--l. 182--&gt;&lt;p class=&#34;indent&#34; &gt;  Despite the mitigation, the availability attack remains viable if
launched within China. An attacker operating a machine in China
(without egress filtering) can still block arbitrary UDP flows
between a host in China and any destination outside China, if the
attacker’s network path traverses the same GFW node as the
victim’s. Since the Chinese censor is unlikely to remove the
QUIC censorship devices, which is the only way to fully mitigate
this vulnerability, our risk mitigation strategy centers on public
transparency. By publishing this paper, we hope to disclose and
publicize the vulnerability to raise broader awareness about the
security implications and potential harms of large-scale
censorship systems &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Fan2025a&#34;&gt;28&lt;/a&gt;]&lt;/span&gt;.
&lt;/p&gt;
&lt;!--l. 196--&gt;&lt;p class=&#34;indent&#34; &gt;  We chose not to inform the censor directly about the
degradation attack (&lt;a href=&#34;#sec:5-gfw-degradation-attack&#34;&gt;Section 5&lt;/a&gt;). Instead, we first privately
disclosed the vulnerability to anti-censorship communities,
followed by a public disclosure with this paper’s publication. We
chose this disclosure strategy because the degradation attack
affects only the GFW’s infrastructure, not users. A private
disclosure to the censor would have afforded them an opportunity
to strengthen their censorship mechanisms before the broader
anti-censorship community could become aware of and learn
from this vulnerability.
&lt;/p&gt;
&lt;!--l. 206--&gt;&lt;p class=&#34;indent&#34; &gt;  While publicizing this vulnerability might motivate the censor
to fix a weakness they likely already knew existed (now knowing
others are also aware), we believe the value of this public
disclosure outweighs such risks. By sharing these insights on
the censor’s weaknesses with a broader audience, we can
better inform future protocol designs and anti-censorship
strategies. For example, the QUIC Initial packet is designed to
be encrypted, despite being decryptable by middleboxes,          partly to complicate their ability to process it. The GFW’s
     QUIC censorship system struggled to keep pace with the
     decryption, demonstrating that even design choices that slightly
     raise the processing cost can still reduce a censor’s overall
     effectiveness &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:cat-and-mouse&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;.
     &lt;/p&gt;
&lt;!--l. 235--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;No Collection of PII. &lt;/span&gt;Our work does not involve human
     subjects, and we did not collect any personally identifiable
     information (PII) in any of our data.

     &lt;/p&gt;
&lt;h2 class=&#34;sectionHead&#34; id=&#34;open-science&#34;&gt;
     &lt;a id=&#34;sec:open-science&#34; href=&#34;#sec:open-science&#34;&gt;
          &lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; Open science
     &lt;/a&gt;
&lt;/h2&gt;
     &lt;!--l. 4--&gt;&lt;p class=&#34;noindent&#34; &gt;To encourage future work and maintain reproducibility, we have
     publicly released the code and data from our study. For broader
     accessibility, this paper is also available in HTML format in
     both English and Chinese. The project homepage is at:
&lt;a href=&#34;https://gfw.report/publications/usenixsecurity25/en/&#34; class=&#34;url&#34; &gt;&lt;span
class=&#34;cmtt-10&#34;&gt;https://gfw&lt;/span&gt;&lt;span
class=&#34;zptmcmrm-&#34;&gt;.&lt;/span&gt;&lt;span
class=&#34;cmtt-10&#34;&gt;report/publications/usenixsecurity25/en/&lt;/span&gt;&lt;/a&gt;.

     &lt;/p&gt;
     &lt;h2 class=&#34;sectionHead&#34; id=&#34;references&#34;&gt;
          &lt;a id=&#34;sec:references&#34; href=&#34;#sec:references&#34;&gt;References&lt;/a&gt;
      &lt;/h2&gt;
      &lt;div class=&#34;bibliography&#34;&gt;
          &lt;ol class=&#34;citation-numbering&#34;&gt;
              &lt;!-- 1 --&gt;
              &lt;li class=&#34;bibitem&#34;&gt;
                  &lt;a id=&#34;cite:chrome-kyber-update&#34;&gt;&lt;/a&gt;D. Adrian. A new path for kyber on the web. URL: &lt;a class=&#34;url&#34; href=&#34;https://security.googleblog.com/2024/09/a-new-path-for-kyber-on-web.html&#34;&gt;https://security.googleblog.com/2024/09/a-new-path-for-kyber-on-web.html&lt;/a&gt;.
              &lt;/li&gt;
              &lt;!-- 2 --&gt;
              &lt;li class=&#34;bibitem&#34;&gt;
                  &lt;a id=&#34;cite:Alice2020a&#34;&gt;&lt;/a&gt;Alice, Bob, Carol, J. Beznazwy, and A. Houmansadr. How China detects and blocks Shadowsocks. In Internet Measurement Conference. ACM, 2020. URL: &lt;a class=&#34;url&#34; href=&#34;https://censorbib.nymity.ch/pdf/Alice2020a.pdf&#34;&gt;https://censorbib.nymity.ch/pdf/Alice2020a.pdf&lt;/a&gt;.
              &lt;/li&gt;
              &lt;!-- 3 --&gt;
              &lt;li class=&#34;bibitem&#34;&gt;
                  &lt;a id=&#34;cite:Anderson2012b&#34;&gt;&lt;/a&gt;D. Anderson. Splinternet behind the Great Firewall of China: Once China opened its door to the world, it could not close it again. Queue, 10(11):40–49, November 2012. URL: &lt;a class=&#34;url&#34; href=&#34;https://queue.acm.org/detail.cfm?id=2405036&#34;&gt;https://queue.acm.org/detail.cfm?id=2405036&lt;/a&gt;, &lt;a class=&#34;url&#34; href=&#34;https://doi.org/10.1145/2390756.2405036&#34;&gt;doi:10.1145/2390756.2405036&lt;/a&gt;.
              &lt;/li&gt;
              &lt;!-- 4 --&gt;
              &lt;li class=&#34;bibitem&#34;&gt;
                  &lt;a id=&#34;cite:Anonymous2014a&#34;&gt;&lt;/a&gt;Anonymous. Towards a comprehensive picture of the Great Firewall’s DNS censorship. In Free and Open Communications on the Internet. USENIX, 2014. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci14/foci14-anonymous.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci14/foci14-anonymous.pdf&lt;/a&gt;.
              &lt;/li&gt;
              &lt;!-- 5 --&gt;
              &lt;li class=&#34;bibitem&#34;&gt;
                  &lt;a id=&#34;cite:cat-and-mouse&#34;&gt;&lt;/a&gt;Anonymous and Anonymous. Sharing a modified Shadowsocks as well as our thoughts on the cat-and-mouse game, October 2022. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/136&#34;&gt;https://github.com/net4people/bbs/issues/136&lt;/a&gt;.
              &lt;/li&gt;
              &lt;!-- 6 --&gt;
              &lt;li class=&#34;bibitem&#34;&gt;
                  &lt;a id=&#34;cite:Anonymous2020a&#34;&gt;&lt;/a&gt;Anonymous, A. A. Niaki, N. P. Hoang, P. Gill, and A. Houmansadr. Triplet censors: Demystifying Great Firewall’s DNS censorship behavior. In Free and Open Communications on the Internet. USENIX, 2020. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/foci20-paper-anonymous_0.pdf&#34;&gt;https://www.usenix.org/system/files/foci20-paper-anonymous_0.pdf&lt;/a&gt;.
              &lt;/li&gt;
              &lt;!-- 7 --&gt;
              &lt;li class=&#34;bibitem&#34;&gt;
                  &lt;a id=&#34;cite:rfc9114&#34;&gt;&lt;/a&gt;M. Bishop. HTTP/3. RFC 9114, June 2022. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.rfc-editor.org/info/rfc9114&#34;&gt;https://www.rfc-editor.org/info/rfc9114&lt;/a&gt;, &lt;a class=&#34;url&#34; href=&#34;https://doi.org/10.17487/RFC9114&#34;&gt;doi:10.17487/RFC9114&lt;/a&gt;.
              &lt;/li&gt;
              &lt;!-- 8 --&gt;
              &lt;li class=&#34;bibitem&#34;&gt;
                  &lt;a id=&#34;cite:Bock2021b&#34;&gt;&lt;/a&gt;K. Bock, A. Alaraj, Y. Fax, K. Hurley, E. Wustrow, and D. Levin. Weaponizing middleboxes for TCP reflected amplification. In USENIX Security Symposium. USENIX, 2021. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/sec21-bock.pdf&#34;&gt;https://www.usenix.org/system/files/sec21-bock.pdf&lt;/a&gt;.
              &lt;/li&gt;
              &lt;!-- 9 --&gt;
              &lt;li class=&#34;bibitem&#34;&gt;
                  &lt;a id=&#34;cite:Bock2021a&#34;&gt;&lt;/a&gt;K. Bock, P. Bharadwaj, J. Singh, and D. Levin. Your censor is my censor: Weaponizing censorship infrastructure for availability attacks. In Workshop on Offensive Technologies. IEEE, 2021. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.cs.umd.edu/~dml/papers/weaponizing_woot21.pdf&#34;&gt;https://www.cs.umd.edu/~dml/papers/weaponizing_woot21.pdf&lt;/a&gt;.
              &lt;/li&gt;
              &lt;!-- 10 --&gt;
              &lt;li class=&#34;bibitem&#34;&gt;
                  &lt;a id=&#34;cite:Bock2020ESNI&#34;&gt;&lt;/a&gt;K. Bock, iyouport, Anonymous, L.-H. Merino, D. Fifield, A. Houmansadr, and D. Levin. Exposing and circumventing China’s censorship of ESNI, August 2020. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/43\#issuecomment-673322409&#34;&gt;https://github.com/net4people/bbs/issues/43#issuecomment-673322409&lt;/a&gt;.
              &lt;/li&gt;
               &lt;!-- 11 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
               &lt;a id=&#34;cite:Chai2019a&#34;&gt;&lt;/a&gt;Z. Chai, A. Ghafari, and A. Houmansadr. On the importance of encrypted-SNI (ESNI) to censorship circumvention. In Free and Open Communications on the Internet. USENIX, 2019. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/foci19-paper_chai_update.pdf&#34;&gt;https://www.usenix.org/system/files/foci19-paper_chai_update.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 12 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:chrome124relnotes&#34;&gt;&lt;/a&gt;Chrome Developers. Chrome 124 — release notes, April 2024. URL: &lt;a class=&#34;url&#34; href=&#34;https://developer.chrome.com/release-notes/124&#34;&gt;https://developer.chrome.com/release-notes/124&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 13 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Clayton2006a&#34;&gt;&lt;/a&gt;R. Clayton, S. J. Murdoch, and R. N. M. Watson. Ignoring the Great Firewall of China. In Privacy Enhancing Technologies, pages 20–35. Springer, 2006. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.cl.cam.ac.uk/~rnc1/ignoring.pdf&#34;&gt;https://www.cl.cam.ac.uk/~rnc1/ignoring.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 14 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:cloudflare-radar-worldwide&#34;&gt;&lt;/a&gt;Cloudflare. Cloudflare Radar – Adoption and Usage Worldwide, 2025. URL: &lt;a class=&#34;url&#34; href=&#34;https://radar.cloudflare.com/adoption-and-usage?dateStart=2024-01-01&amp;amp;dateEnd=2024-12-31&#34;&gt;https://radar.cloudflare.com/adoption-and-usage?dateStart=2024-01-01&amp;amp;dateEnd=2024-12-31&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 15 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Crandall2007a&#34;&gt;&lt;/a&gt;J. R. Crandall, D. Zinn, M. Byrd, E. Barr, and R. East. ConceptDoppler: A weather tracker for Internet censorship. In Computer and Communications Security, pages 352–365. ACM, 2007. URL: &lt;a class=&#34;url&#34; href=&#34;http://www.csd.uoc.gr/~hy558/papers/conceptdoppler.pdf&#34;&gt;http://www.csd.uoc.gr/~hy558/papers/conceptdoppler.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 16 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:uzbekistan-quic-ech-block&#34;&gt;&lt;/a&gt;critical_error. QUIC streams with encrypted_client_hello extensions in QUIC initials are being blocked in Uzbekistan. NTC Party Forum, 12 2024. URL: &lt;a class=&#34;url&#34; href=&#34;https://ntc.party/t/13953&#34;&gt;https://ntc.party/t/13953&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 17 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:warp-supports-masque&#34;&gt;&lt;/a&gt;Dan Hall. Zero Trust WARP: tunneling with a MASQUE. URL: &lt;a class=&#34;url&#34; href=&#34;https://blog.cloudflare.com/zero-trust-warp-with-a-masque/&#34;&gt;https://blog.cloudflare.com/zero-trust-warp-with-a-masque/&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 18 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:lantern&#34;&gt;&lt;/a&gt;L. developers. Lantern. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/getlantern&#34;&gt;https://github.com/getlantern&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 19 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:chaos-protection-quiche2025&#34;&gt;&lt;/a&gt;dschinazi. Chaos Protection in QUIC, 2025. URL: &lt;a class=&#34;url&#34; href=&#34;https://quiche.googlesource.com/quiche/+/cb6b51054274cb2c939264faf34a1776e0a5bab7&#34;&gt;https://quiche.googlesource.com/quiche/+/cb6b51054274cb2c939264faf34a1776e0a5bab7&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 20 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Duan2012a&#34;&gt;&lt;/a&gt;H. Duan, N. Weaver, Z. Zhao, M. Hu, J. Liang, J. Jiang, K. Li, and V. Paxson. Hold-On: Protecting against on-path DNS poisoning. In Securing and Trusting Internet Names. National Physical Laboratory, 2012. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.icir.org/vern/papers/hold-on.satin12.pdf&#34;&gt;https://www.icir.org/vern/papers/hold-on.satin12.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 21 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:rfc9369&#34;&gt;&lt;/a&gt;M. Duke. QUIC Version 2. RFC 9369, May 2023. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.rfc-editor.org/info/rfc9369&#34;&gt;https://www.rfc-editor.org/info/rfc9369&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 22 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Dunna2018a&#34;&gt;&lt;/a&gt;A. Dunna, C. O’Brien, and P. Gill. Analyzing China’s blocking of unpublished Tor bridges. In Free and Open Communications on the Internet. USENIX, 2018. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci18/foci18-paper-dunna.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci18/foci18-paper-dunna.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 23 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:zmap&#34;&gt;&lt;/a&gt;Z. Durumeric, E. Wustrow, and J. A. Halderman. ZMap: Fast internet-wide scanning and its security applications. In USENIX Security Symposium. USENIX, August 2013. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/conference/usenixsecurity13/technical-sessions/paper/durumeric&#34;&gt;https://www.usenix.org/conference/usenixsecurity13/technical-sessions/paper/durumeric&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 24 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:neqo_pr2228_2024&#34;&gt;&lt;/a&gt;L. Eggert. Pull request #2228: feat: Shuffle the client Initial crypto data. &lt;a class=&#34;url&#34; href=&#34;https://github.com/mozilla/neqo/pull/2228&#34;&gt;https://github.com/mozilla/neqo/pull/2228&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 25 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Elmenhorst2021a&#34;&gt;&lt;/a&gt;K. Elmenhorst, B. Schütz, N. Aschenbruck, and S. Basso. Web censorship measurements of HTTP/3 over QUIC. In Internet Measurement Conference. ACM, 2021. URL: &lt;a class=&#34;url&#34; href=&#34;https://dl.acm.org/doi/pdf/10.1145/3487552.3487836&#34;&gt;https://dl.acm.org/doi/pdf/10.1145/3487552.3487836&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 26 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Ensafi2015b&#34;&gt;&lt;/a&gt;R. Ensafi, D. Fifield, P. Winter, N. Feamster, N. Weaver, and V. Paxson. Examining how the Great Firewall discovers hidden circumvention servers. In Internet Measurement Conference. ACM, 2015. URL: &lt;a class=&#34;url&#34; href=&#34;https://conferences2.sigcomm.org/imc/2015/papers/p445.pdf&#34;&gt;https://conferences2.sigcomm.org/imc/2015/papers/p445.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 27 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:quic2017&#34;&gt;&lt;/a&gt;A. L. et al. The quic transport protocol: Design and internet-scale deployment. SIGCOMM ’17. ACM, 2017. &lt;a class=&#34;url&#34; href=&#34;https://doi.org/10.1145/3098822.3098842&#34;&gt;doi:10.1145/3098822.3098842&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 28 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Fan2025a&#34;&gt;&lt;/a&gt;S. Fan, J. Sippe, S. San, J. Sheffey, D. Fifield, A. Houmansadr, E. Wedwards, and E. Wustrow. Wallbleed: A memory disclosure vulnerability in the Great Firewall of China. In Network and Distributed System Security. The Internet Society, 2025. URL: &lt;a class=&#34;url&#34; href=&#34;https://gfw.report/publications/ndss25/data/paper/wallbleed.pdf&#34;&gt;https://gfw.report/publications/ndss25/data/paper/wallbleed.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 29 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Farnan2016a&#34;&gt;&lt;/a&gt;O. Farnan, A. Darer, and J. Wright. Poisoning the well – exploring the Great Firewall’s poisoned DNS responses. In Workshop on Privacy in the Electronic Society. ACM, 2016. URL: &lt;a class=&#34;url&#34; href=&#34;https://dl.acm.org/authorize?N25517&#34;&gt;https://dl.acm.org/authorize?N25517&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 30 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:nsf-shift&#34;&gt;&lt;/a&gt;N. S. Foundation. Updates on nsf priorities. &lt;a class=&#34;url&#34; href=&#34;https://www.nsf.gov/updates-on-priorities&#34;&gt;https://www.nsf.gov/updates-on-priorities&lt;/a&gt;, 2025.
               &lt;/li&gt;
               &lt;!-- 31 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:worse-is-better&#34;&gt;&lt;/a&gt;R. P. Gabriel. Worse is better. URL: &lt;a class=&#34;url&#34; href=&#34;https://dreamsongs.com/WorseIsBetter.html&#34;&gt;https://dreamsongs.com/WorseIsBetter.html&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 32 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:gfw2020esni&#34;&gt;&lt;/a&gt;gfw-report. Rapid blocking of connections following ESNI triggers, August 2020. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/43\#issuecomment-673490763&#34;&gt;https://github.com/net4people/bbs/issues/43#issuecomment-673490763&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 33 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:God2024QUIC&#34;&gt;&lt;/a&gt;P. God. QUIC connection with SNI of *.eu.org has been blocked. Telegram post, 2024. URL: &lt;a class=&#34;url&#34; href=&#34;https://t.me/c/1166154022/909198&#34;&gt;https://t.me/c/1166154022/909198&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 34 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:goldkorn2013fang&#34;&gt;&lt;/a&gt;J. Goldkorn. Fang Binxing and the Great Firewall. In G. R. Barmé and J. Goldkorn, editors, China Story Yearbook 2013: Civilising China. Australian Centre on China in the World. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.thechinastory.org/yearbooks/yearbook-2013/chapter-6-chinas-internet-a-civilising-process/fang-binxing-and-the-great-firewall/&#34;&gt;https://www.thechinastory.org/yearbooks/yearbook-2013/chapter-6-chinas-internet-a-civilising-process/fang-binxing-and-the-great-firewall/&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 35 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:google_quiche_2025&#34;&gt;&lt;/a&gt;Google. QUICHE: QUIC, HTTP/2, HTTP/3 and related protocol toolkit. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/google/quiche&#34;&gt;https://github.com/google/quiche&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 36 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Hanson2015a&#34;&gt;&lt;/a&gt;L. Hanson. The chinese internet gets a stronger backbone. &lt;a class=&#34;url&#34; href=&#34;https://www.forbes.com/sites/lisachanson/2015/02/24/the-chinese-internet-gets-a-stronger-backbone&#34;&gt;https://www.forbes.com/sites/lisachanson/2015/02/24/the-chinese-internet-gets-a-stronger-backbone&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 37 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Hoang2024a&#34;&gt;&lt;/a&gt;N. P. Hoang, J. Dalek, M. Crete-Nishihata, N. Christin, V. Yegneswaran, M. Polychronakis, and N. Feamster. GFWeb: Measuring the Great Firewall’s Web censorship at scale. In USENIX Security Symposium. USENIX, 2024. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/sec24fall-prepub-310-hoang.pdf&#34;&gt;https://www.usenix.org/system/files/sec24fall-prepub-310-hoang.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 38 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Hoang2021a&#34;&gt;&lt;/a&gt;N. P. Hoang, A. A. Niaki, J. Dalek, J. Knockel, P. Lin, B. Marczak, M. Crete-Nishihata, P. Gill, and M. Polychronakis. How great is the Great Firewall? Measuring China’s DNS censorship. In USENIX Security Symposium. USENIX, 2021. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/sec21-hoang.pdf&#34;&gt;https://www.usenix.org/system/files/sec21-hoang.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 39 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:hysteria&#34;&gt;&lt;/a&gt;Hysteria developers. Hysteria. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/apernet/hysteria&#34;&gt;https://github.com/apernet/hysteria&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 40 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:hysteria_release_2_6_2&#34;&gt;&lt;/a&gt;Hysteria Developers. Hysteria software release. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/apernet/hysteria/releases/tag/app%2Fv2.6.2&#34;&gt;https://github.com/apernet/hysteria/releases/tag/app%2Fv2.6.2&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 41 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:ietf-masque-working-group&#34;&gt;&lt;/a&gt;IETF. Multiplexed Application Substrate over QUIC Encryption (masque), 2025. URL: &lt;a class=&#34;url&#34; href=&#34;https://datatracker.ietf.org/wg/masque/about/&#34;&gt;https://datatracker.ietf.org/wg/masque/about/&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 42 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:InternetSociety2023&#34;&gt;&lt;/a&gt;Internet Society. When is the Internet not the Internet?, December 2023. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.internetsociety.org/resources/internet-fragmentation/the-chinese-firewall/&#34;&gt;https://www.internetsociety.org/resources/internet-fragmentation/the-chinese-firewall/&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 43 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:rfc9000&#34;&gt;&lt;/a&gt;J. Iyengar and M. Thomson. QUIC: A UDP-Based Multiplexed and Secure Transport. RFC 9000, May 2021. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.rfc-editor.org/info/rfc9000&#34;&gt;https://www.rfc-editor.org/info/rfc9000&lt;/a&gt;, &lt;a class=&#34;url&#34; href=&#34;https://doi.org/10.17487/RFC9000&#34;&gt;doi:10.17487/RFC9000&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 44 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:jia2023quicstepcircumventingquicbasedcensorship&#34;&gt;&lt;/a&gt;W. Jia, M. Wang, L. Wang, and P. Mittal. QUICstep: Circumventing QUIC-based censorship, 2023. URL: &lt;a class=&#34;url&#34; href=&#34;https://arxiv.org/abs/2304.01073&#34;&gt;https://arxiv.org/abs/2304.01073&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 45 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:kohno2023ethical&#34;&gt;&lt;/a&gt;T. Kohno, Y. Acar, and W. Loh. Ethical frameworks and computer security trolley problems: Foundations for conversations. In 32nd USENIX Security Symposium (USENIX Security 23), 2023. URL: &lt;a class=&#34;url&#34; href=&#34;https://securityethics.cs.washington.edu/&#34;&gt;https://securityethics.cs.washington.edu/&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 46 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:cloudflare-quiche&#34;&gt;&lt;/a&gt;madeye. Savoury implementation of the QUIC transport protocol and HTTP/3, 2024. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/cloudflare/quiche&#34;&gt;https://github.com/cloudflare/quiche&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 47 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:bugzilla_1942325&#34;&gt;&lt;/a&gt;Mozilla Developers. Bug 1942325 - update Neqo to v0.12.2 in mozilla-central. &lt;a class=&#34;url&#34; href=&#34;https://bugzilla.mozilla.org/show_bug.cgi?id=1942325&#34;&gt;https://bugzilla.mozilla.org/show_bug.cgi?id=1942325&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 48 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:MozillaFirefox&#34;&gt;&lt;/a&gt;Mozilla Foundation. Firefox Web Browser Source Code. &lt;a class=&#34;url&#34; href=&#34;https://github.com/mozilla-firefox/firefox&#34;&gt;https://github.com/mozilla-firefox/firefox&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 49 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:MozillaNeqo2025&#34;&gt;&lt;/a&gt;Mozilla Foundation. Neqo: Next Generation QUIC Client and Server Library. &lt;a class=&#34;url&#34; href=&#34;https://github.com/mozilla/neqo&#34;&gt;https://github.com/mozilla/neqo&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 50 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:neqo_v0_12_0_release&#34;&gt;&lt;/a&gt;Mozilla Neqo Team. Neqo version 0.12.0 release. &lt;a class=&#34;url&#34; href=&#34;https://github.com/mozilla/neqo/releases/tag/v0.12.0&#34;&gt;https://github.com/mozilla/neqo/releases/tag/v0.12.0&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 51 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:ietf-tls-esni-24&#34;&gt;&lt;/a&gt;E. Rescorla, K. Oku, N. Sullivan, and C. A. Wood. TLS Encrypted Client Hello. Internet-draft, March 2025. Work in Progress. URL: &lt;a class=&#34;url&#34; href=&#34;https://datatracker.ietf.org/doc/draft-ietf-tls-esni/24/&#34;&gt;https://datatracker.ietf.org/doc/draft-ietf-tls-esni/24/&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 52 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Sakamoto2024a&#34;&gt;&lt;/a&gt;Sakamoto and E. Wedwards. Bleeding wall: A hematologic examination on the Great Firewall. In Free and Open Communications on the Internet, 2024. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.petsymposium.org/foci/2024/foci-2024-0002.pdf&#34;&gt;https://www.petsymposium.org/foci/2024/foci-2024-0002.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 53 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:quic-go-release&#34;&gt;&lt;/a&gt;M. Seemann. quic-go: A QUIC implementation in pure Go (version 0.52.0). &lt;a class=&#34;url&#34; href=&#34;https://github.com/quic-go/quic-go/releases/tag/v0.52.0&#34;&gt;https://github.com/quic-go/quic-go/releases/tag/v0.52.0&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 54 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:sing-box&#34;&gt;&lt;/a&gt;Sing-box developers. Sing-box. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/SagerNet/sing-box&#34;&gt;https://github.com/SagerNet/sing-box&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 55 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:singbox_release_1_12_0_beta_17&#34;&gt;&lt;/a&gt;sing-box Developers. sing-box software release. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/SagerNet/sing-box/releases/tag/v1.12.0-beta.17&#34;&gt;https://github.com/SagerNet/sing-box/releases/tag/v1.12.0-beta.17&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 56 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:ephemeral-ports&#34;&gt;&lt;/a&gt;N. Software. The ephemeral port range. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.ncftp.com/ncftpd/doc/misc/ephemeral_ports.html&#34;&gt;https://www.ncftp.com/ncftpd/doc/misc/ephemeral_ports.html&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 57 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Streisand2023a&#34;&gt;&lt;/a&gt;M. Streisand, E. Wustrow, and A. Houmansadr. Where have all the paragraphs gone? detecting and exposing censorship in Chinese translation. In Free and Open Communications on the Internet, 2023. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.petsymposium.org/foci/2023/foci-2023-0001.pdf&#34;&gt;https://www.petsymposium.org/foci/2023/foci-2023-0001.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 58 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:rfc9001&#34;&gt;&lt;/a&gt;M. Thomson and S. Turner. Using TLS to Secure QUIC. RFC 9001. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.rfc-editor.org/info/rfc9001&#34;&gt;https://www.rfc-editor.org/info/rfc9001&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 59 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:tuic&#34;&gt;&lt;/a&gt;TUIC Protocol. tuic: Delicately-tuiced 0-rtt proxy protocol. &lt;a class=&#34;url&#34; href=&#34;https://github.com/tuic-protocol/tuic&#34;&gt;https://github.com/tuic-protocol/tuic&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 60 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:unhrc2016internet&#34;&gt;&lt;/a&gt;United Nations Human Rights Council. The promotion, protection and enjoyment of human rights on the Internet.    &lt;a class=&#34;url&#34; href=&#34;https://www.article19.org/data/files/Internet_Statement_Adopted.pdf&#34;&gt;https://www.article19.org/data/files/Internet_Statement_Adopted.pdf&lt;/a&gt;, June 2016. Resolution A/HRC/32/L.20.
               &lt;/li&gt;
               &lt;!-- 61 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:v2ray&#34;&gt;&lt;/a&gt;V2Ray developers. V2Ray. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/v2fly/v2ray-core&#34;&gt;https://github.com/v2fly/v2ray-core&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 62 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:v2ray_release_5_33_0&#34;&gt;&lt;/a&gt;V2Ray Developers. V2Ray Core software release. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/v2fly/v2ray-core/releases/tag/v5.33.0&#34;&gt;https://github.com/v2fly/v2ray-core/releases/tag/v5.33.0&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 63 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:ValdikSS_2022_NTC_HTTP3_QUIC_Post10&#34;&gt;&lt;/a&gt;ValdikSS. Restriction HTTP/3 (QUIC) - post 10. ntc.party, Mar 2022. Accessed: 2024-05-27. URL: &lt;a class=&#34;url&#34; href=&#34;https://ntc.party/t/1823/10&#34;&gt;https://ntc.party/t/1823/10&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 64 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Wang2017a&#34;&gt;&lt;/a&gt;Z. Wang, Y. Cao, Z. Qian, C. Song, and S. V. Krishnamurthy. Your state is not mine: A closer look at evading stateful Internet censorship. In Internet Measurement Conference. ACM, 2017. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.cs.ucr.edu/~krish/imc17.pdf&#34;&gt;https://www.cs.ucr.edu/~krish/imc17.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 65 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Winter2012a&#34;&gt;&lt;/a&gt;P. Winter and S. Lindskog. How the Great Firewall of China is blocking Tor. In Free and Open Communications on the Internet. USENIX, 2012. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci12/foci12-final2.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci12/foci12-final2.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 66 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Wu2023a&#34;&gt;&lt;/a&gt;M. Wu, J. Sippe, D. Sivakumar, J. Burg, P. Anderson, X. Wang, K. Bock, A. Houmansadr, D. Levin, and E. Wustrow. How the Great Firewall of China detects and blocks fully encrypted traffic. In USENIX Security Symposium. USENIX, 2023. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/sec23fall-prepub-234-wu-mingshi.pdf&#34;&gt;https://www.usenix.org/system/files/sec23fall-prepub-234-wu-mingshi.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 67 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Wu2025a&#34;&gt;&lt;/a&gt;M. Wu, A. Zohaib, Z. Durumeric, A. Houmansadr, and E. Wustrow. A wall behind a wall: Emerging regional censorship in China. In Symposium on Security &amp;#x0026; Privacy. IEEE, 2025. URL: &lt;a class=&#34;url&#34; href=&#34;https://gfw.report/publications/sp25/data/paper/paper.pdf&#34;&gt;https://gfw.report/publications/sp25/data/paper/paper.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 68 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:xray&#34;&gt;&lt;/a&gt;XRay developers. XRay. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/XTLS/Xray-core&#34;&gt;https://github.com/XTLS/Xray-core&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 69 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:xray_release_25_6_8&#34;&gt;&lt;/a&gt;Xray Developers. Xray software release. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/XTLS/Xray-core/releases/tag/v25.6.8&#34;&gt;https://github.com/XTLS/Xray-core/releases/tag/v25.6.8&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 70 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Xue2022b&#34;&gt;&lt;/a&gt;D. Xue, B. Mixon-Baca, ValdikSS, A. Ablove, B. Kujath, J. R. Crandall, and R. Ensafi. TSPU: Russia’s decentralized censorship system. In Internet Measurement Conference. ACM, 2022. URL: &lt;a class=&#34;url&#34; href=&#34;https://dl.acm.org/doi/pdf/10.1145/3517745.3561461&#34;&gt;https://dl.acm.org/doi/pdf/10.1145/3517745.3561461&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 71 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Yan2006a&#34;&gt;&lt;/a&gt;B. Yan, B. Fang, B. Li, and Y. Wang. Detection and defence of DNS spoofing attack, November 2006. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/user-attachments/files/18172972/Yan2006a.pdf&#34;&gt;https://github.com/user-attachments/files/18172972/Yan2006a.pdf&lt;/a&gt;.
               &lt;/li&gt;
          &lt;/ol&gt;
      &lt;/div&gt;
&lt;h2 class=&#34;sectionHead&#34; id=&#34;app:appendix-a&#34;&gt;
     &lt;a id=&#34;app:appendix-a&#34; href=&#34;#app:appendix-a&#34;&gt;
          &lt;span class=&#34;titlemark&#34;&gt;A.&lt;/span&gt; Blocking Latency Across the Day
     &lt;/a&gt;
&lt;/h2&gt;
&lt;!--l. 6--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;a href=&#34;#fig:10-how-fast-the-gfw-blocks-boxplot&#34;&gt;Figure 10&lt;/a&gt; shows how the GFW’s blocking latency varies across
the day. Blocking latencies are the time taken for the GFW to
block a connection after observing a QUIC Initial packet with a
blocked SNI. It is measured as the time difference between the
time the client sends the QUIC Initial packet and the time the
client sends the first UDP datagram that gets dropped by the
GFW.
&lt;/p&gt;

&lt;div class=&#39;figure&#39;&gt;
     &lt;p class=&#39;noindent&#39; id=&#39;fig:10-how-fast-the-gfw-blocks-boxplot&#39;&gt;
          &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/how-fast-the-gfw-blocks-boxplot-.png&#39; /&gt;
               &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:10-how-fast-the-gfw-blocks-boxplot&#34;&gt;Figure 10&lt;/a&gt;:  The box plot shows the distribution of the time
                    taken for the GFW to block a connection. The x-axis is in
                    log scale. The green triangle marks the mean value; and the
                    whiskers shows the minimum and maximum values.
               &lt;/p&gt;
     &lt;/p&gt;
&lt;/div&gt;
&lt;!--l. 14--&gt;&lt;p class=&#34;indent&#34; &gt;  The minimum blocking latencies are consistently below
100 ms during the day, likely bounded by the GFW’s internal
processing and reaction speed.
&lt;/p&gt;
&lt;!--l. 17--&gt;&lt;p class=&#34;indent&#34; &gt;  The maximum blocking latencies vary throughout the day,
potentially influenced by the number of QUIC connections being
processed by the GFW (as also hinted in &lt;a href=&#34;#sec:5-gfw-degradation-attack&#34;&gt;Section 5&lt;/a&gt;). During
periods of generally lower human activity, typically in the early
morning hours (12 AM to 6 AM), it takes relatively less time
for the GFW to block connections, with a mean blocking latency
of approximately 150 ms. In contrast, during peak human
activity hours (7 AM to 11 PM), the mean blocking latency can
go up to 800 ms, with a max blocking latency of 7,000 ms
observed at around 3 PM.

&lt;/p&gt;
&lt;h2 class=&#34;sectionHead&#34; id=&#34;app:appendix-b&#34;&gt;
     &lt;a id=&#34;app:appendix-b&#34; href=&#34;#app:appendix-b&#34;&gt;
          &lt;span class=&#34;titlemark&#34;&gt;B.&lt;/span&gt; Port-based Traffic Filtering
     &lt;/a&gt;
&lt;/h2&gt;
&lt;!--l. 32--&gt;&lt;p class=&#34;noindent&#34; &gt;To further confirm our findings from &lt;a href=&#34;#sec:3.3-source-port-must-exceed-destination-port&#34;&gt;Section 3.3&lt;/a&gt; regarding the
GFW’s filtering heuristic based on the source and destination
ports, we extended our analysis to a wider range of ports. Using
the same methodology, we examined a wider range of ports, from
1 to 65535, with a step size of 1,000. We also included the port
65535 in our test and analysis.
&lt;/p&gt;
&lt;!--l. 39--&gt;&lt;p class=&#34;indent&#34; &gt;  &lt;a href=&#34;#fig:11-heatmap-ports-1-65000-step-1000_heatmap&#34;&gt;Figure 11&lt;/a&gt; illustrates the GFW’s blocking behavior across this
expanded port range. These results corroborate our initial
findings: the GFW does not track or block UDP flows if the
source port of the QUIC Initial packet is less than or equal to its
destination port.
&lt;/p&gt;

&lt;div class=&#39;figure&#39;&gt;
     &lt;p class=&#39;noindent&#39; id=&#39;fig:11-heatmap-ports-1-65000-step-1000_heatmap&#39;&gt;
          &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/heatmap-ports-1-65000-step-1000_heatmap-.png&#39; /&gt;
               &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:11-heatmap-ports-1-65000-step-1000_heatmap&#34;&gt;Figure 11&lt;/a&gt;:  The censor does not track or block UDP flows if
                    the source port of the QUIC Initial packet is less than or equal
                    to its destination port. This rule applies to all port numbers,
                    ranging from 1 to 65535.
               &lt;/p&gt;
     &lt;/p&gt;
&lt;/div&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;app:appendix-c&#34;&gt;
     &lt;a id=&#34;app:appendix-c&#34; href=&#34;#app:appendix-c&#34;&gt;
          &lt;span class=&#34;titlemark&#34;&gt;C.&lt;/span&gt; Vulnerability Disclosure Email to the Censors
     &lt;/a&gt;
&lt;/h2&gt;
&lt;!--l. 75--&gt;&lt;p class=&#34;noindent&#34; &gt;As introduced in &lt;a href=&#34;#sec:9-conclusion&#34;&gt;Section 9&lt;/a&gt;, we decided to disclose the availability attack (&lt;a href=&#34;#sec:6-availability-attack&#34;&gt;Section 6&lt;/a&gt;) to the censor, as this attack may exploit the GFW to cause
additional harm to users. On January 22, 2025, we sent out the following email to CNCERT/CC and Fang Binxing who has been widely
known as “the father of the GFW” &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:goldkorn2013fang&#34;&gt;34&lt;/a&gt;]&lt;/span&gt;. We recommended removing the vulnerable QUIC censorship device and deploying
egress filtering to prevent IP spoofing attacks. We wrote this email in both English and Chinese, and provided links to
two private webpages, one in English and one in Chinese, with details of the attack. Although we did not receive any
response or formal acknowledgment, we observed a total of 37 visits to the private English webpage (and zero visits to the
Chinese one) between 2:04 PM (UTC+8) on Friday, January 24 and 9:35 AM (UTC+8) on Monday, February 24,
2025.
&lt;/p&gt;

&lt;pre class=&#34;verbatim&#34; id=&#34;verbatim-1&#34;&gt;
&lt;b&gt;SUBJECT:&lt;/b&gt;   Disclose a Vulnerability in the GFW’s QUIC Filtering Mechanism
&lt;b&gt;FROM:&lt;/b&gt;      gfw.report &amp;lt;gfw.report@protonmail.com&amp;gt;
&lt;b&gt;TO:&lt;/b&gt;        CNCERT/CC &amp;lt;cncert@cert.org.cn&amp;gt;
&lt;b&gt;CC:&lt;/b&gt;        Fang Binxing &amp;lt;fangbx@iie.ac.cn&amp;gt;
&lt;b&gt;DATE:&lt;/b&gt;      Thu, 23 Jan 2025 12:01:46 +0000


Dear CNCERT Team,

We are writing to disclose a vulnerability introduced by the QUIC filtering mechanism deployed on the backbone network in China, active since at least April 7, 2024. This vulnerability allows a network attacker capable of spoofing IP packets, to use the Great Firewall of China (GFW) to disrupt or block communication between hosts inside and outside of China for an extended period.

Below we introduce the details, impact, and mitigation of this vulnerability. We also maintained an up-to-date version at: [The URL to the English responsible disclosure page redacted.]

## Vulnerability Details

An attacker can send a QUIC Initial packet (see below example) with an SNI on the firewall’s blocklist (e.g., google.com) to a specific IP:port pair, triggering the GFW’s residual censorship for approximately 180 seconds. If the attacker spoofs the source IP address to that of a victim inside China, this mechanism can be exploited to block the victim’s IP address from connecting to the specified server IP:port for three minutes. Similarly, one can spoof the source IP address to be a victim server outside China, and send to a range of ports of a victim IP address in China. By repeatedly sending spoofed QUIC Initial packets, the attacker can sustain the block indefinitely.

When the firewall’s censorship is triggered, it blocks based on three-tuple (source IP, destination IP, destination UDP port) for 3 minutes (180 seconds). Censorship can be triggered with a single UDP packet (see example below) containing a QUIC Initial packet with an SNI on the firewall’s blocklist (e.g., google.com). Normally, this will only block between a client attempting to connect and the server. However, because the blocking can be triggered from a single UDP packet, a network attacker that can spoof IP packets can easily trigger the firewall into blocking other hosts.

For example, suppose there is a host in China at 19.89.5.35, and a DNS server outside China at 4.2.2.1 on UDP port 53. If an attacker sends a UDP packet (such as provided below) from 19.89.5.35:x (for any source port x) to 4.2.2.1:53, this will trigger the firewall to block 19.89.5.35 from sending any packets to 4.2.2.1:53 for 3 minutes. The attacker can continue to spoof packets from different source ports to extend the block indefinitely.

## Impact

The development and deployment of the GFW, along with this identified issue, poses a severe risk to users in China and has the potential to disrupt communications on a large scale. For instance, it could be exploited to block significant portions of UDP-based DNS traffic between DNS resolvers in China and external networks, causing widespread connectivity issues.

To demonstrate the impact this attack could have, we conducted an experiment using 32 Amazon EC2 instances globally distributed. We ran the attack for 30 minutes, sending a DNS request from each EC2 instance to a VPS we control in Guangzhou. At the same time, a non-egress filtering box in the US spoofed packets from each EC2 IP to the Guangzhou box with a QUIC Initial packet containing an SNI from the firewall’s blocklist. The map below shows which boxes were affected with just a single spoofing vantage point. Points in green experienced no connectivity issues, while points in red struggled to successfully send requests to the Guangzhou host. The black point in Guangzhou shows the location of our testing victim server and the black point in the US shows the location of our spoofing server.

&lt;img alt=&#39;PIC&#39; style=&#34;display:block; margin-top: 0; margin-bottom: 0;&#34; class=&#39;figure-img&#39; src=&#39;../figures/affected_hosts-.png&#39; /&gt;
## Mitigation

Due to the potential harm from this attack, we urge taking immediate action to address this issue. As UDP is a connectionless protocol, it is difficult to prevent spoofing attacks. Therefore, the most complete mitigation against this attack is to disable the censorship middlebox responsible for blocking UDP connections. In addition to enabling these harmful attacks, the GFW also violates human rights by preventing access to information.

A less complete mitigation is to deploy egress filtering to prevent IP packet spoofing, but as long as an attacker can find one location where they can spoof packets, even outside of China, this attack will still be feasible. Given this, we recommend 1) immediately and permanently disabling the QUIC censorship national firewall and 2) deploy protections such as egress filtering to edge networks to limit IP spoofing.

Thank you for your attention to this critical matter. We remain available to provide additional technical details or answer follow up questions to ensure this issue is addressed promptly.

Sincerely,
Team

---
[The Chinese translation of the email above redacted.]
[The URL to the Chinese responsible disclosure page redacted.]
---
Example command:
nc -s $SRC_IP -p $SRC_PORT -vnu $DST_IP $DST_PORT &amp;#x003C;&amp;#x003C;&amp;#x003C;$(xxd -r -p \
&amp;#x003C;&amp;#x003C;&amp;#x003C; &amp;#x0022;c600000001104ebdf7c473c1c15db3ffa4534f5b3158102154b19e765d7a3caa33a20b92c56da30040e182
dcfd47c61c7fff552b8c61053c0c91ab148d199277a3b459519768aa6c79533eecd2d2e678dbac45dadef121d1d
3f5f56454c6b9305c45d919053fea8c1c1bd950d1fd14ee770d8312d10c03a18aea463538d721af70b4e732037e
ac620f361d0435114eea55204caa685dd33f8b2cb1dac6568b320e2d348f77e72a4c150ed5ac27a9ce9edf696ea
929baf34f28598320b0baa993fbdeddf7c45b724eee8f6fa9c7860a973f0138777422347161743bc6d36e519951
47d7f6d2cf4a398b7ea1066f77bcdee89e760d2568bc3c9bb8f7d5c43482a11a7d696c7dc62fe6ecade80000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000&amp;#x0022;)
&lt;/pre&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>揭示并绕过中国防火长城基于SNI的QUIC封锁机制</title>
        <link>https://gfw.report/publications/usenixsecurity25/zh/</link>
        <pubDate>Thu, 31 Jul 2025 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/publications/usenixsecurity25/zh/</guid>
        
        <description>&lt;!-- use CSS file --&gt;
&lt;link rel=&#34;stylesheet&#34; href=&#34;./css/paper.css&#34;&gt;
&lt;!-- use paper-specific CSS --&gt;
&lt;link rel=&#34;stylesheet&#34; href=&#34;../usenixsecurity25.css&#34;&gt;

&lt;!-- Used to render latex syntax --&gt;
&lt;script type=&#34;text/javascript&#34; async
  src=&#34;https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML&#34;&gt;
&lt;/script&gt;

&lt;!-- Used to render Table of Content --&gt;
&lt;link href=&#34;./css/tocbot.css&#34; rel=&#39;stylesheet&#39; type=&#39;text/css&#39; /&gt;
&lt;script src=&#34;./js/tocbot.min.js&#34;&gt;&lt;/script&gt;
&lt;script&gt;
    document.addEventListener(&#39;DOMContentLoaded&#39;, function() {
    tocbot.init({
        tocSelector: &#39;.js-toc&#39;,
        contentSelector: &#39;.js-toc-content&#39;,
        headingSelector: &#39;h2, h3&#39;,
        collapseDepth: 3,
        activeLinkClass: &#39;&#39;
    });
    });
&lt;/script&gt;

&lt;h1 class=&#34;titleHead&#34;&gt;揭示并绕过中国防火长城基于SNI的QUIC封锁机制&lt;/h1&gt;

&lt;div class=&#34;authors&#34;&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Ali Zohaib&lt;span class=&#34;footnote-mark&#34;&gt;&lt;a href=&#34;#fn:equal-contribution&#34;&gt;&lt;sup class=&#34;textsuperscript cmsy-8&#34;&gt;∗&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;
        &lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;University of Massachusetts Amherst&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Qiang Zao&lt;span class=&#34;footnote-mark&#34;&gt;&lt;a href=&#34;#fn:equal-contribution&#34;&gt;&lt;sup class=&#34;textsuperscript cmsy-8&#34;&gt;∗&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;
        &lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;GFW Report&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Jackson Sippe&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;University of Colorado Boulder&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Abdulrahman Alaraj&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;University of Colorado Boulder&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Amir Houmansadr&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;University of Massachusetts Amherst&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Zakir Durumeric&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;Stanford University&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Eric Wustrow&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;University of Colorado Boulder&lt;/p&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
    &lt;ol&gt;
        &lt;li class=&#34;footnote-text&#34;&gt;
            &lt;a id=&#34;fn:equal-contribution&#34;&gt;&lt;/a&gt;
            &lt;span class=&#34;footnote-mark&#34;&gt;&lt;sup class=&#34;textsuperscript&#34;&gt;*&lt;/sup&gt;&lt;/span&gt;
            &lt;span class=&#34;footnotes-text&#34;&gt;Ali Zohaib 和 Qiang Zao 对本工作贡献相当。&lt;/span&gt;
        &lt;/li&gt;
    &lt;/ol&gt;
&lt;/div&gt;


&lt;div class=&#34;js-toc&#34;&gt;&lt;/div&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;abstract&#34;&gt;&lt;a id=&#34;sec:abstract&#34; href=&#34;#sec:abstract&#34;&gt;摘要&lt;/a&gt;&lt;/h2&gt;
&lt;!--l. 1--&gt;&lt;p class=&#34;noindent&#34;&gt;尽管 QUIC 握手数据包是加密的，中国防火长城（GFW）自2024年4月7日起，已开始封锁针对特定域名的 QUIC 连接。在此次研究中，我们对 GFW 针对 QUIC 的审查行为进行了测量与分析，以理解其&lt;span class=&#34;ptmri8t-&#34;&gt;封锁方式&lt;/span&gt;以及&lt;span class=&#34;ptmri8t-&#34;&gt;封锁对象&lt;/span&gt;。我们的测量结果显示，GFW 能够大规模解密 QUIC Initial 数据包，应用启发式过滤规则，并采用与其他审查机制不同的封锁名单。我们揭示了这一新系统的一个关键缺陷：解密带来的计算开销在中等流量负载下即会削弱其封锁效果。我们还展示了该审查机制如何被滥用，以阻断中国与全球任意主机之间的 UDP 流量。我们与多个开源社区合作，将绕过封锁的策略集成进一款行业领先的浏览器、quic-go 库以及所有基于 QUIC 的主流翻墙工具中。
&lt;/p&gt;&lt;/section&gt;&lt;!--l. 47--&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;1&#34;&gt;&lt;a id=&#34;sec:1-introduction&#34; href=&#34;#sec:1-introduction&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;1.&lt;/span&gt; 引言&lt;/a&gt;&lt;/h2&gt;
&lt;!--l. 4--&gt;&lt;p class=&#34;noindent&#34;&gt;自 2021 年标准化以来，QUIC 已迅速成为主流互联网协议。它现在是 HTTP/3 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:rfc9114&#34;&gt;7&lt;/a&gt;]&lt;/span&gt; 的加密基础，并且在 2024 年，Cloudflare 估算超过 30% 的网页请求使用了 QUIC &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:cloudflare-radar-worldwide&#34;&gt;14&lt;/a&gt;]&lt;/span&gt;。QUIC 的流行也给审查者带来了新挑战，他们必须调整以往的技术来适应这一新协议。此前，审查者通常会直接封锁整个QUIC协议 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Elmenhorst2021a&#34;&gt;25&lt;/a&gt;, &lt;a href=&#34;#cite:Xue2022b&#34;&gt;70&lt;/a&gt; §5.2]&lt;/span&gt;，但 2024 年 4 月，用户首次报告中国的防火长城（GFW）开始针对特定域名封锁 QUIC 连接 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:God2024QUIC&#34;&gt;33&lt;/a&gt;]&lt;/span&gt;，类似于其基于 SNI （服务器名称指示）的 TLS 流量审查 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Chai2019a&#34;&gt;11&lt;/a&gt;, &lt;a href=&#34;#cite:Hoang2024a&#34;&gt;37&lt;/a&gt;]&lt;/span&gt;。
&lt;/p&gt;
&lt;!--l. 16--&gt;&lt;p class=&#34;indent&#34;&gt;对特定网站的 QUIC 连接进行审查，在国家层面极具挑战性，因为 QUIC 加密了所有数据包，而相较之下 TLS 协议则会以明文发送目标服务器名称。在 QUIC 中，即使是第一个握手消息（QUIC client Initial）也是加密的，尽管被动网络观察者可以推导出密钥。这意味着，若审查者希望基于 SNI 字段封锁 QUIC 连接，就必须解密每个 QUIC 连接的首个数据包以获取用户的目标站点。因此，反审查社区亟需了解 GFW 的新审查设计与实现细节，以便及时更新绕过策略。
&lt;/p&gt;
&lt;!--l. 41--&gt;&lt;p class=&#34;indent&#34;&gt;在本工作中，&lt;span class=&#34;footnote-mark&#34;&gt;&lt;a href=&#34;#fn:project-homepage&#34;&gt;&lt;sup class=&#34;textsuperscript&#34;&gt;1&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id=&#34;x1-1001f1&#34;&gt;&lt;/a&gt;我们测量了中国针对 QUIC 的新型检测与封锁能力——中国是全球首个对 QUIC 进行全国范围的检测与定向审查的国家。我们证实中国能够大规模解密并检测 QUIC 连接的首个数据包。通过一系列实验，我们推断出 GFW 处理 QUIC 连接的规则和高层解析逻辑。例如，我们发现 GFW 会忽略源端口小于或等于目标端口的 QUIC 数据包，这很可能是为了仅检测客户端发起的流量而作的优化。
&lt;/p&gt;
&lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
    &lt;ol&gt;
         &lt;li class=&#39;footnote-text&#39;&gt;
              &lt;a id=&#39;fn:project-homepage&#39;&gt;&lt;/a&gt;
              &lt;span class=&#39;footnote-mark&#39;&gt;
                   &lt;sup class=&#39;textsuperscript&#39;&gt;1&lt;/sup&gt;
              &lt;/span&gt;
              &lt;span class=&#39;footnotes-text&#39;&gt;项目主页：&lt;a href=&#34;https://gfw.report/publications/usenixsecurity25/en&#34;&gt;https://gfw.report/publications/usenixsecurity25/en&lt;/a&gt;&lt;/span&gt;
         &lt;/li&gt;
    &lt;/ol&gt;
&lt;/div&gt;
&lt;!--l. 50--&gt;&lt;p class=&#34;indent&#34;&gt;我们通过类似 traceroute 的测量方法，发现进行 QUIC 审查的设备与现有 GFW 设备位于网络的同一跳，表明它们可能共用基础设施或有类似的管理体系。尽管如此，我们测量了会触发 QUIC 审查的域名集合，发现 GFW 的 QUIC 封锁名单与中国用于 TLS、HTTP 或 DNS 审查的名单有显著不同。具体来说，QUIC 封锁名单的域名数量大约是 DNS 封锁名单的 60%。令人惊讶的是，其中大量域名甚至并不支持 QUIC，原因尚不明确。
&lt;/p&gt;
&lt;!--l. 61--&gt;&lt;p class=&#34;indent&#34;&gt;我们进一步证明，中国的定向 QUIC 审查可以被“压垮”，导致 GFW 无法完全封锁 QUIC 连接。这揭示了 GFW QUIC 审查机制的一个可被利用的缺陷：攻击者只需发送适量的 QUIC Initial 数据包（即使目标是未被封锁的域名），就能让 GFW 忙于处理，从而大幅降低对被封锁域名的拦截率。
&lt;/p&gt;
&lt;!--l. 68--&gt;&lt;p class=&#34;indent&#34;&gt;最后，我们展示了 GFW 的 QUIC 审查系统是如何置全国范围的主机于被攻击的风险之中的。我们提出了一种可用性攻击，利用GFW的 QUIC 审查机制阻断中国任意主机与境外任意主机之间的 UDP 通信。例如，该攻击可用于阻断中国全境对境外所用 DNS 服务器的访问，导致大范围的互联网中断。我们以位于全球各地的我们自己的服务器为目标，进行了攻击实验，结果显示，攻击者仅需一台处于不对伪造源IP的数据包进行过滤的网络中的主机，即可阻止全球大多数主机与我们在中国的观测点主机间的通信。鉴于该漏洞的严重性，我们已向中国国家互联网应急中心（CERT）进行了披露。最后，我们讨论了该发现对反审查社区的意义，以及在对抗有害行为者（如 GFW）时，进行漏洞利用的复杂伦理问题。
&lt;/p&gt;
&lt;h2 class=&#34;sectionHead&#34; id=&#34;2&#34;&gt;&lt;a id=&#34;sec:2-background-and-related-work&#34; href=&#34;#sec:2-background-and-related-work&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;2.&lt;/span&gt; 背景介绍与相关工作&lt;/a&gt;&lt;/h2&gt;
&lt;!--l. 4--&gt;&lt;p class=&#34;noindent&#34;&gt;&lt;span class=&#34;ptmb8t-&#34;&gt;QUIC 协议。&lt;/span&gt;QUIC 是一种基于 UDP 的网络协议，最初由 Google 开发 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:quic2017&#34;&gt;27&lt;/a&gt;]&lt;/span&gt;，后由 IETF 于 2021 年标准化为 RFC 9000 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:rfc9000&#34;&gt;43&lt;/a&gt;]&lt;/span&gt;。QUIC 类似于 TLS，但建立在 UDP 之上，能够降低延迟，并支持由浏览器控制的拥塞控制。QUIC 被采纳为 HTTP/3 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:rfc9114&#34;&gt;7&lt;/a&gt;]&lt;/span&gt; 的加密基础。2024 年，Cloudflare 估算超过 30% 的网页请求使用了 QUIC &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:cloudflare-radar-worldwide&#34;&gt;14&lt;/a&gt;]&lt;/span&gt;。QUIC 也为反审查社区带来了新的变化，因为它对所有数据包进行加密，以防止中间盒的跟踪和篡改 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:quic2017&#34;&gt;27&lt;/a&gt; §3]&lt;/span&gt;。
&lt;/p&gt;
&lt;!--l. 13--&gt;&lt;p class=&#34;noindent&#34;&gt;&lt;span class=&#34;ptmb8t-&#34;&gt;QUIC Client Initial。&lt;/span&gt;QUIC 握手的第一个数据包是 &lt;span class=&#34;ptmri8t-&#34;&gt;Client Initial&lt;/span&gt; 数据包。由于 QUIC 数据包从一开始就被加密，但尚未完成密钥交换，初始数据包使用从目标连接 ID（DCID）和特定版本的 salt 派生出的密钥加密 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:rfc9001&#34;&gt;58&lt;/a&gt;]&lt;/span&gt;。这两个字段都以明文形式出现在 QUIC client initial 数据包中，使得服务器（以及网络观察者）能够解密其载荷。因此，这种加密并不能提供机密性或完整性，但可以防止路径外的数据包伪造攻击。
&lt;/p&gt;
&lt;!--l. 27--&gt;&lt;p class=&#34;indent&#34;&gt;一旦初始数据包的载荷被解密，就会暴露出一个或多个 &lt;span class=&#34;cmtt-10&#34;&gt;CRYPTO&lt;/span&gt; 帧，帧中包含 TLS 1.3 Client Hello 消息，其中列出了客户端支持的密码套件和 TLS 扩展。通常，其中一个 TLS 扩展就是服务器名称指示（SNI），用于指定客户端试图连接的主机名。由于初始密钥可以被任何网络观察者计算出来，TLS Client Hello 及其中的明文内容（包括 SNI）都可以被解密。
&lt;/p&gt;
&lt;!--l. 40--&gt;&lt;p class=&#34;noindent&#34;&gt;&lt;span class=&#34;ptmb8t-&#34;&gt;QUIC 封锁。&lt;/span&gt;2021 年，Elmenhorst 等人发现，虽然伊朗和中国的许多 QUIC 网站无法访问，但这并非由于基于 SNI 的审查。实际上，伊朗是通过封锁这些 QUIC 终端的 UDP 流量 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Elmenhorst2021a&#34;&gt;25&lt;/a&gt; §5.2]&lt;/span&gt;，而中国则同时封锁了这些终端的 TCP 和 UDP 流量 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Elmenhorst2021a&#34;&gt;25&lt;/a&gt; §5.1]&lt;/span&gt;。2022 年 3 月，ValdikSS 发现俄罗斯 TSPU 封锁了所有使用 QUIC 版本 1（0x00, 0x00, 0x00, 0x01）、目标端口为 443 、且载荷长度至少为 1001 字节的 QUIC 连接 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Xue2022b&#34;&gt;70&lt;/a&gt; §5.2, &lt;a href=&#34;#cite:ValdikSS_2022_NTC_HTTP3_QUIC_Post10&#34;&gt;63&lt;/a&gt;]&lt;/span&gt;。2024 年 12 月，乌兹别克斯坦封锁了带有加密 Client Hello（ECH）扩展的 QUIC 连接 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:uzbekistan-quic-ech-block&#34;&gt;16&lt;/a&gt;]&lt;/span&gt;。据我们所知，中国自 2024 年 4 月起基于 SNI 字段封锁 QUIC 连接，使其成为&lt;span class=&#34;ptmri8t-&#34;&gt;截至 2025 年 6 月&lt;/span&gt;&lt;span class=&#34;ptmri8t-&#34;&gt;，世上首个也是唯一一个能做到这一点的国家&lt;/span&gt;。
&lt;/p&gt;
&lt;!--l. 82--&gt;&lt;p class=&#34;noindent&#34;&gt;&lt;span class=&#34;ptmb8t-&#34;&gt;其他审查机制。&lt;/span&gt;GFW 采用多种手段封锁互联网，包括 DNS 污染 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Anonymous2014a&#34;&gt;4&lt;/a&gt;, &lt;a href=&#34;#cite:Anonymous2020a&#34;&gt;6&lt;/a&gt;, &lt;a href=&#34;#cite:Duan2012a&#34;&gt;20&lt;/a&gt;, &lt;a href=&#34;#cite:Farnan2016a&#34;&gt;29&lt;/a&gt;, &lt;a href=&#34;#cite:Hoang2021a&#34;&gt;38&lt;/a&gt;]&lt;/span&gt;、IP 封锁 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Elmenhorst2021a&#34;&gt;25&lt;/a&gt;, &lt;a href=&#34;#cite:Wu2023a&#34;&gt;66&lt;/a&gt;]&lt;/span&gt;、基于关键字的过滤 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Chai2019a&#34;&gt;11&lt;/a&gt;, &lt;a href=&#34;#cite:Clayton2006a&#34;&gt;13&lt;/a&gt;, &lt;a href=&#34;#cite:Hoang2024a&#34;&gt;37&lt;/a&gt;]&lt;/span&gt;，以及主动探测 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Alice2020a&#34;&gt;2&lt;/a&gt;, &lt;a href=&#34;#cite:Ensafi2015b&#34;&gt;26&lt;/a&gt;, &lt;a href=&#34;#cite:Wu2023a&#34;&gt;66&lt;/a&gt; §5, &lt;a href=&#34;#cite:Winter2012a&#34;&gt;65&lt;/a&gt; §4.5, &lt;a href=&#34;#cite:Dunna2018a&#34;&gt;22&lt;/a&gt; §4.3]&lt;/span&gt;。对于基于 UDP 的 DNS 请求，GFW 会向被封锁域名的查询注入伪造响应包。对于 HTTP(S) 流量，GFW 会对 TCP 连接进行有状态的检测，并在检测到被审查域名（出现在 HTTP Host 头或 TLS SNI 扩展字段中）时，注入伪造的 RST 包 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Wu2025a&#34;&gt;67&lt;/a&gt;]&lt;/span&gt;。随后会GFW有一段“封锁残留”期(residual censorship)，其间主要通过注入伪造的 SYN+ACK 和 RST 数据包阻断连接，最新研究表明GFW也可能在此期间采用丢包手段阻断连接 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Hoang2024a&#34;&gt;37&lt;/a&gt; §5.4, &lt;a href=&#34;#cite:Bock2020ESNI&#34;&gt;10&lt;/a&gt;]&lt;/span&gt;。
&lt;/p&gt;
&lt;h2 class=&#34;sectionHead&#34; id=&#34;3&#34;&gt;
     &lt;a id=&#34;sec:3-quic-censorship-mechanism&#34; href=&#34;#sec:3-quic-censorship-mechanism&#34;&gt;
       &lt;span class=&#34;titlemark&#34;&gt;3.&lt;/span&gt; QUIC 封锁机制
     &lt;/a&gt;
&lt;/h2&gt;
&lt;!--l. 4--&gt;&lt;p class=&#34;noindent&#34; &gt;本节我们探讨 GFW 如何检测并封锁包含特定域名的 QUIC 连接。我们发现，GFW 会基于 client Initial 包中的 SNI 字段进行封锁，无论服务器 IP 地址为何。GFW 检查 UDP 流的首个数据包，如果该数据包为QUIC client Initial，且其中的SNI在 QUIC 专用封锁名单上，那么GFW会在之后的 3 分钟内丢弃从客户端到服务器相应端口的后续所有UDP数据包（见 &lt;a href=&#34;#fig:1-quic-blocking-overview&#34;&gt;图 1&lt;/a&gt;）。
&lt;/p&gt;
&lt;div class=&#39;figure&#39;&gt;
     &lt;p class=&#39;noindent&#39; id=&#39;fig:1-quic-blocking-overview&#39;&gt;
         &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/quic-blocking-overview-.png&#39; /&gt;
         &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:1-quic-blocking-overview&#34;&gt;图 1&lt;/a&gt;：QUIC SNI 审查机制概览，包括决策流程、首包解密、基于 SNI 的过滤，以及针对被标记连接触发的残留封锁。
         &lt;/p&gt;
     &lt;/p&gt;
&lt;/div&gt;
&lt;!--l. 23--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span
class=&#34;ptmb8t-&#34;&gt;实验设置与测量点。&lt;/span&gt;我们在中国境内外部署了一组测量点，支持双向测试穿越 GFW 的连接。中国境内共部署了 7 个测量点：北京 4 个，广州 2 个，上海 1 个。选择这些地区是因为它们是中国主要的互联网交换点（IXP），GFW 也被证实部署于此 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Sakamoto2024a&#34;&gt;52&lt;/a&gt; §4.5, &lt;a href=&#34;#cite:Hanson2015a&#34;&gt;36&lt;/a&gt;, &lt;a href=&#34;#cite:Fan2025a&#34;&gt;28&lt;/a&gt; VI.C]&lt;/span&gt;。这些测量点分别托管于腾讯云（AS45090）和阿里云（AS37963）。境外测量点分布于新加坡（AS16509）、圣何塞（AS14618）、旧金山（AS14061）、弗吉尼亚北部（AS14618）、开普敦（AS16509）以及一所美国大学（AS32）。
&lt;/p&gt;
&lt;!--l. 37--&gt;&lt;p class=&#34;indent&#34; &gt;我们基于 Quiche &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:cloudflare-quiche&#34;&gt;46&lt;/a&gt;]&lt;/span&gt;开发了可灵活构造特定的 client Initial 包的QUIC 客户端。由于我们观察到无论服务器是否响应，只要客户端发的数据包经过GFW就会触发封锁，因此实验中服务器仅运行 &lt;span class=&#34;cmtt-10&#34;&gt;tcpdump&lt;/span&gt;，而非真正的 QUIC 服务端。为确保测量准确且避免干扰，服务器端配置了 &lt;span class=&#34;cmtt-10&#34;&gt;iptables&lt;/span&gt; 规则，丢弃所有发往客户端的 ICMP 包。
&lt;/p&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3.1&#34;&gt;
     &lt;a id=&#34;sec:3.1-quic-connection-blocking&#34; href=&#34;#sec:3.1-quic-connection-blocking&#34;&gt;
       &lt;span class=&#34;titlemark&#34;&gt;3.1.&lt;/span&gt; QUIC 连接封锁
     &lt;/a&gt;
   &lt;/h3&gt;
   &lt;!--l. 60--&gt;&lt;p class=&#34;noindent&#34;&gt;
     在检测到包含应被禁止的 SNI 的 QUIC Client Initial 消息后，GFW 会丢弃后续所有与触发包具有相同源 IP、目的 IP 及目的端口的 UDP 数据包。我们通过从中国三个测量点向美国服务器发送 QUIC 版本 1 且 SNI 为 &lt;span class=&#34;cmtt-10&#34;&gt;google.com&lt;/span&gt; 的 Initial 消息发现，该消息能够到达服务器，但随后客户端到服务器方向的任何 UDP 数据包在 180 秒内均被该审查系统丢弃。
   &lt;/p&gt;
   &lt;!--l. 73--&gt;&lt;p class=&#34;indent&#34;&gt;
     在此期间，即便客户端从不同源端口向相同服务器端点（相同目的 IP 与端口）发送 10 字节随机数据包，GFW 也会同样丢弃。然而，若将随机数据包发送至服务器上的新的目的端口，则不会被丢弃，这表明 GFW 基于三元组（源 IP、目的 IP、目的端口）进行封锁，以防止客户端仅通过更改源端口就可以简单地绕过审查。我们通过让服务器在接收 QUIC Client Initial 消息后发送 Server Initial 消息及携带10 字节随机负载的 UDP 数据包，进一步确认了该封锁仅发生在客户端到服务器的方向；而服务器发送到客户端的数据包并不会被丢弃。
   &lt;/p&gt;
   &lt;!--l. 95--&gt;&lt;p class=&#34;noindent&#34;&gt;
     &lt;span class=&#34;ptmb8t-&#34;&gt;一个数据包即可触发残留封锁。  &lt;/span&gt;与此前文献中记录的 GFW 对 TLS‑SNI 的封锁 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Hoang2021a&#34;&gt;38&lt;/a&gt; §3.1]&lt;/span&gt; 需要至少检测到两个数据包（SYN包后跟 PSH/ACK包）不同，QUIC 的封锁机制仅需单个包含被封锁 SNI 的Client Initial 数据包即可激活。这是已知首例 GFW 针对基于 UDP 协议实施的&lt;span class=&#34;ptmri8t-&#34;&gt;残留封锁&lt;/span&gt;。尽管 GFW 早前通过注入伪造数据包来审查 UDP 上的 DNS 流量 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Anonymous2014a&#34;&gt;4&lt;/a&gt;, &lt;a href=&#34;#cite:Anonymous2020a&#34;&gt;6&lt;/a&gt;, &lt;a href=&#34;#cite:Hoang2021a&#34;&gt;38&lt;/a&gt;]&lt;/span&gt;，但此前并未以丢包方式阻断 UDP 协议流量。这或许因为如要具备丢弃数据包的能力，审查设备须&lt;span class=&#34;ptmri8t-&#34;&gt;串联部署&lt;/span&gt;在链路中，而先前基于注入伪造数据包的审查方式则仅需让审查设备&lt;span class=&#34;ptmri8t-&#34;&gt;并联部署&lt;/span&gt;在链路上，并复制一份数据流到审查设备的链路上即可。GFW残留丢包的行为引入了新的可用性攻击漏洞，攻击者可利用 GFW 阻断国内外任意主机间的通信。我们将在&lt;a href=&#34;#sec:6-availability-attack&#34;&gt;第 6 节&lt;/a&gt;深入讨论此攻击。
   &lt;/p&gt;
   &lt;!--l. 114--&gt;&lt;p class=&#34;noindent&#34;&gt;
     &lt;span class=&#34;ptmb8t-&#34;&gt;双向不一致封锁。  &lt;/span&gt;我们起初的实验结果显示，进出中国的流量均可触发QUIC封锁，但GFW的这一特征在 2024 年 9 月 30 日后发生了变化。此后，从国外发往中国大多数测量点的QUIC流量已不再触发封锁，发往北京和广州的流量除外。
   &lt;/p&gt;
   &lt;!--l. 127--&gt;&lt;p class=&#34;noindent&#34;&gt;
     &lt;span class=&#34;ptmb8t-&#34;&gt;封锁延迟。  &lt;/span&gt;我们的实验显示，GFW从检测到包含被封锁 SNI 的 QUIC Client Initial 数据包到其开始丢弃数据包之间存在短暂延迟，这使得一些数据包能够到达服务器。GFW 未能即时丢弃触发封锁的 Initial 包，反映出其具有&lt;span class=&#34;ptmri8t-&#34;&gt;并联部署&lt;/span&gt;设备的特征 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Wang2017a&#34;&gt;64&lt;/a&gt; §2.1]&lt;/span&gt;。结合其&lt;span class=&#34;ptmri8t-&#34;&gt;串联部署&lt;/span&gt;才会拥有的丢包能力，我们认为其部署架构为&lt;span class=&#34;ptmri8t-&#34;&gt;混合型&lt;/span&gt;，类似于 GFW 在封锁 TLS ESNI 流量的时采用的部署架构 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:gfw2020esni&#34;&gt;32&lt;/a&gt;]&lt;/span&gt;。
   &lt;/p&gt;
   &lt;!--l. 137--&gt;&lt;p class=&#34;indent&#34;&gt;
     为精确测量此封锁延迟的时长，我们采用了与 2020 年一项研究相似的方法，该项研究测量了GFW对 TLS ESNI流量封锁的延迟 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:gfw2020esni&#34;&gt;32&lt;/a&gt;]&lt;/span&gt;。具体而言，我们测定在QUIC Initial 数据包触发封锁后，服务器还能在后续的多长时间里接收到客户端发来的数据包。
   &lt;/p&gt;
   &lt;!--l. 146--&gt;&lt;p class=&#34;indent&#34;&gt;
     我们在北京测量点进行了为期一天的实验，以确定 GFW 对 QUIC 的封锁延迟。在每小时头五分钟内，我们向位于新加坡的控制服务器发起 25 条 UDP 流（每条流的的源端口和目的端口均不同），我们在每条连接中以 100 包/秒的速率持续发送独特的 10 字节负载。实验进行至第 5 秒时，我们从不同源端口向这 25 个目的端口分别发送带有被封锁 SNI &lt;span class=&#34;cmtt-10&#34;&gt;google.com&lt;/span&gt; 的 QUIC Initial 包，从而触发 GFW 对这 25 个目的端口（无论源端口如何）的封锁，进而使持续发往服务器的 10 字节负载被GFW丢弃。
   &lt;/p&gt;
   &lt;!--l. 159--&gt;&lt;p class=&#34;indent&#34;&gt;
     在服务器端，我们捕获数据包并寻找在 UDP 数据包间存在至少 120 秒间隔的连接，以判定 QUIC Client Initial 包成功触发了封锁。对于这些触发了封锁的连接，我们对比了触发封锁的Client Initial包的发送时间与服务器收到的最后一个 UDP 负载包的发送时间，该时间差即为封锁延迟（精确到 10 毫秒）。
   &lt;/p&gt;
   &lt;!--l. 182--&gt;&lt;p class=&#34;indent&#34;&gt;
     如&lt;a href=&#34;#fig:2-how-fast-the-gfw-blocks&#34;&gt;图 2&lt;/a&gt;所示，封锁延迟范围在 60 毫秒至 7.5 秒之间。超过 90% 的连接在一秒内被阻断，但仍有少数存在较长延迟。我们假设延迟差异源于 GFW 需处理的 QUIC 流量的大小（详见 &lt;a href=&#34;#app:appendix-a&#34;&gt;附录 A&lt;/a&gt;）。我们在&lt;a href=&#34;#sec:5-gfw-degradation-attack&#34;&gt;第 5 节&lt;/a&gt;探讨如何利用GFW的此特性来削弱其封锁 QUIC 流量的能力。
   &lt;/p&gt;
   &lt;div class=&#39;figure&#39;&gt;
     &lt;p class=&#39;noindent&#39; id=&#39;fig:2-how-fast-the-gfw-blocks&#39;&gt;
       &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/how-fast-the-gfw-blocks-.png&#39; /&gt;
       &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:2-how-fast-the-gfw-blocks&#34;&gt;图 2&lt;/a&gt;：CDF 显示 GFW 从观察到需要被审查的QUIC流量到开始丢弃后续数据包所需时间的分布。在超过 90% 的情况下，连接在一秒内被封锁；实验中观测到的延迟的最小值为 0.06 秒，最大值为 7.5 秒。&lt;/p&gt;
     &lt;/p&gt;
   &lt;/div&gt;
   &lt;h3 class=&#34;subsectionHead&#34; id=&#34;3.2&#34;&gt;
     &lt;a id=&#34;sec:3.2-flow-tracking-logic&#34; href=&#34;#sec:3.2-flow-tracking-logic&#34;&gt;
       &lt;span class=&#34;titlemark&#34;&gt;3.2.&lt;/span&gt; 流追踪逻辑
     &lt;/a&gt;
   &lt;/h3&gt;
   &lt;!--l. 215--&gt;&lt;p class=&#34;indent&#34;&gt;
     与具有明确三次握手以标志新连接开始的 TCP 不同，UDP 是无连接的，且无任何明显的传输层握手，这使得中间盒难以识别新的 UDP 流的起始。虽然可通过连接 ID（CID）跟踪 QUIC 连接，但我们发现 GFW 并未使用 CID。相反，GFW 使用 UDP 四元组（源 IP、目的 IP、源端口、目的端口），并在其流追踪系统中采用&lt;span class=&#34;ptmri8t-&#34;&gt;60 秒超时的设定以维护连接状态&lt;/span&gt;。我们的结论基于这样一个事实：只有当 UDP 流的首个数据包是带有被封锁 SNI 的 QUIC 客户端 Initial 消息时，GFW 才会封锁该流；若有其他 UDP 包先行，则不会触发封锁。
   &lt;/p&gt;
   &lt;!--l. 235--&gt;&lt;p class=&#34;indent&#34;&gt;
     在北京的一个测量点，我们向美国服务器发送了一个带有10 字节随机负载的 UDP 包。然后等待一定的时间后，在同一UDP流中每隔一秒发送三个 QUIC 客户端 Initial 消息。我们重复该实验，每次将发送随机负载包与发送客户端 Initial 包之间的延迟增加一秒，直至触发封锁（即 180 秒内没有数据包到达服务器）。
   &lt;/p&gt;
   &lt;!--l. 243--&gt;&lt;p class=&#34;indent&#34;&gt;
     我们发现，当首次随机负载包与客户端 Initial 包之间的延迟达到 60 秒时就封锁就会被触发，这表明该随机 UDP 流的状态被追踪了 60 秒。超过此超时窗口后发送的 QUIC Initial 包可以触发封锁，说明 GFW 已重置该流状态，并将之后的 Initial 包视为新流。
   &lt;/p&gt;
   &lt;!--l. 250--&gt;&lt;p class=&#34;noindent&#34;&gt;
     &lt;span class=&#34;ptmb8t-&#34;&gt;无 UDP 重组。  &lt;/span&gt;我们发现 GFW 不会重组跨多个 UDP 数据包分片的 QUIC Initial 包。鉴于该设计于 2024 年 4 月 7 日部署时，很少有 QUIC 客户端发送大于单个 UDP 数据包的 Initial 包，此设计可能合理。然而，如&lt;a href=&#34;#sec:7-circumvention&#34;&gt;第 7 节&lt;/a&gt;所述，自 2024 年 9 月 13 日 Chrome 引入一系列对 Initial 包的更改后，这些包变得过大，无法装入单个 UDP 数据包，进而使 GFW 只能在首个数据包中出现 SNI 扩展时才能够封锁QUIC流，从而降低了GFW封锁的有效性。
   &lt;/p&gt;

   &lt;h3 class=&#34;subsectionHead&#34; id=&#34;3.3&#34;&gt;
     &lt;a id=&#34;sec:3.3-source-port-must-exceed-destination-port&#34; href=&#34;#sec:3.3-source-port-must-exceed-destination-port&#34;&gt;
       &lt;span class=&#34;titlemark&#34;&gt;3.3.&lt;/span&gt; 源端口须大于目的端口
     &lt;/a&gt;
   &lt;/h3&gt;
   &lt;!--l. 337--&gt;&lt;p class=&#34;indent&#34;&gt;
     我们发现向美国服务器发送带被封锁 SNI 的 QUIC Client Initial 包并不总会触发封锁。为进一步调查，我们进行了多次实验以确定审查器过滤 QUIC 连接的具体规则。
   &lt;/p&gt;
   &lt;!--l. 342--&gt;&lt;p class=&#34;indent&#34;&gt;
     我们选择 401 至 450 的端口范围，端口间间隔为 1。从北京测量点向美国服务器发送带 SNI值为 &lt;span class=&#34;cmtt-10&#34;&gt;google.com&lt;/span&gt; 的 QUIC Initial 消息，枚举该端口范围内所有源端口与目的端口的组合。每次发送后，等待 1 秒，然后每隔 1 秒发送五个带独特 10 字节负载的 UDP 包。该过程重复 10 次，每次使用分配给服务器的 /28 子网中的不同目的 IP，并在重复每次测量时等待 5 分钟以避免前次连接的残留封锁依旧存在。对于每个端口对，我们记录被封锁（即无后续 UDP 包到达）和未被封锁的连接数量。
   &lt;/p&gt;
   &lt;!--l. 356--&gt;&lt;p class=&#34;indent&#34;&gt;
     如 &lt;a href=&#34;#fig:3-heatmap-ports-401-450-step-1_heatmap&#34;&gt;图 3&lt;/a&gt; 所示，当源端口号 ≤ 目的端口号时，GFW 不会封锁连接。但如果封锁封锁能被触发，其封锁情况并不一致，表明GFW执行规则时存在变动。我们对 1 至 65535 全端口范围以 1000 为间隔重复实验，发现该规则在所有端口范围内均保持一致（详见 &lt;a href=&#34;#app:appendix-b&#34;&gt;附录 B&lt;/a&gt;）。
   &lt;/p&gt;

   &lt;div class=&#39;figure&#39;&gt;
     &lt;p class=&#39;noindent&#39; id=&#39;fig:3-heatmap-ports-401-450-step-1_heatmap&#39;&gt;
       &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/heatmap-ports-401-450-step-1_heatmap-.png&#39; /&gt;
       &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:3-heatmap-ports-401-450-step-1_heatmap&#34;&gt;图 3&lt;/a&gt;：当 QUIC Initial 包的源端口 ≤ 目的端口时，GFW 不予封锁。该实验于 2024 年 12 月 2 日在中国北京测量点进行。&lt;/p&gt;
     &lt;/p&gt;
   &lt;/div&gt;

   &lt;!--l. 373--&gt;&lt;p class=&#34;noindent&#34;&gt;
     &lt;span class=&#34;ptmb8t-&#34;&gt;GFW 限制需检查的连接数量。  &lt;/span&gt;GFW应用此基于端口的启发式规则，来减少其需要检查的连接数量。由于大多数客户端会选择较高的临时端口 &lt;span class=&#34;footnote-mark&#34;&gt;&lt;a href=&#34;#fn:gfw-heuristic&#34;&gt;&lt;sup class=&#34;textsuperscript&#34;&gt;2&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt; 并连接至较低的知名端口（如 443），GFW 可通过忽略源端口低于目的端口的数据包，以快速忽略可能的服务器到客户端流量。
   &lt;/p&gt;
   &lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
     &lt;ol&gt;
       &lt;li class=&#39;footnote-text&#39;&gt;
         &lt;a id=&#39;fn:gfw-heuristic&#39;&gt;&lt;/a&gt;
         &lt;span class=&#39;footnote-mark&#39;&gt;&lt;sup class=&#39;textsuperscript&#39;&gt;2&lt;/sup&gt;&lt;/span&gt;
         &lt;span class=&#39;footnotes-text&#39;&gt;Linux 主机的临时端口范围通常为 32768–60999，macOS 与 Windows Vista 及更高版本为 49152–65535。&lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:ephemeral-ports&#34;&gt;56&lt;/a&gt;]&lt;/span&gt;&lt;/span&gt;
       &lt;/li&gt;
     &lt;/ol&gt;
   &lt;/div&gt;

   &lt;!--l. 389--&gt;&lt;p class=&#34;indent&#34;&gt;
     了解到GFW采用了此规则后，我们自然的产生了两个疑问：1）采用此规则能够帮助GFW快速地忽略多少网络流量？2）采用此规则会导致GFW漏检了多少 QUIC Initial 包？为评估GFW的效率与漏报率，我们从美国某大学网络 TAP 收集 UDP 流，并分析源/目的端口分布。
   &lt;/p&gt;
   &lt;!--l. 396--&gt;&lt;p class=&#34;indent&#34;&gt;
     &lt;a href=&#34;#tbl:1-distribution-packet-counts&#34;&gt;表 1&lt;/a&gt; 显示了 2025 年 1 月 22 日 8:00–9:00（太平洋标准时间，UTC-8）期间，美国某大学 TAP 上观察到的 QUIC Initial 包和 UDP 数据包按源/目的端口的分布。审查器仅在 UDP header 的 &lt;span class=&#34;zptmcmrm-&#34;&gt;sport &amp;gt; dport&lt;/span&gt; 时进一步考虑流追踪，使其仅需为约 30% 的 UDP 数据包查表，就可以捕获超过 90% 的 QUIC Initial 包。GFW 实际需要尝试解密的 UDP 包的比例则比30%更低：如 &lt;a href=&#34;#sec:3.2-flow-tracking-logic&#34;&gt;第 3.2 节&lt;/a&gt; 所述，GFW 仅解析 60 秒内未见的流（五元组：源 IP、目的 IP、源端口、目的端口、UDP 协议）的首个 UDP 数据包的负载。
   &lt;/p&gt;
   &lt;div class=&#39;table-container&#39; id=&#39;tbl:1-distribution-packet-counts&#39;&gt;
     &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:1-distribution-packet-counts&#34;&gt;表 1&lt;/a&gt;：2025 年 1 月 22 日 8:00–9:00（太平洋标准时间，UTC-8）期间，美国某大学 TAP 上按源/目的端口统计的包计数分布。GFW仅在 UDP 包的 &lt;span class=&#34;zptmcmrm-&#34;&gt;sport &amp;gt; dport&lt;/span&gt; 时进行流追踪，使其能捕获超过 90% 的 QUIC Initial 包，却仅查表约 30% 的 UDP 数据包。&lt;/p&gt;
     &lt;div class=&#39;tabular&#39;&gt;
       &lt;table class=&#39;tabular&#39; id=&#39;TBL-1&#39;&gt;
         &lt;colgroup id=&#39;TBL-1-1g&#39;&gt;&lt;col id=&#39;TBL-1-1&#39;/&gt;&lt;/colgroup&gt;
         &lt;colgroup id=&#39;TBL-1-2g&#39;&gt;&lt;col id=&#39;TBL-1-2&#39;/&gt;&lt;col id=&#39;TBL-1-3&#39;/&gt;&lt;/colgroup&gt;
         &lt;colgroup id=&#39;TBL-1-3g&#39;&gt;&lt;col id=&#39;TBL-1-4&#39;/&gt;&lt;col id=&#39;TBL-1-5&#39;/&gt;&lt;/colgroup&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;5&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;/td&gt;
           &lt;td colspan=&#34;2&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;QUIC Initial 包&lt;/td&gt;
           &lt;td colspan=&#34;2&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;UDP 数据包&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;5&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;sport &amp;gt; dport&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right; border-right: none;&#34;&gt;6.7 百万&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left; border-left: none; padding-left: 1ch;&#34;&gt;(92.3%)&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right; border-right: none;&#34;&gt;37 亿&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left; border-left: none; padding-left: 1ch;&#34;&gt;(29.8%)&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;5&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;sport &amp;lt; dport&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right; border-right: none;&#34;&gt;0.6 百万&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left; border-left: none; padding-left: 1ch;&#34;&gt;(7.6%)&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right; border-right: none;&#34;&gt;84 亿&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left; border-left: none; padding-left: 1ch;&#34;&gt;(68.0%)&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;5&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;sport = dport&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right; border-right: none;&#34;&gt;4.6 千&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left; border-left: none; padding-left: 1ch;&#34;&gt;(0.06%)&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right; border-right: none;&#34;&gt;27.7 百万&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left; border-left: none; padding-left: 1ch;&#34;&gt;(2.2%)&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;5&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
       &lt;/table&gt;
     &lt;/div&gt;
   &lt;/div&gt;
   &lt;h3 class=&#34;subsectionHead&#34; id=&#34;3.4&#34;&gt;
     &lt;a id=&#34;sec:3.4-diurnal-blocking-pattern&#34; href=&#34;#sec:3.4-diurnal-blocking-pattern&#34;&gt;
       &lt;span class=&#34;titlemark&#34;&gt;3.4.&lt;/span&gt; 日间封锁模式
     &lt;/a&gt;
   &lt;/h3&gt;

   &lt;!--l. 464--&gt;&lt;p class=&#34;noindent&#34;&gt;
     &lt;a href=&#34;#fig:3-heatmap-ports-401-450-step-1_heatmap&#34;&gt;图 3&lt;/a&gt; 中的封锁情况表明，连接并非始终被封锁，封锁具有非确定性。为探究此现象，我们从不同测量点进行了为期一周的实验，观察全天及所有目的端口的 QUIC 连接封锁频率。我们从中国的三个测量点向美国服务器每次并发 1000 条QUIC连接（即每 5 秒从三个不同地点向美国服务器的 10 个 IPv4 地址的所有端口发送一个 SNI 值为&lt;span class=&#34;cmtt-10&#34;&gt;google.com&lt;/span&gt; 的 QUIC Client Initial 包，随后等待 1 秒后发送 5 个带特定 10 字节负载的 UDP 包）。我们在所有情况下均确保源端口大于目的端口（参见&lt;a href=&#34;#sec:3.3-source-port-must-exceed-destination-port&#34;&gt;第 3.3 节&lt;/a&gt;）。若在 QUIC Initial 后服务器未收到任何 10 字节后续负载包，则将该连接标记为被封锁。我们随后按小时汇总各地客户端的数据，计算封锁连接的百分比。
   &lt;/p&gt;

   &lt;!--l. 481--&gt;&lt;p class=&#34;noindent&#34;&gt;
     &lt;span class=&#34;ptmb8t-&#34;&gt;封锁概率受日间不同时段的影响。  &lt;/span&gt;如 &lt;a href=&#34;#fig:4-diurnal-timeseries-three-sources&#34;&gt;图 4&lt;/a&gt; 所示，对来自三座城市的流量的封锁均呈现明显的日间模式：封锁率在凌晨时段达到峰值，白天下降至最低。北京的封锁率始终最高，其次为上海和广州。该模式表明，封锁率受中国网络流量使用情况的影响，在网络流量低峰期封锁最为严重。
   &lt;/p&gt;

   &lt;div class=&#39;figure&#39;&gt;
     &lt;p class=&#39;noindent&#39; id=&#39;fig:4-diurnal-timeseries-three-sources&#39;&gt;
       &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/diurnal-timeseries-three-sources-.png&#39; /&gt;
       &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:4-diurnal-timeseries-three-sources&#34;&gt;图 4&lt;/a&gt;：来自中国三大城市的客户端到美国服务器的 QUIC 连接封锁百分比随时间的变化（中国标准时间 CST，UTC+8），实验日期为 2024 年 11 月 15 日至 22 日。&lt;/p&gt;
     &lt;/p&gt;
   &lt;/div&gt;

   &lt;!--l. 490--&gt;&lt;p class=&#34;indent&#34;&gt;
     我们在此假设此现象源于 GFW 在任意时刻仅能处理有限流量。由于大规模解密 QUIC Initial 包的运行成本很高，使得封锁率对网络负载敏感，而负载随时段波动。先前研究也在 GFW 的关键词过滤和 DNS 注入中观察到日间封锁模式 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Anonymous2014a&#34;&gt;4&lt;/a&gt; §7, &lt;a href=&#34;#cite:Crandall2007a&#34;&gt;15&lt;/a&gt;  §3.2]&lt;/span&gt;，表明GFW受计算能力限制而在网络流量高峰期审查效率下降。鉴于解析 QUIC 流量较解析 HTTP 和 DNS 等明文协议更耗费资源，我们将在&lt;a href=&#34;#sec:5-gfw-degradation-attack&#34;&gt;第 5 节&lt;/a&gt;进一步展示，通过持续向 GFW 发送大量 QUIC Initial 包可导致其审查性能下降。
   &lt;/p&gt;

   &lt;h3 class=&#34;subsectionHead&#34; id=&#34;3.5&#34;&gt;
     &lt;a id=&#34;sec:3.5-locating-the-censorship-devices&#34; href=&#34;#sec:3.5-locating-the-censorship-devices&#34;&gt;
       &lt;span class=&#34;titlemark&#34;&gt;3.5.&lt;/span&gt; 审查设备定位
     &lt;/a&gt;
   &lt;/h3&gt;

   &lt;!--l. 568--&gt;&lt;p class=&#34;indent&#34;&gt;
     我们使用递增 IP TTL 值的方法进行测距，以定位审查设备。在 QUIC Client Initial 消息中设置特定的 IP TTL值，从 1 开始每次 +1。在每次实验的第一秒，向美国服务器的 53 端口发送 10 个 SNI 值为 &lt;span class=&#34;cmtt-10&#34;&gt;google.com&lt;/span&gt; 的 QUIC Initial 包，这样只要数据包到达审查设备即可触发封锁。5 秒后，我们再发送 100 个与 Initial 包相同四元组的 UDP 数据包，其负载为 10 字节，包含所用到的 TTL 的初始值。若这 100 个 UDP 包均被丢弃，则表明 Initial 包已到达审查设备。该测量在北京、上海和广州三个测量点各重复 10 次。
   &lt;/p&gt;

   &lt;!--l. 581--&gt;&lt;p class=&#34;indent&#34;&gt;
     如 &lt;a href=&#34;#tbl:2-traceroute-blocking-points&#34;&gt;表 2&lt;/a&gt; 所示，我们发现上海、北京和广州的 QUIC 封锁分别在 IP TTL 初始值为 9、11 和 12 时触发。触发封锁的那一跳位于上海和广州的中国电信骨干网，及北京的中国联通骨干网。
   &lt;/p&gt;

   &lt;!--l. 586--&gt;&lt;p class=&#34;indent&#34;&gt;
     类似地，我们对 &lt;span class=&#34;cmtt-10&#34;&gt;google.com&lt;/span&gt; 发起 DNS 查询，使用相同四元组和递增 IP TTL，发送至服务器 53 端口。DNS 注入同样在与 QUIC 封锁拥有相同的IP TTL 初始值时触发，表明这些新QUIC审查设备与现有 GFW 设备位于网络的同一跳。
   &lt;/p&gt;

   &lt;div class=&#39;table-container&#39; id=&#39;tbl:2-traceroute-blocking-points&#39;&gt;
     &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:2-traceroute-blocking-points&#34;&gt;表 2&lt;/a&gt;：traceroute 结果揭示 GFW UDP 审查节点的位置：QUIC 和 DNS 封锁设备所在跳点的信息，及从三个客户端出发的最后一个未被审查跳点的信息。&lt;/p&gt;
     &lt;div class=&#39;tabular&#39;&gt;
       &lt;table class=&#39;tabular&#39; id=&#39;TBL-2&#39;&gt;
         &lt;colgroup id=&#39;TBL-2-1g&#39;&gt;
           &lt;col id=&#39;TBL-2-1&#39;/&gt;
           &lt;col id=&#39;TBL-2-2&#39;/&gt;
           &lt;col id=&#39;TBL-2-3&#39;/&gt;
           &lt;col id=&#39;TBL-2-4&#39;/&gt;
         &lt;/colgroup&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;城市&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;跳点计数 (QUIC/DNS)&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;触发封锁前的一跳 (ISP/AS)&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;触发封锁的跳点 (ISP/AS)&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;上海&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;9/9&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;中国电信上海省网络 (AS4812)&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;中国电信骨干网 (AS4134)&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;北京&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;12/12&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;中国联通骨干网 (AS4837)&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;中国联通骨干网 (AS4837)&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;广州&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;11/11&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;中国电信广东省网络 (AS4134)&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;中国电信骨干网 (AS4134)&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
       &lt;/table&gt;
     &lt;/div&gt;
   &lt;/div&gt;
      &lt;h3 class=&#34;subsectionHead&#34; id=&#34;3.6&#34;&gt;
     &lt;a id=&#34;sec:3.6-quic-parsing-idiosyncrasies&#34; href=&#34;#sec:3.6-quic-parsing-idiosyncrasies&#34;&gt;
       &lt;span class=&#34;titlemark&#34;&gt;3.6.&lt;/span&gt; QUIC 解析特异性
     &lt;/a&gt;
   &lt;/h3&gt;

   &lt;!--l. 699--&gt;&lt;p class=&#34;noindent&#34;&gt;
   GFW 对 QUIC 的封锁在多个方面并未严格遵循 QUIC 规范 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:rfc9000&#34;&gt;43&lt;/a&gt;, &lt;a href=&#34;#cite:rfc9001&#34;&gt;58&lt;/a&gt;]&lt;/span&gt;。
   我们制作并发送了一些修改过的QUIC负载。根据RFC规范，合规的实现应该拒绝这些负载。我们想以此来观察它们是否依旧会触发防火长城（GFW）的审查机制。
   若确实触发，则表明 GFW 并未正确忽略不合规的 QUIC 负载，从而可能为规避审查或寻找其他漏洞提供机会。
   我们所用的修改后 QUIC 负载详见 &lt;a href=&#34;#tbl:3-experiment-characterization&#34;&gt;表 3&lt;/a&gt;。&lt;a href=&#34;#fig:5-quic_parse_heatmap&#34;&gt;图 5&lt;/a&gt;展示了向 GFW 发送这些负载的结果。对于每种负载，我们在两个方向（中国境内测量点到境外服务器，及反方向）各发送 20 条连接，以判断该连接是否会触发封锁。
   &lt;/p&gt;

   &lt;div class=&#34;table-container&#34; id=&#34;tbl:3-experiment-characterization&#34;&gt;

     &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:3-experiment-characterization&#34;&gt;表 3&lt;/a&gt;：以下是我们为探明防火长城（GFW）的QUIC解析机制所做的各项实验的描述。对于每一项实验，我们都标明了其负载是否曾被封锁（&lt;a href=&#34;#sec:3.6-quic-parsing-idiosyncrasies&#34;&gt;第 3.6 节&lt;/a&gt;），以及它能否被用来降低GFW的性能（&lt;a href=&#34;#sec:5-gfw-degradation-attack&#34;&gt;第 5 节&lt;/a&gt;）。&lt;/p&gt;
     &lt;div class=&#34;tabular&#34;&gt;
       &lt;table class=&#34;tabular&#34; id=&#34;TBL-3&#34;&gt;
         &lt;colgroup id=&#34;TBL-3-1g&#34;&gt;
           &lt;col id=&#34;TBL-3-1&#34; /&gt;
           &lt;col id=&#34;TBL-3-2&#34; /&gt;
           &lt;col id=&#34;TBL-3-3&#34; /&gt;
           &lt;col id=&#34;TBL-3-4&#34; /&gt;
         &lt;/colgroup&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;实验编号&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;对被用于测试的 QUIC Initial 数据包的描述&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;能否触发封锁？&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;能否削弱GFW性能？&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;1&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;QUIC包packet编号为 1 字节。&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✓&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✓&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;2&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;从 QUIC 数据包中移除最后一个字节。&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✕&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✓&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;3&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;使用错误的版本号和不正确的认证标签。版本号：&lt;span class=&#34;cmtt-9&#34;&gt;0x00000002&lt;/span&gt;。&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✕&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✕&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;4&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;源连接 ID 和目的连接 ID 的长度均设置为 &lt;span class=&#34;cmtt-9&#34;&gt;0x00&lt;/span&gt;。&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✓&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✓&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;5&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;源连接 ID 长度为 &lt;span class=&#34;cmtt-9&#34;&gt;0xff&lt;/span&gt;。&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✕&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✓&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;6&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;CRYPTO 帧长度为 &lt;span class=&#34;cmtt-9&#34;&gt;0x00&lt;/span&gt;，但仍包含有效载荷。&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✓&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✓&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;7&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;在非 SNI 扩展中包含敏感域名（例如在 ALPN 中包含 &lt;span class=&#34;cmtt-9&#34;&gt;google.com&lt;/span&gt;）。&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✕&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✓&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;8&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;QUIC 负载仅包含 1 个 &lt;span class=&#34;cmtt-9&#34;&gt;CRYPTO&lt;/span&gt; 帧，以及多个 &lt;span class=&#34;cmtt-9&#34;&gt;PING&lt;/span&gt; 和 &lt;span class=&#34;cmtt-9&#34;&gt;PADDING&lt;/span&gt; 帧。&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✕&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✓&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;9&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;在 TLS Client Hello 中使用带有外部 SNI &lt;span class=&#34;cmtt-9&#34;&gt;cloudflare-ech.com&lt;/span&gt; 的 Encrypted Client Hello 扩展。&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✕&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✓&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:center;&#34;&gt;10&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;QUIC 版本 2 的数据包。&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✕&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:center;&#34;&gt;✕&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
       &lt;/table&gt;
     &lt;/div&gt;
   &lt;/div&gt;

   &lt;div class=&#39;figure&#39;&gt;
     &lt;p class=&#39;noindent&#39; id=&#39;fig:5-quic_parse_heatmap&#39;&gt;
       &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/quic_parse_heatmap-.png&#39; /&gt;
       &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:5-quic_parse_heatmap&#34;&gt;图 5&lt;/a&gt;：各实验中QUIC 数据包触发封锁的比例。对每种负载，我们创建 20 个连接，并统计到达目标主机的数量。表 3 中描述的每种负载都对标准 QUIC Initial 包进行了修改，从而揭示了 GFW QUIC 封锁器的解析逻辑。&lt;/p&gt;
     &lt;/p&gt;
   &lt;/div&gt;

   &lt;!--l. 719--&gt;&lt;p class=&#34;noindent&#34;&gt;&lt;span class=&#34;ptmb8t-&#34;&gt;无需填充。  &lt;/span&gt;尽管 QUIC 规范要求 Initial 数据包的长度至少为 1200 字节，但我们发现 GFW 并未强制执行此要求。我们发送仅 137 字节的负载就能触发封锁。但由于 GFW 不会注入伪造的数据包，因此不存在放大攻击的风险。&lt;/p&gt;

   &lt;!--l. 729--&gt;&lt;p class=&#34;noindent&#34;&gt;&lt;span class=&#34;ptmb8t-&#34;&gt;长度字段歧义。  &lt;/span&gt;规范中定义连接 ID 长度应在 8 到 20 字节之间；但该字段实际支持最多 255 字节。我们发现，将源连ID和目的连接ID的长度均设为 &lt;span class=&#34;cmtt-10&#34;&gt;0x00&lt;/span&gt;（过短）仍会触发封锁，尽管规范中规定应当在此情况下忽略数据包；而设为 &lt;span class=&#34;cmtt-10&#34;&gt;0xff&lt;/span&gt;（过长）则未触发封锁，表明 GFW 正确检查了上限。有趣的是，即使 &lt;span class=&#34;cmtt-10&#34;&gt;CRYPTO&lt;/span&gt; 帧的长度字段为 &lt;span class=&#34;cmtt-10&#34;&gt;0x00&lt;/span&gt;，只要实际负载中包含被封锁的 SNI，GFW 仍会封锁该负载。这表明 GFW 根据剩余负载推断 &lt;span class=&#34;cmtt-10&#34;&gt;CRYPTO&lt;/span&gt; 帧长度，因此无法正确处理分片的 &lt;span class=&#34;cmtt-10&#34;&gt;CRYPTO&lt;/span&gt; 帧（例如 Google Chrome 浏览器所用）。&lt;/p&gt;

   &lt;!--l. 742--&gt;&lt;p class=&#34;noindent&#34;&gt;&lt;span class=&#34;ptmb8t-&#34;&gt;仅封锁特定版本的QUIC。&lt;/span&gt;GFW仅对QUIC版本 1 的数据包（即明文的版本字段为 &lt;span class=&#34;cmtt-10&#34;&gt;0x00000001&lt;/span&gt; ）进行解析和封锁。新标准化的 QUIC 版本 2 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:rfc9369&#34;&gt;21&lt;/a&gt;]&lt;/span&gt;（其初始加密密钥使用不同的 salt 值）仍然不受封锁。这表明 GFW 要么未更新其对新版本 salt 值的封锁机制，要么仅依赖针对版本 1 的明文字节模式匹配进行检测。&lt;/p&gt;
   &lt;h2 class=&#34;sectionHead&#34; id=&#34;4&#34;&gt;
     &lt;a id=&#34;sec:4-monitoring-the-blocklist-over-time&#34; href=&#34;#sec:4-monitoring-the-blocklist-over-time&#34;&gt;
       &lt;span class=&#34;titlemark&#34;&gt;4.&lt;/span&gt; 监测封锁名单随时间的变化
     &lt;/a&gt;
   &lt;/h2&gt;
   &lt;!--l. 4--&gt;&lt;p class=&#34;noindent&#34;&gt;
     在本节中，我们调查 GFW QUIC‑SNI 封锁机制所屏蔽的网站，考察当前被封锁站点、封锁名单随时间的变化，以及 QUIC 封锁名单与 TLS‑SNI、HTTP 和 DNS 等其他审查方式使用的封锁名单的对比。如&lt;a href=&#34;#sec:3.4-diurnal-blocking-pattern&#34;&gt;第 3.4 节&lt;/a&gt;所述，GFW 的 QUIC 封锁机制具有非确定性，因此需采用能最小化漏报的实验方法。对每个待测域名，我们从多个测量点发送携带该 SNI 的 QUIC Client Initial 数据包，并进行多次试验。此外，为避免目的端口上的可能的残留封锁，我们不会在180 秒的窗口内重复使用相同的三元组（源 IP、目的 IP、目的端口）进行测试。
   &lt;/p&gt;
   &lt;!--l. 17--&gt;&lt;p class=&#34;indent&#34;&gt;
     我们对 GFW 的 QUIC 封锁名单进行了超过三个月的监测。由于双向封锁的不一致性——具体而言，大多数测量点在 2024 年 9 月 30 日后不再采用双向封锁——我们采用“由内到外”的测量方式。我们在北京（AS45090）部署 10 个测量点并运行客户端的测试程序，在美国某大学（AS32）部署 1 个测量点作为服务器。该服务器分配了一个 /28 IPv4 子网。对每个待测域名，客户端发送一个 QUIC Client Initial 消息至服务器，等待 1 秒后再发送 5 个间隔 1 秒的包含独特 10 字节负载的UDP包。若所有后续 UDP 包均未到达服务器，则将该 SNI 标记为被封锁。
   &lt;/p&gt;
   &lt;!--l. 28--&gt;&lt;p class=&#34;indent&#34;&gt;
     我们使用 2024 年 10 月 2 日获取的完整 Tranco 列表（ID: 664NX）&lt;span class=&#34;footnote-mark&#34;&gt;&lt;a href=&#34;#fn:ranco-full-list&#34;&gt;&lt;sup class=&#34;textsuperscript&#34;&gt;3&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;用于测试，该列表包含约 700 万条完全限定域名（FQDN）。我们承认该列表或无法穷尽所有被封锁域名，但认为基于此类流行域名的大规模测试得出的样本，能代表 GFW 的 QUIC 封锁名单。
   &lt;/p&gt;
   &lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
     &lt;ol&gt;
       &lt;li class=&#34;footnote-text&#34;&gt;
         &lt;a id=&#34;fn:ranco-full-list&#34;&gt;&lt;/a&gt;
         &lt;span class=&#34;footnote-mark&#34;&gt;&lt;sup class=&#34;textsuperscript&#34;&gt;3&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;
         &lt;span class=&#34;footnotes-text&#34;&gt;该列表可通过以下链接获取：&lt;a href=&#34;https://tranco-list.eu/list/664NX/full&#34;&gt;https://tranco-list.eu/list/664NX/full&lt;/a&gt;&lt;/span&gt;
       &lt;/li&gt;
     &lt;/ol&gt;
   &lt;/div&gt;
   &lt;!--l. 36--&gt;&lt;p class=&#34;indent&#34;&gt;
     在每次测试中，北京的 10 个客户端测量点分别向美国服务器的不同 IP 地址发送一个 QUIC Client Initial 消息。基于&lt;a href=&#34;#sec:3.3-source-port-must-exceed-destination-port&#34;&gt;第 3.3 节&lt;/a&gt;的发现，我们使用的源端口始终大于目的端口以触发封锁。实验通过 cronjob 在中国标准时间（CST）凌晨 3 点至 6 点间运行，因为我们观察到此时段的封锁率最高。
   &lt;/p&gt;
   &lt;!--l. 45--&gt;&lt;p class=&#34;indent&#34;&gt;
     由于该时段我们测得的封锁率至少为50%，我们对每个 QUIC Client Initial 测试重复 10 次，以确保封锁名单提取准确率高于
     &lt;span class=&#34;zptmcmr-&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;zpzccmry-&#34;&gt;−&lt;/span&gt;&lt;span class=&#34;zptmcmr-&#34;&gt;(1 − 50%)&lt;/span&gt;&lt;sup&gt;&lt;span class=&#34;zptmcmr-x-x-74&#34;&gt;10&lt;/span&gt;&lt;/sup&gt;&lt;span class=&#34;zptmcmr-&#34;&gt;≈ 99.9%&lt;/span&gt;。服务器端按天聚合各被封锁 SNI 的数据。实验自 2024 年 10 月 8 日至 2025 年 1 月 15 日持续运行超过三个月。
   &lt;/p&gt;
   &lt;div class=&#39;figure&#39;&gt;
     &lt;p class=&#39;noindent&#39; id=&#39;fig:6-availability-attack&#39;&gt;
       &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/domains-blocked-over-quic-weekly-.png&#39; /&gt;
       &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:6-availability-attack&#34;&gt;图 6&lt;/a&gt;：2024 年 10 月 8 日至 2025 年 1 月 15 日期间，GFW QUIC‑SNI 封锁 Tranco 列表（ID: 664NX）中的 FQDN 数量。柱状图展示了每周封锁名单的增减情况。&lt;/p&gt;
     &lt;/p&gt;
   &lt;/div&gt;
   &lt;!--l. 53--&gt;&lt;p class=&#34;noindent&#34;&gt;
     &lt;span class=&#34;ptmb8t-&#34;&gt;QUIC 封锁名单。  &lt;/span&gt;按周统计，我们发现 GFW 平均封锁 43.8K 个Tranco 列表中FQDN（见 &lt;a href=&#34;#fig:6-availability-attack&#34;&gt;图 6&lt;/a&gt;）。在整个实验期间，共观测到 58,207 个不同的 FQDN 被封锁（见 &lt;a href=&#34;#tbl:4-fqdn-quic-block&#34;&gt;表 4&lt;/a&gt;）。
   &lt;/p&gt;
   &lt;div class=&#39;table-container&#39; id=&#39;tbl:4-fqdn-quic-block&#39;&gt;
     &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:4-fqdn-quic-block&#34;&gt;表 4&lt;/a&gt;：支持 QUIC 的 FQDN 总数、被 QUIC‑SNI 封锁的 FQDN 数量及两者交叉情况。QUIC 封锁测试时间为 2024 年 10 月 8 日至 2025 年 1 月 15 日。&lt;/p&gt;
     &lt;div class=&#39;tabular&#39;&gt;
       &lt;table class=&#39;tabular&#39; id=&#39;TBL-4&#39;&gt;
         &lt;colgroup&gt;&lt;col id=&#39;TBL-4-1&#39;/&gt;&lt;col id=&#39;TBL-4-2&#39;/&gt;&lt;/colgroup&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;2&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;完全限定域名（FQDN）&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;数量&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;2&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;测试总数（Tranco 列表）&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;6,955,968&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;2&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;支持 QUIC&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;1,489,967&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;2&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;曾被GFW QUIC 封锁&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;58,207&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;2&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;曾被封锁且支持 QUIC&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;38,451&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;2&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
       &lt;/table&gt;
     &lt;/div&gt;
   &lt;/div&gt;
   &lt;!--l. 93--&gt;&lt;p class=&#34;noindent&#34;&gt;
     &lt;span class=&#34;ptmb8t-&#34;&gt;被 QUIC 封锁的域名可能并不支持 QUIC。  &lt;/span&gt;我们通过直接发起 HTTP/3 请求以测试域名的 QUIC 支持情况，而非依赖 &lt;span class=&#34;cmtt-10&#34;&gt;Alt-Svc&lt;/span&gt; 头，因为部分服务器虽支持 HTTP/3‑over‑QUIC，却并未宣告该支持。测量结果显示，58,207 个 FQDN 曾被 QUIC 封锁，其中仅 38,451 个支持 HTTP/3‑over‑QUIC（见 &lt;a href=&#34;#tbl:4-fqdn-quic-block&#34;&gt;表 4&lt;/a&gt;）。在这些被封锁域名中，有 9,345 个常见二级域名（如 &lt;span class=&#34;cmtt-10&#34;&gt;google.com&lt;/span&gt;、&lt;span class=&#34;cmtt-10&#34;&gt;hrw.org&lt;/span&gt;、&lt;span class=&#34;cmtt-10&#34;&gt;youtube.com&lt;/span&gt;、&lt;span class=&#34;cmtt-10&#34;&gt;tiktok.com&lt;/span&gt;）被屏蔽，但仅其中的 3,233 个支持 QUIC。值得注意的是，&lt;span class=&#34;cmtt-10&#34;&gt;googlevideo.com&lt;/span&gt; 子域名大规模出现在封锁名单（35,443 个），暗示存在针对 &lt;span class=&#34;cmtt-10&#34;&gt;*.googlevideo.com&lt;/span&gt; 的广泛规则，并导致 QUIC 支持域名数量增加。由于并非所有被 QUIC 封锁的域名都支持 QUIC，我们难以确定审查者是如何决定 GFW 的QUIC封锁名单的。GFW 可能是为了预防这些域名未来会支持 QUIC 而进行了提前封锁，或基于与 QUIC 无关的其他标准做出封锁决策。
   &lt;/p&gt;
   &lt;h3 class=&#34;subsectionHead&#34; id=&#34;4.1&#34;&gt;
     &lt;a id=&#34;sec:4.1-comparison-with-other-blocklists&#34; href=&#34;#sec:4.1-comparison-with-other-blocklists&#34;&gt;
       &lt;span class=&#34;titlemark&#34;&gt;4.1.&lt;/span&gt; 与其他封锁名单的比较
     &lt;/a&gt;
   &lt;/h3&gt;
   &lt;!--l. 113--&gt;&lt;p class=&#34;noindent&#34;&gt;
     我们对 GFW 的 QUIC‑SNI 封锁名单与其他既有审查机制的封锁名单（包括 TLS‑SNI、HTTP Host 及基于 DNS 的封锁）进行了对比分析。为评估 TLS‑SNI 封锁名单，我们采用了基于先前工作的实验方法 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Chai2019a&#34;&gt;11&lt;/a&gt;, &lt;a href=&#34;#cite:Hoang2024a&#34;&gt;37&lt;/a&gt;]&lt;/span&gt;。我们在北京部署客户端，并在美国部署接收服务器以执行“由内到外”的测量，与 QUIC‑SNI 的测量方向保持一致。我们将服务器配置为接受 TCP 连接但不返回任何数据。每次测试中，完成 TCP 握手后，客户端发送包含测试域名 SNI 的 TLS Client Hello 消息。我们通过监测 TCP &lt;span class=&#34;cmtt-10&#34;&gt;RST&lt;/span&gt; 包（SNI 封锁的典型特征）来判断封锁情况。相似地，在对于 HTTP Host 的测试中，我们将测试域名包含在HTTP GET 请求的 Host 头字段。
   &lt;/p&gt;
   &lt;!--l. 126--&gt;&lt;p class=&#34;indent&#34;&gt;
     在 DNS 审查测试中，我们遵循先前研究中的成熟方法 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Anonymous2020a&#34;&gt;6&lt;/a&gt;, &lt;a href=&#34;#cite:Hoang2021a&#34;&gt;38&lt;/a&gt;]&lt;/span&gt;。我们将北京客户端配置为向美国受控 IP（无 DNS 服务运行）发送 DNS 查询，从而任何收到的 DNS 应答均可归因于 GFW 注入，以确保准确性。为保证三种测试方法（TLS‑SNI、HTTP Host、DNS）结果的可比性，我们使用了相同的 Tranco 列表域名，并于 2025 年 1 月 9 日至 15 日进行为期一周的测量，收集各封锁名单域名。
   &lt;/p&gt;
   &lt;!--l. 136--&gt;&lt;p class=&#34;indent&#34;&gt;
     &lt;a href=&#34;#fig:7-venn-intersection-between-lists&#34;&gt;图 7&lt;/a&gt; 显示了 TLS‑SNI、HTTP Host、DNS 与 QUIC 封锁名单的重叠情况。对于我们测试的 Tranco 域名，DNS 封锁域名数量最多（106,973），其次是 HTTP（105,488）和 HTTPS（102,216）。QUIC 封锁名单显著较小，仅为其他三种名单规模的约 55%。在 58,207 个曾被 QUIC 封锁的域名中，有 11,854 个仅在该协议下被封锁；在这些 QUIC 专属封锁域名中，只有 2,329 个实际支持 QUIC。
   &lt;/p&gt;
   &lt;div class=&#39;figure&#39;&gt;
     &lt;p class=&#39;noindent&#39; id=&#39;fig:7-venn-intersection-between-lists&#39;&gt;
       &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/venn-intersection-between-lists-.png&#39; /&gt;
       &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:7-venn-intersection-between-lists&#34;&gt;图 7&lt;/a&gt;：展示 HTTPS、HTTP、DNS 与 QUIC 封锁名单重叠的 Venn 图。各协议封锁名单汇总自 2025 年 1 月 9 日至 15 日一周的测量数据。&lt;/p&gt;
     &lt;/p&gt;
   &lt;/div&gt;
   &lt;!--l. 146--&gt;&lt;p class=&#34;indent&#34;&gt;
     我们发现共有 40,447 个域名同时出现在四个封锁名单中，交并比 24.4%。逐一与其他三种协议比较，QUIC 与 HTTPS 的交并比最高，为 46,251 个域名（40.51%），其次是 HTTP 43,191 个（35.84%），以及 DNS 41,484 个（33.54%）。这些结果表明，各审查机制虽各自独立，却存在重叠，共同构成互补体系，最大化 GFW 的封锁覆盖。例如，现代浏览器中的 HTTP/3‑over‑QUIC 会话通常先进行 DNS 查询，再发送 HTTP/2（或更早）请求，最终升级到 HTTP/3 over QUIC。GFW 的审查策略设计在各阶段或组合阶段进行干预，确保用户无法访问被禁止内容。
   &lt;/p&gt;
   &lt;!--l. 200--&gt;&lt;p class=&#34;indent&#34;&gt;
     &lt;a href=&#34;#tbl:5-jaccard-index&#34;&gt;表 5&lt;/a&gt; 显示了 GFW 针对 Tranco 前 10k 域名的 DNS、HTTP、TLS 与 QUIC 封锁名单的 Jaccard 指数（交并比），并与支持 QUIC 的网站以及随机抽取的 500 个 FQDN 样本进行了对比。
   &lt;/p&gt;
   &lt;div class=&#34;table-container&#34; id=&#34;tbl:5-jaccard-index&#34;&gt;
     &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:5-jaccard-index&#34;&gt;表 5&lt;/a&gt;：GFW 针对 Tranco Top 10k 域名的 DNS、HTTP、TLS 与 QUIC 封锁名单的 Jaccard 指数（交并比），以及支持 QUIC 网站与 500 个随机 FQDN 样本的比较。&lt;/p&gt;
     &lt;div class=&#34;tabular&#34;&gt;
       &lt;table class=&#34;tabular&#34; id=&#34;TBL-5&#34;&gt;
         &lt;colgroup id=&#34;TBL-5-1g&#34;&gt;&lt;col id=&#34;TBL-5-1&#34;/&gt;&lt;col id=&#34;TBL-5-2&#34;/&gt;&lt;col id=&#34;TBL-5-3&#34;/&gt;&lt;col id=&#34;TBL-5-4&#34;/&gt;&lt;col id=&#34;TBL-5-5&#34;/&gt;&lt;col id=&#34;TBL-5-6&#34;/&gt;&lt;col id=&#34;TBL-5-7&#34;/&gt;&lt;/colgroup&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;7&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;DNS&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;HTTP&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;TLS&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;QUIC&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;支持 QUIC&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;样本 500&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;7&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;DNS&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;&lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;&lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;&lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;&lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;&lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;7&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;HTTP&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.57&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;&lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;&lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;&lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;&lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;7&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;TLS&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.67&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.43&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;&lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;&lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;&lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;7&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;QUIC&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.19&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.20&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.26&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;&lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;&lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;7&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;支持 QUIC&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.19&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.20&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.13&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.05&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;&lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;7&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;样本 500&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.03&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.03&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.03&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.01&lt;/td&gt;
           &lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;0.05&lt;/td&gt;&lt;td style=&#34;white-space:normal; text-align:left;&#34;&gt;-&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#34;hline&#34;&gt;&lt;td colspan=&#34;7&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
       &lt;/table&gt;
     &lt;/div&gt;
   &lt;/div&gt;
   &lt;h2 class=&#34;sectionHead&#34; id=&#34;5&#34;&gt;
     &lt;a id=&#34;sec:5-gfw-degradation-attack&#34; href=&#34;#sec:5-gfw-degradation-attack&#34;&gt;
       &lt;span class=&#34;titlemark&#34;&gt;5.&lt;/span&gt; GFW 性能降级攻击
     &lt;/a&gt;
   &lt;/h2&gt;
   &lt;!--l. 4--&gt;&lt;p class=&#34;noindent&#34;&gt;
     在 &lt;a href=&#34;#fig:4-diurnal-timeseries-three-sources&#34;&gt;图 4&lt;/a&gt; 中，我们观察到 GFW 对 QUIC 的封锁在中国网络流量高峰期时效果较差。这使我们假设，我们或许可以发送需要GFW处理的 QUIC 数据包，来有意地降低其封锁效果。尽管我们的实验为了解中国审查系统的设计提供了重要见解，但也引发了多项伦理考量，我们在&lt;a href=&#34;#sec:9-conclusion&#34;&gt;第 9 节&lt;/a&gt; 中作了详细的讨论。我们设计实验时确保不会影响用户或其他互联网设备，仅针对 GFW 进行性能降级。
   &lt;/p&gt;
   &lt;!--l. 23--&gt;&lt;p class=&#34;indent&#34;&gt;
     本实验使用三个测量点：一个在中国（北京，阿里云，AS37963），简称 ChinaVP；一个在美国东部（Digital Ocean，AS14061），简称 USVP；另一个在美国密歇根大学（AS36375），简称 StressVP。我们的目标是在中等量级的 QUIC 流量干扰下，测量 GFW 对 QUIC 封锁的有效性。实验分为同时运行的两部分：测量部分与施压部分。
   &lt;/p&gt;
   &lt;!--l. 33--&gt;&lt;p class=&#34;indent&#34;&gt;
     在测量部分，三个测量点按如下配置：ChinaVP 向 USVP 发送一个负载 267 字节的 QUIC Initial 包，其 SNI 字段为被封锁域名 &lt;span class=&#34;cmtt-10&#34;&gt;google.com&lt;/span&gt;，且目的端口小于源端口（参见&lt;a href=&#34;#sec:3-quic-censorship-mechanism&#34;&gt;第 3 节&lt;/a&gt;，以触发封锁）。暂停 1 秒后，在同一流中发送 100 个固定无害载荷（1,111 字节）的 UDP 包。该过程针对 1,000 个不同的源-目的端口对重复执行。若服务器（USVP）收到了 Initial 包以及随后的 95% 以上的数据包，则认为该连接未被封锁。
   &lt;/p&gt;
   &lt;!--l. 64--&gt;&lt;p class=&#34;indent&#34;&gt;
     在施压部分，StressVP 向 ChinaVP 所在 /14 网段内的所有 IPv4 地址发送两类流量，发送速率从 100 kpps 增加至 1500 kpps，每 100 kpps 增量持续施压 7 分钟，每次施压间隔 3 分钟。因选择大网段，单个主机受到的流量冲击被稀释，从而避免影响网络链路或路由器。
   &lt;/p&gt;
   &lt;!--l. 73--&gt;&lt;p class=&#34;indent&#34;&gt;
     为避免施压流量到达终端主机，我们先通过 ZMap 对 /14 网段运行控制 TTL 的 DNS 扫描，解析 &lt;span class=&#34;cmtt-10&#34;&gt;example.com&lt;/span&gt;，并根据接收到的 164 个 DNS 服务器的响应终止情况，估算各 IP 的距离扫描服务器的跳数。随后将 StressVP 发送的数据包 TTL 设置为最小跳点距离减 1，以保证流量仅到达 GFW。
   &lt;/p&gt;
   &lt;!--l. 84--&gt;&lt;p class=&#34;indent&#34;&gt;
     施压过程中，我们发送两种（使用较小TTL的）流量：QUIC Initial 包和固定长度的随机 UDP 包。QUIC 包使用与 ChinaVP→USVP 相同的 Initial 负载及被封锁的 SNI 以触发 GFW；随机包使用等长的无害随机字节。流量发送由 ZMap 执行，该配置平均对 /14 内的每个 IP 的发送速率不超 6 &lt;span class=&#34;ptmri8t-&#34;&gt;pps&lt;/span&gt;。
   &lt;/p&gt;
   &lt;!--l. 109--&gt;&lt;p class=&#34;indent&#34;&gt;
     本实验在不同日子重复三次（一次按升序速率进行测试，另两次按乱序速率进行测试），期间 StressVP 向 ChinaVP /14 网段发送（TTL 较小的）QUIC Initial 包，同时测量ChinaVP→USVP可通过封锁的连接比例。随后再独立进行三次实验（与 QUIC 施压不同时进行），将 QUIC Initial 包替换为随机载荷，测量相同指标。&lt;a href=&#34;#fig:8-stressing-rates&#34;&gt;图 8&lt;/a&gt; 显示了实验结果的平均值：随着 QUIC Initial 包速率提升，GFW 对 ChinaVP→USVP 连接的封锁效率下降；而使用随机载荷施压时则不存在该趋势，表明降级效应来自 GFW 处理 QUIC 包的开销，而非处理所有网络流量时的影响。所有实验均在中国凌晨封锁更高效的时段进行（见 &lt;a href=&#34;#fig:4-diurnal-timeseries-three-sources&#34;&gt;图 4&lt;/a&gt;）。
   &lt;/p&gt;
   &lt;div class=&#39;figure&#39;&gt;
     &lt;p class=&#39;noindent&#39; id=&#39;fig:8-stressing-rates&#39;&gt;
       &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/stressing-rates.png&#39; /&gt;
       &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:8-stressing-rates&#34;&gt;图 8&lt;/a&gt;：我们以 0–1500 Kpps 的速率向 GFW 施加两类等长包：包含被封锁 SNI 的 QUIC Initial 包（审查压力）和随机负载 UDP 包（随机压力）。期间，我们通过发送固定速率的 QUIC Initial 包及 100 个数据包，模拟 1000 条来自中国到美国的 QUIC 连接，计算 GFW 未能封锁的连接比例（审查失败率）。结果表明，随着 QUIC Initial 包速率上升，GFW 的封锁能力下降。我们通过监测出入境双向的非敏感 QUIC 连接的丢包率，以确保压力测试只影响 GFW 而不影响网络链路。&lt;/p&gt;
     &lt;/p&gt;
   &lt;/div&gt;
   &lt;!--l. 125--&gt;&lt;p class=&#34;noindent&#34;&gt;
     &lt;span class=&#34;ptmb8t-&#34;&gt;网络监测。  &lt;/span&gt;实验期间，我们从两方面监测 ChinaVP↔USVP 网络：其一，双向发送非敏感 QUIC 连接，监测两端数据包接收率；其二，使用 ZMap 以 650 &lt;span class=&#34;ptmri8t-&#34;&gt;pps&lt;/span&gt; 速率扫描 /14 网段的 tcp/443 端口，测量响应率。两项指标在实验中均无显著下降，表明我们的施压流量仅对 GFW 产生了降级效果，而对网络链路和路由器的影响可忽略。
   &lt;/p&gt;
   &lt;!--l. 137--&gt;&lt;p class=&#34;noindent&#34;&gt;
     &lt;span class=&#34;ptmb8t-&#34;&gt;逆向分析。  &lt;/span&gt;除帮助用户绕过审查外，性能降级攻击还能揭示 GFW 的数据处理流程。例如，某 QUIC 负载能导致封锁效率下降，则表明 GFW 至少对该负载执行了部分处理；若某负载对GFW性能无任何影响，则可能表示该负载在触发GFW高开销操作前便被忽略。
   &lt;/p&gt;
   &lt;!--l. 146--&gt;&lt;p class=&#34;indent&#34;&gt;
     &lt;a href=&#34;#tbl:3-experiment-characterization&#34;&gt;表 3&lt;/a&gt; 显示了各负载对 GFW 审查效率的降级效果。我们以 1200 Kpps 的速率发送每种负载，并在可绕过封锁的连接比例超过 60% 时判定该负载具备降级作用。结果表明，GFW 会处理所有 QUIC 版本为 1 的数据包，即使该数据包的负载无法被解密或其认证标签无效，也能造成性能降级；但仅有有效认证标签（可以被成功解密）的负载才能触发封锁，由此可推测GFW最“慢”的部分在于解密负载时的密码学运算。
   &lt;/p&gt;
   &lt;h2 class=&#34;sectionHead&#34; id=&#34;6&#34;&gt;
     &lt;a id=&#34;sec:6-availability-attack&#34; href=&#34;#sec:6-availability-attack&#34;&gt;
       &lt;span class=&#34;titlemark&#34;&gt;6.&lt;/span&gt; 可用性攻击
     &lt;/a&gt;
   &lt;/h2&gt;
   &lt;!--l. 3--&gt;&lt;p class=&#34;noindent&#34;&gt;
     先前研究表明，残留封锁有时可被攻击者“武器化”用于实施可用性攻击 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Bock2021b&#34;&gt;8&lt;/a&gt;, &lt;a href=&#34;#cite:Bock2021a&#34;&gt;9&lt;/a&gt;]&lt;/span&gt;。在此攻击中，攻击者向目标 B 发送触发审查的请求，并伪造源 IP 为受害者 A的IP地址。如果该请求触发了 A 与 B 之间的防火墙的残留封锁，则两者将无法通信，因为防火墙误以为 A 发送了被禁止的请求。残留封锁通常持续 1至3 分钟 &lt;span
     class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Bock2021a&#34;&gt;9&lt;/a&gt;, &lt;a href=&#34;#cite:Bock2020ESNI&#34;&gt;10&lt;/a&gt;, &lt;a href=&#34;#cite:Chai2019a&#34;&gt;11&lt;/a&gt;, &lt;a href=&#34;#cite:Hoang2024a&#34;&gt;37&lt;/a&gt;, &lt;a href=&#34;#cite:Wang2017a&#34;&gt;64&lt;/a&gt;, &lt;a href=&#34;#cite:Wu2023a&#34;&gt;66&lt;/a&gt;]&lt;/span&gt;，攻击者可以不断伪造触发审查的数据包以维持阻断。
   &lt;/p&gt;
   &lt;!--l. 25--&gt;&lt;p class=&#34;indent&#34;&gt;
     我们的研究揭示了GFW首次对基于 UDP 的协议实施残留封锁。尽管 GFW 历来通过注入伪造的DNS响应包来封锁 UDP 上的 DNS 流量，但此前未以丢包的方式阻断 UDP 协议流量。这次新出的GFW QUIC 封锁机制因为使用丢包手段而引入了新的可用性攻击向量，影响整个中国。攻击者可利用此攻击阻断中国境内主机与境外服务器间的 UDP 流量，例如阻止所有境外公共或根 DNS 解析器，导致全国范围的 DNS 故障。
   &lt;/p&gt;
   &lt;!--l. 37--&gt;&lt;p class=&#34;indent&#34;&gt;
     本节中，我们使用自己的主机与服务器作为攻击对象，探讨该攻击的可行性。
   &lt;/p&gt;
   &lt;!--l. 65--&gt;&lt;p class=&#34;noindent&#34;&gt;&lt;span class=&#34;ptmb8t-&#34;&gt;攻击部署。  &lt;/span&gt;此攻击需具备 IP 伪造能力，因此需使用不受出口过滤限制的服务器。我们从公共 VPS 提供商处获取一台可伪造 IP 包并在中国境内被接收的主机。在中国境内，我们使用一台位于广州的 VPS 来模拟“受害者”主机，因为该主机入站与出站均可以触发 QUIC 封锁。我们另在中国境外的 32 个区域各部署一台 AWS EC2 实例，用于模拟不同“受害者”。
   &lt;/p&gt;
   &lt;!--l. 77--&gt;&lt;p class=&#34;indent&#34;&gt;
     对每台 EC2 实例，我们先向广州 VPS 发送一个 DNS 查询包，确认请求被接收，表明两主机之间的连接初始时是可用的。
   &lt;/p&gt;
   &lt;!--l. 81--&gt;&lt;p class=&#34;indent&#34;&gt;
     随后，我们从可伪造源IP的攻击服务器，向我们位于广州的 VPS 发送QUIC Initial包。我们将每个包的源 IP 伪造为不同的 EC2 实例的 IP。这些包可以触发 GFW 的残留封锁机制，导致广州 VPS 的特定端口无法与 EC2 实例通信。对于每个 EC2 实例的IP，我们伪造10个包，间隔1秒发送到广州 VPS。我们伪造数据包所经过的路径可能与发自EC2的真实数据包的路径不同，因此这两种包穿过的 GFW 节点也可能不同，这可能导致攻击失效。
   &lt;/p&gt;
   &lt;!--l. 91--&gt;&lt;p class=&#34;indent&#34;&gt;
     与此同时，为了测量攻击效果，我们每 5 秒从各 EC2 实例向广州的 VPS 发送一个 DNS 查询包。若残留封锁在EC2实例与 广州的VPS 之间生效，那么DNS请求将被丢弃，这也就表明可用性攻击成功了。
   &lt;/p&gt;
   &lt;div class=&#39;figure&#39;&gt;
     &lt;p class=&#39;noindent&#39; id=&#39;fig:9-affected_hosts&#39;&gt;
       &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/affected_hosts-.png&#39; /&gt;
       &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:9-affected_hosts&#34;&gt;图 9&lt;/a&gt;：受可用性攻击影响的 EC2 实例地理分布图。受影响最严重的主机以红色显示，受影响较轻的以绿色显示。黑点分别表示位于广州的“受害者”服务器，以及位于美国的攻击服务器。&lt;/p&gt;
     &lt;/p&gt;
   &lt;/div&gt;
   &lt;!--l. 169--&gt;&lt;p class=&#34;indent&#34;&gt;
     &lt;a href=&#34;#tbl:6-region-packet-counts&#34;&gt;表 6&lt;/a&gt; 与 &lt;a href=&#34;#fig:9-affected_hosts&#34;&gt;图 9&lt;/a&gt; 显示 EC2 实例位置及攻击效果。在 32 台实例中，超过半数（17 台）被严重影响。部分实例仍能接收少量包，主要因 3 分钟残留封锁到期后到下一次伪造包到达之间有 1 秒窗口；加大发包频率或选准时机可提升阻断率。另有 7 台实例的约半数请求被丢弃，表明存在多条网络路径，而只有部分路径受到残留封锁的影响。
   &lt;/p&gt;
   &lt;div class=&#39;table-container&#39; id=&#39;tbl:6-region-packet-counts&#39;&gt;
     &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:6-region-packet-counts&#34;&gt;表 6&lt;/a&gt;：各 AWS 区域的数据包接收情况。可用性攻击持续了 30 分钟，真实客户端每 5 秒发 1 个监测数据包。攻击服务器在美国，受害服务器在广州。对于每台 EC2 实例，攻击服务器伪造其IP地址，每秒发送10个 QUIC Initial 包。&lt;/p&gt;
     &lt;div class=&#39;tabular&#39;&gt;
       &lt;table class=&#39;tabular&#39; id=&#39;TBL-6&#39;&gt;
         &lt;colgroup id=&#39;TBL-6-1g&#39;&gt;
           &lt;col id=&#39;TBL-6-1&#39;/&gt;
           &lt;col id=&#39;TBL-6-2&#39;/&gt;
           &lt;col id=&#39;TBL-6-3&#39;/&gt;
           &lt;col id=&#39;TBL-6-4&#39;/&gt;
         &lt;/colgroup&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;洲/区域&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:left;&#34;&gt;城市/地区&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;接收到的数据包数量&lt;/td&gt;
           &lt;td style=&#34;white-space:nowrap; text-align:right;&#34;&gt;占共计360个数据包的百分比&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;非洲&lt;/td&gt;&lt;td&gt;开普敦&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;110&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;30.56%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;亚太地区&lt;/td&gt;&lt;td&gt;香港&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;360&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;100.00%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;亚太地区&lt;/td&gt;&lt;td&gt;海得拉巴&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;13&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;3.61%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;亚太地区&lt;/td&gt;&lt;td&gt;雅加达&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;360&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;100.00%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;亚太地区&lt;/td&gt;&lt;td&gt;马来西亚&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;360&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;100.00%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;亚太地区&lt;/td&gt;&lt;td&gt;墨尔本&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;360&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;100.00%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;亚太地区&lt;/td&gt;&lt;td&gt;孟买&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;360&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;100.00%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;亚太地区&lt;/td&gt;&lt;td&gt;大阪&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;145&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;40.28%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;亚太地区&lt;/td&gt;&lt;td&gt;首尔&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;246&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;68.33%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;亚太地区&lt;/td&gt;&lt;td&gt;新加坡&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;360&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;100.00%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;亚太地区&lt;/td&gt;&lt;td&gt;悉尼&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;360&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;100.00%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;亚太地区&lt;/td&gt;&lt;td&gt;泰国&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;360&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;100.00%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;亚太地区&lt;/td&gt;&lt;td&gt;东京&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;229&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;63.61%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;加拿大&lt;/td&gt;&lt;td&gt;卡尔加里&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;26&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;7.22%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;加拿大&lt;/td&gt;&lt;td&gt;中部&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;13&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;3.61%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;欧洲&lt;/td&gt;&lt;td&gt;法兰克福&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;244&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;67.78%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;欧洲&lt;/td&gt;&lt;td&gt;爱尔兰&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;16&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;4.44%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;欧洲&lt;/td&gt;&lt;td&gt;伦敦&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;12&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;3.33%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;欧洲&lt;/td&gt;&lt;td&gt;米兰&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;17&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;4.72%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;欧洲&lt;/td&gt;&lt;td&gt;巴黎&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;10&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;2.78%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;欧洲&lt;/td&gt;&lt;td&gt;西班牙&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;15&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;4.17%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;欧洲&lt;/td&gt;&lt;td&gt;斯德哥尔摩&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;14&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;3.89%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;欧洲&lt;/td&gt;&lt;td&gt;苏黎世&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;17&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;4.72%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;以色列&lt;/td&gt;&lt;td&gt;特拉维夫&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;18&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;5.00%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;墨西哥&lt;/td&gt;&lt;td&gt;中部&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;13&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;3.61%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;中东&lt;/td&gt;&lt;td&gt;巴林&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;201&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;55.83%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;中东&lt;/td&gt;&lt;td&gt;阿联酋&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;22&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;6.11%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;南美洲&lt;/td&gt;&lt;td&gt;圣保罗&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;12&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;3.33%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;美国东部&lt;/td&gt;&lt;td&gt;北弗吉尼亚&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;195&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;54.17%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;美国东部&lt;/td&gt;&lt;td&gt;俄亥俄&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;21&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;5.83%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;美国西部&lt;/td&gt;&lt;td&gt;北加州&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;21&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;5.83%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td&gt;美国西部&lt;/td&gt;&lt;td&gt;俄勒冈&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;19&lt;/td&gt;&lt;td style=&#34;text-align:right;&#34;&gt;5.28%&lt;/td&gt;
         &lt;/tr&gt;&lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;

       &lt;/table&gt;
     &lt;/div&gt;
   &lt;/div&gt;
   &lt;!--l. 186--&gt;&lt;p class=&#34;indent&#34;&gt;
     剩余 8 台实例未受任何影响，它们主要分布于太平洋地区，表明攻击服务器与这些实例未共享相同网络路径。我们确认，当真实客户端直接发送触发审查的数据包到不同实例时，所有 32 台实例均能触发 GFW 的封锁。
   &lt;/p&gt;
   &lt;!--l. 210--&gt;&lt;p class=&#34;noindent&#34;&gt;&lt;span class=&#34;ptmb8t-&#34;&gt;防御。  &lt;/span&gt;由于 UDP 无状态且易伪造，防御此攻击并保持审查功能极具挑战。一种潜在缓解方案是仅在检测到对应的 QUIC Server Hello 及后续客户端包后再触发封锁，以确保连接真实存在。但此方案需对连接进行有状态跟踪，对审查设备造成巨大开销。此外，路径不对称会导致审查设备可能看不到 Server Hello 而无法审查。即便如此，攻击者仍可同时伪造双向流量以触发封锁，使该防御失效。
   &lt;/p&gt;
   &lt;!--l. 232--&gt;&lt;p class=&#34;indent&#34;&gt;
     另一种方案是采用注入式封锁机制，避免丢包式残留封锁。但此方案也有风险和限制。例如，鉴于解密延迟（见 &lt;a href=&#34;#fig:2-how-fast-the-gfw-blocks&#34;&gt;图 2&lt;/a&gt;），QUIC Server Initial 可能先到达客户端并建立密钥，随后注入包才到达，导致注入无效。
   &lt;/p&gt;
   &lt;!--l. 244--&gt;&lt;p class=&#34;indent&#34;&gt;
     在 QUIC 中防御这类可用性攻击尤为困难：QUIC协议在设计是就考虑到要抵御攻击者通过注入伪造包来阻断连接，因此GFW才需要使用基于丢包的残留封锁；而与此同时， UDP 的无连接特性使伪造 Initial 包极为简单，这使得GFW在使用残留封锁时，增加了可用性攻击的风险。要在 QUIC 中实现有针对性的封锁并防止可用性攻击，需要谨慎的工程设计。
   &lt;/p&gt;
   &lt;h2 class=&#34;sectionHead&#34; id=&#34;7&#34;&gt;
     &lt;a id=&#34;sec:7-circumvention&#34; href=&#34;#sec:7-circumvention&#34;&gt;
       &lt;span class=&#34;titlemark&#34;&gt;7.&lt;/span&gt; 绕过封锁
     &lt;/a&gt;
   &lt;/h2&gt;
   &lt;!--l. 12--&gt;&lt;p class=&#34;noindent&#34; &gt;如&lt;a href=&#34;#sec:3.2-flow-tracking-logic&#34;&gt;第 3.2 节&lt;/a&gt;所述，GFW 为了在线路速率下高效解析和封锁 QUIC 流量，采取了若干简化假设。这些设计选择再次体现出 GFW 设计者和开发者所遵循的“worse-is-better”理念 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:worse-is-better&#34;&gt;31&lt;/a&gt;]&lt;/span&gt;。然而，这些假设以牺牲审查系统的准确性和鲁棒性为代价，从而为绕过封锁带来了机会。我们已将所发现的绕过策略负责任地披露给反审查社区和开源社区。&lt;/p&gt;
   &lt;!--l. 31--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span class=&#34;ptmb8t-&#34;&gt;源端口 &amp;#x003C;= 目标端口。&lt;/span&gt;如&lt;a href=&#34;#sec:3.4-diurnal-blocking-pattern&#34;&gt;第 3.4 节&lt;/a&gt;所详细说明的，GFW 忽略 &lt;span class=&#34;zptmcmrm-&#34;&gt;源端口 &amp;#x003C;&lt;/span&gt;&lt;span class=&#34;zptmcmr-&#34;&gt;= &lt;/span&gt;&lt;span class=&#34;zptmcmrm-&#34;&gt;目标端口&lt;/span&gt; 的 UDP 数据包，从而做到仅关注客户端到服务器方向的流量。因此，一种临时绕过办法是使用目标端口大于等于源端口的方式。例如，服务器可将翻墙代理运行在高于或等于客户端临时端口范围的端口；Web 服务亦可监听在非常规高端口上，并通过 HTTP 头的&lt;span class=&#34;cmtt-10&#34;&gt;Alt-Svc&lt;/span&gt;值或 DNS HTTPS 记录向客户端公布端口。对于无法变更监听端口或无法监听多个端口的软件，可通过 iptables 规则将所有发往高端口（如 65535）的流量重定向到当前监听端口（如 443），例如 &lt;span class=&#34;cmtt-10&#34;&gt;iptables -t nat -A&lt;/span&gt;
   &lt;span class=&#34;cmtt-10&#34;&gt;PREROUTING -p udp --dport 65535 -j REDIRECT&lt;/span&gt;
   &lt;span class=&#34;cmtt-10&#34;&gt;--to-port 443&lt;/span&gt;。此方法对无法修改监听端口的软件尤其有用。&lt;/p&gt;
   &lt;!--l. 60--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span class=&#34;ptmb8t-&#34;&gt;在 QUIC Client Initial 前发送任意 UDP 数据包。&lt;/span&gt;GFW 的 QUIC 封锁机制假定 QUIC client Initial 是新流的首个数据包。一个简单的绕过方式是在发送 client Initial 之前先发送一个带有随机负载的 UDP 数据包。对于真实的 QUIC 服务器而言，首个 UDP 数据包会被忽略，但对 GFW 而言，因为无法从首包解析出 SNI，所以会让该流被豁免。后续真正的client Initial 将不再被检查，连接可顺利建立。我们通过在发送 QUIC client Initial 之前发送带随机负载的 UDP 数据包，实证了该防御策略可绕过 GFW 的封锁。同时，我们也对 Chromium Quiche &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:google_quiche_2025&#34;&gt;35&lt;/a&gt;]&lt;/span&gt;QUIC 服务器实现进行了测试，确认其会忽略冗余 UDP 数据包。&lt;/p&gt;
   &lt;!--l. 76--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span class=&#34;ptmb8t-&#34;&gt;连接迁移。&lt;/span&gt;QUIC 的连接迁移能力利用连接 ID 跨网络变化保持会话。GFW 采用选择性过滤策略：允许首个 QUIC 包，随后封锁客户端到服务器方向的数据包，但不监控连接 ID。由于服务器到客户端方向的数据包未被封锁，客户端只要在封锁激活前完成 1-RTT 握手，并迁移到不同网络四元组（源 IP、源端口、目的 IP、目的端口），即可绕过 GFW。&lt;/p&gt;
   &lt;!--l. 83--&gt;&lt;p class=&#34;indent&#34; &gt;  QUICstep &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:jia2023quicstepcircumventingquicbasedcensorship&#34;&gt;44&lt;/a&gt;]&lt;/span&gt;提出了一种相关方法，通过连接迁移技术实现 QUIC 封锁绕过。该方法先在低带宽高延迟的安全通道上完成 QUIC 握手，随后将连接迁移到常规通信通道，从而保证所有数据均为加密传输。&lt;/p&gt;
   &lt;!--l. 91--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span class=&#34;ptmb8t-&#34;&gt;QUIC Client Initial 分片。&lt;/span&gt;QUIC client Initial 可通过多份 UDP 数据包发送，或以单个 UDP 数据包承载多个 QUIC 帧。截至 2025 年 1 月，GFW 不会重组被分片成多个 UDP 数据包，也不会重组在单个 UDP 数据包中被拆分为多帧的 TLS Client Hello。因此，可利用该弱点，将 SNI 拆分进 client Initial 内的多个 QUIC &lt;span class=&#34;cmtt-10&#34;&gt;CRYPTO&lt;/span&gt; 帧以绕过 GFW 的 QUIC 封锁。&lt;/p&gt;
   &lt;!--l. 100--&gt;&lt;p class=&#34;indent&#34; &gt;  值得注意的是，Chrome 自 2021 年引入的 Chaos Protection 机制 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:chaos-protection-quiche2025&#34;&gt;19&lt;/a&gt;]&lt;/span&gt;，会将 QUIC client Initial 拆分进多个 QUIC 帧，并分散在不同 UDP 数据包中。同时，自 Chrome 124 版 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:chrome124relnotes&#34;&gt;12&lt;/a&gt;]&lt;/span&gt;起，支持在 TLS 1.3 下进行后量子密钥协商（ML-KEM 与 Kyber 密钥），启用该功能后，由于密钥长度超出 QUIC 单包最大长度，client Initial 会被分片到多个 UDP 数据包。这些特性实际上恰好利用了 GFW 无法重组分片 QUIC client Initial 的弱点，使 Chrome 的流量能够绕过 GFW 的 QUIC 封锁。&lt;/p&gt;
   &lt;!--l. 132--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span class=&#34;ptmb8t-&#34;&gt;加密 Client Hello（ECH）。&lt;/span&gt;ECH &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:ietf-tls-esni-24&#34;&gt;51&lt;/a&gt;]&lt;/span&gt;允许客户端使用通过 DNS HTTPS 记录获取的密钥，将部分 TLS Client Hello 消息加密发送给服务器，从而加密 SNI 扩展，令审查者无法获知 SNI。与 QUIC 的 client Initial 加密不同，ECH 加密为非对称加密，网络观察者无法解密。&lt;/p&gt;
   &lt;!--l. 151--&gt;&lt;p class=&#34;indent&#34; &gt;  审查者可选择封锁所有包含 ECH 的负载。然而，现代浏览器即便服务器不支持 ECH 也会发送“伪装” ECH 负载。截至 2025 年 1 月，GFW 不会封锁带有 ECH 的 QUIC 负载，除非外层（可解密）SNI 属于被封锁域名。&lt;/p&gt;
   &lt;!--l. 170--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span class=&#34;ptmb8t-&#34;&gt;版本协商。&lt;/span&gt;QUIC 的版本协商机制 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:rfc9000&#34;&gt;43&lt;/a&gt; §6]&lt;/span&gt;为绕过封锁提供了新的思路。通常，服务器收到不支持的版本号的 Initial 包后，会返回 Version Negotiation 包，等待客户端使用受支持版本重新发送 Initial。客户端可利用该机制，故意先发送带未知版本号的 Initial 包，使首包负载无法被解密，从而让后续连接流量绕过 GFW 的过滤。随后，客户端可继续以受支持版本完成握手，实现对审查机制的规避。&lt;/p&gt;
   &lt;!--l. 183--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span class=&#34;ptmb8t-&#34;&gt;“权宜之计”值得部署吗？&lt;/span&gt;虽然上述方法多为利用 GFW 实现细节的机会型绕过策略，但中国审查者方面因为受限于资源和优先级 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:cat-and-mouse&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;，要全面修复这些漏洞也并非易事。过往研究也发现，类似的权宜之计在与审查者的博弈中可持续多年 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Wu2023a&#34;&gt;66&lt;/a&gt; §8.3]&lt;/span&gt;。另一方面，这些绕过方案对 QUIC 代理和翻墙软件开发者而言，部署门槛较低，且不像GFW一样受到官僚体系约束 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:cat-and-mouse&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;。&lt;/p&gt;
   &lt;!--l. 197--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span class=&#34;ptmb8t-&#34;&gt;负责任披露。&lt;/span&gt;我们已将关于中国 QUIC 封锁及绕过策略的发现分享给反审查社区及开源社区。具体包括：Mozilla Firefox &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:MozillaFirefox&#34;&gt;48&lt;/a&gt;]&lt;/span&gt;、Mozilla Neqo 库 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:MozillaNeqo2025&#34;&gt;49&lt;/a&gt;]&lt;/span&gt;、quic-go 库 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:quic-go-release&#34;&gt;53&lt;/a&gt;]&lt;/span&gt;、Lantern &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:lantern&#34;&gt;18&lt;/a&gt;]&lt;/span&gt;、Hysteria &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:hysteria&#34;&gt;39&lt;/a&gt;]&lt;/span&gt;、TUIC &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:tuic&#34;&gt;59&lt;/a&gt;]&lt;/span&gt;、sing-box &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:sing-box&#34;&gt;54&lt;/a&gt;]&lt;/span&gt;、V2Ray &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:v2ray&#34;&gt;61&lt;/a&gt;]&lt;/span&gt; 和 Xray &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:xray&#34;&gt;68&lt;/a&gt;]&lt;/span&gt;的开发者。&lt;/p&gt;
   &lt;!--l. 218--&gt;
   &lt;p class=&#34;indent&#34; &gt;
    在我们向 Mozilla 进行负责任披露之前，
    SNI 分割功能（通过客户端初始包分片实现）就已于 2025 年 1 月 27 日，作为协议扩展性测试的一部分，
    被包含在 Neqo v0.12.0 版本中 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:neqo_pr2228_2024&#34;&gt;24&lt;/a&gt;, &lt;a href=&#34;#cite:neqo_v0_12_0_release&#34;&gt;50&lt;/a&gt;]&lt;/span&gt;。
    Mozilla Firefox 在 2025 年 4 月 30 日发布的 137 版本中集成了此功能并默认启用
    &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:neqo_pr2228_2024&#34;&gt;24&lt;/a&gt;, &lt;a href=&#34;#cite:bugzilla_1942325&#34;&gt;47&lt;/a&gt;]&lt;/span&gt;
    （可通过 &lt;span class=&#34;cmtt-10&#34;&gt;about:config&lt;/span&gt; 页面中的 &lt;span class=&#34;cmtt-10&#34;&gt;network.http.http3.sni-slicing &lt;/span&gt;参数进行配置）。
    而这一功能的集成与启用，也恰好在无意间绕过了 GFW 针对 QUIC SNI 的封锁。
   &lt;/p&gt;

   &lt;div class=&#39;table-container&#39; id=&#39;tbl:7-integration-timeline&#39;&gt;
     &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:7-integration-timeline&#34;&gt;表 7&lt;/a&gt;：quic-go v0.52.0 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:quic-go-release&#34;&gt;53&lt;/a&gt;]&lt;/span&gt;集成时间线。自 2025 年 5 月 23 日发布以来，主流绕过工具已更新依赖，默认启用 SNI 切片以绕过 GFW 针对 QUIC SNI 的封锁。&lt;/p&gt;
     &lt;div class=&#39;tabular&#39;&gt;
       &lt;table class=&#39;tabular&#39; id=&#39;TBL-7&#39;&gt;
         &lt;colgroup&gt;&lt;col id=&#39;TBL-7-1&#39;/&gt;&lt;col id=&#39;TBL-7-2&#39;/&gt;&lt;col id=&#39;TBL-7-3&#39;/&gt;&lt;col id=&#39;TBL-7-4&#39;/&gt;&lt;/colgroup&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td class=&#39;td11&#39; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;项目&lt;/td&gt;
           &lt;td class=&#39;td11&#39; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;版本&lt;/td&gt;
           &lt;td class=&#39;td10&#39; colspan=&#34;2&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;&lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;发布日期&lt;/div&gt;&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td class=&#39;td11&#39; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;sing-box&lt;/td&gt;
           &lt;td class=&#39;td11&#39; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;1.12.0-beta.17&lt;/td&gt;
           &lt;td class=&#39;td10&#39; colspan=&#34;2&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;&lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;2025 年 5 月 22 日 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:singbox_release_1_12_0_beta_17&#34;&gt;55&lt;/a&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td class=&#39;td11&#39; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;V2Ray&lt;/td&gt;
           &lt;td class=&#39;td11&#39; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;5.33.0&lt;/td&gt;
           &lt;td class=&#39;td10&#39; colspan=&#34;2&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;&lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;2025 年 5 月 26 日 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:v2ray_release_5_33_0&#34;&gt;62&lt;/a&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td class=&#39;td11&#39; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Xray&lt;/td&gt;
           &lt;td class=&#39;td11&#39; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;25.6.8&lt;/td&gt;
           &lt;td class=&#39;td10&#39; colspan=&#34;2&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;&lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;2025 年 6 月 6 日 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:xray_release_25_6_8&#34;&gt;69&lt;/a&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
         &lt;tr&gt;
           &lt;td class=&#39;td11&#39; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;Hysteria&lt;/td&gt;
           &lt;td class=&#39;td11&#39; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;2.6.2&lt;/td&gt;
           &lt;td class=&#39;td10&#39; colspan=&#34;2&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;&lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;2025 年 6 月 7 日 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:hysteria_release_2_6_2&#34;&gt;40&lt;/a&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr class=&#39;hline&#39;&gt;&lt;td colspan=&#34;4&#34;&gt;&lt;/td&gt;&lt;/tr&gt;
       &lt;/table&gt;
     &lt;/div&gt;
   &lt;/div&gt;

    &lt;!--l. 244--&gt;&lt;p class=&#34;indent&#34; &gt;  quic-go 库于 2025 年 5 月 23 日在 v0.52.0 版本 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:quic-go-release&#34;&gt;53&lt;/a&gt;]&lt;/span&gt;引入了 SNI 切片功能。如&lt;a href=&#34;#tbl:7-integration-timeline&#34;&gt;表 7&lt;/a&gt;所示，这一更新允许依赖 quic-go 的绕过工具默认启用 SNI 切片，从而绕过 GFW 针对 QUIC SNI 的封锁。&lt;/p&gt;


   &lt;!--l. 282--&gt;&lt;p class=&#34;indent&#34; &gt;  截至 2025 年 6 月，我们正与某款主流浏览器合作，将“握手前伪装负载”方案集成于其中，以进一步提升对 GFW 的抗封锁能力。&lt;/p&gt;&lt;h2 class=&#34;sectionHead&#34; id=&#34;8&#34;&gt;
     &lt;a id=&#34;sec:8-discussion&#34; href=&#34;#sec:8-discussion&#34;&gt;
          &lt;span class=&#34;titlemark&#34;&gt;8.&lt;/span&gt; 讨论
        &lt;/a&gt;
        &lt;/h2&gt;
        &lt;!--l. 4--&gt;&lt;p class=&#34;noindent&#34; &gt;我们的研究结果引出了关于 GFW 封锁 QUIC 连接的两个关键问题：（1）其对常规网页流量的影响；（2）其对基于 QUIC 的代理的影响。当用户访问网站时，浏览器首先会通过 HTTP(S)-over-TCP 连接服务器，仅当服务器通过 Alternate Service 头声明支持 QUIC 时，才会尝试使用 QUIC。因此，基于 HTTP Host 和 TLS SNI 的封锁仍是拦截网页流量的主要机制，只有当网站未被这两种机制封锁时，GFW 的 QUIC 封锁才会介入。GFW 的 QUIC 封锁本质上是网页流量的二级审查机制。&lt;/p&gt;
        &lt;!--l. 19--&gt;&lt;p class=&#34;indent&#34; &gt;  针对基于 QUIC 的代理，Hysteria &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:hysteria&#34;&gt;39&lt;/a&gt;]&lt;/span&gt;等工具的流行和 IETF MASQUE &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:ietf-masque-working-group&#34;&gt;41&lt;/a&gt;]&lt;/span&gt;工作组的标准化进展，表明该协议在 VPN 和代理领域具有重要发展潜力。QUIC 的流控和多路复用特性、快速建立连接以及支持连接迁移都带来了显著的性能优势。通过在 HTTP/3 服务器中采用非交互式认证，QUIC 隧道流量可混杂于主流 HTTP/3 流量中，甚至可以防御主动探测。然而，我们的研究结果显示，GFW 的基于 SNI 的过滤在握手早期就抑制了这些优势，有效地在连接初期就封锁了大量 QUIC 代理。&lt;/p&gt;
        &lt;!--l. 32--&gt;&lt;p class=&#34;indent&#34; &gt;  一个典型案例是 Cloudflare 的 WARP VPN，近期已采用 MASQUE &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:warp-supports-masque&#34;&gt;17&lt;/a&gt;]&lt;/span&gt;（HTTP/3-over-QUIC 代理）进行流量隧道。我们发现，其用于 MASQUE 的子域名已被 GFW 封锁，导致 VPN 客户端启动握手失败。这一现象表明 GFW 正在有针对性地封锁 MASQUE 代理。同样，Hysteria 也面临类似情况，不仅其主项目域名 &lt;span class=&#34;cmtt-10&#34;&gt;v2.hysteria.network&lt;/span&gt; 被封锁，用户自定义的 Hysteria 代理域名亦被封锁。&lt;/p&gt;
        &lt;h2 class=&#34;sectionHead&#34; id=&#34;9&#34;&gt;
          &lt;a id=&#34;sec:9-conclusion&#34; href=&#34;#sec:9-conclusion&#34;&gt;
            &lt;span class=&#34;titlemark&#34;&gt;9.&lt;/span&gt; 结论
          &lt;/a&gt;
        &lt;/h2&gt;
        &lt;!--l. 5--&gt;&lt;p class=&#34;noindent&#34; &gt;针对自 2024 年 4 月 7 日以来 GFW 基于 QUIC SNI 的审查机制，我们开展了测量实验，系统性地刻画、监测、揭示并提出绕过策略。结果表明，这一新型封锁机制可被滥用于阻断中国内外主机间任意 UDP 流量。我们还提出了一种 off-path的审查绕过策略，使用中等的流量负载来降低 GFW 的有效性。我们与多个开源社区合作，将审查绕过策略集成进一款主流浏览器、quic-go 库及所有主流的基于 QUIC 的翻墙工具中。&lt;/p&gt;
        &lt;h2 class=&#34;sectionHead&#34; id=&#34;acknowledgments&#34;&gt;
          &lt;a id=&#34;sec:acknowledgments&#34; href=&#34;#sec:acknowledgments&#34;&gt;
            &lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; 鸣谢
          &lt;/a&gt;
        &lt;/h2&gt;
        &lt;!--l. 3--&gt;&lt;p class=&#34;noindent&#34; &gt;我们感谢匿名的牧羊人和评审专家的宝贵反馈。本研究得以启动，离不开勇敢的中国用户最早报告了QUIC审查问题，我们为他们的勇气深表敬意。我们特别感谢匿名的RQWDKM，其与我们共同进行了初步测量和调查，参与讨论，并对本文提出了详细的反馈。&lt;/p&gt;
        &lt;!--l. 13--&gt;&lt;p class=&#34;indent&#34; &gt;  我们衷心感谢 Mozilla Neqo 和 Firefox 团队的众多成员，感谢他们的讨论与支持。&lt;/p&gt;
        &lt;!--l. 25--&gt;&lt;p class=&#34;indent&#34; &gt;  我们感谢 Hysteria、Lantern、sing-box、TUIC、V2Ray、Xray 等项目的开发者与贡献者，为反审查讨论提供了宝贵的在线空间，并将审查绕过方案快速集成在他们的翻墙软件中。&lt;/p&gt;
        &lt;!--l. 38--&gt;&lt;p class=&#34;indent&#34; &gt;  我们同时也感谢下列个人及许多匿名贡献者的支持、反馈与富有洞见的讨论：Bill Marczak、David Fifield、Jeffrey Knockel、Juraj Somorovsky、klzgrad、nekohasekai、Nick Sullivan、Niklas Niere 及 Prateek Mittal。&lt;/p&gt;
        &lt;!--l. 54--&gt;&lt;p class=&#34;indent&#34; &gt;  本研究部分由美国国家科学基金会（NSF）CNS-2145783 项目资助，因该机构优先级调整，导致该项目提前终止，对相关研究造成重大影响 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:nsf-shift&#34;&gt;30&lt;/a&gt;]&lt;/span&gt;。&lt;/p&gt;
        &lt;!--l. 60--&gt;&lt;p class=&#34;indent&#34; &gt;  本研究亦部分获得 NSF CNS-2319080、CNS-2333965 项目、斯隆研究奖和美国国防高级研究计划局（DARPA）青年教师奖 DARPA-RA-21-03-09-YFA9-FP-003 的资助。文中所表达的观点、意见和/或发现仅代表作者本人，不应被解读为代表美国国防部或美国政府的官方观点或政策。 &lt;/p&gt;
        &lt;h2 class=&#34;sectionHead&#34; id=&#34;ethics-considerations&#34;&gt;
          &lt;a id=&#34;sec:ethics-considerations&#34; href=&#34;#sec:ethics-considerations&#34;&gt;
            &lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; 伦理考量
          &lt;/a&gt;
        &lt;/h2&gt;
        &lt;!--l. 4--&gt;&lt;p class=&#34;noindent&#34; &gt;本研究的伦理考量主要包括两方面：实验可能对网络基础设施造成的潜在影响，以及对所发现漏洞的披露处理。&lt;/p&gt;
        &lt;!--l. 13--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span class=&#34;ptmb8t-&#34;&gt;可用性攻击。&lt;/span&gt;在&lt;a href=&#34;#sec:6-availability-attack&#34;&gt;第 6 节&lt;/a&gt;中，我们展示了 GFW 可以被攻击者利用以封锁互联网上的任意主机。为降低实验过程中对外部造成影响的风险，我们仅以我们自己的服务器为攻击目标。虽然攻击涉及伪造 IP 包，但我们仅伪装为属于自己的 IP 地址。该攻击的结果是，在短时间内，我们自己的 EC2 实例无法与中国服务器通信。&lt;/p&gt;
        &lt;!--l. 29--&gt;&lt;p class=&#34;indent&#34; &gt;  我们还基于计算机安全与伦理领域的两大伦理框架 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:kohno2023ethical&#34;&gt;45&lt;/a&gt;]&lt;/span&gt;，对相关工作进行了分析。从结果主义伦理视角看，该攻击带来的外部风险可忽略不计；从义务伦理视角看，仅攻击自有主机最大限度地避免了牵涉他人，履行了对他人的基本责任。&lt;/p&gt;
        &lt;!--l. 55--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span class=&#34;ptmb8t-&#34;&gt;GFW 性能降级攻击。&lt;/span&gt;在&lt;a href=&#34;#sec:5-gfw-degradation-attack&#34;&gt;第 5 节&lt;/a&gt;，我们介绍了一种通过发送大量 QUIC Initial 包削弱 GFW 封锁能力的方法。该实验涉及若干风险，直接影响了我们的实验设计。首先，我们考虑了主动破坏 GFW的道德正当性（即便连其设计者亦承认&lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Yan2006a&#34;&gt;71&lt;/a&gt; §1]&lt;/span&gt;，GFW本身就是伤害源 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Fan2025a&#34;&gt;28&lt;/a&gt; §9.c], [&lt;a href=&#34;#cite:Fan2025a&#34;&gt;28&lt;/a&gt; §9.B, &lt;a href=&#34;#cite:Anderson2012b&#34;&gt;3&lt;/a&gt;, &lt;a href=&#34;#cite:InternetSociety2023&#34;&gt;42&lt;/a&gt;]&lt;/span&gt;）。一方面，GFW 并非我们拥有和控制的系统，其被破坏可能带来负面或不可预知的后果；另一方面，促使 GFW 无法审查将为中国用户带来福祉，因为其网络本已违背人权 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:unhrc2016internet&#34;&gt;60&lt;/a&gt;]&lt;/span&gt;。权衡后，我们认为，只要将风险控制在 GFW 审查体系内，对其实施性能降级具备道德正当性。&lt;/p&gt;
        &lt;!--l. 73--&gt;&lt;p class=&#34;indent&#34; &gt;  但我们同时必须评估攻击对其他系统的影响和风险。例如，若干扰 GFW 导致&lt;span class=&#34;ptmri8t-&#34;&gt;所有&lt;/span&gt;跨境流量被丢弃，则将影响中外正常通信。尽管&lt;a href=&#34;#sec:3.1-quic-connection-blocking&#34;&gt;第 3.1 节&lt;/a&gt;分析表明 GFW 的 QUIC 审查并非纯串联，但我们仍担心其与串联相关的部分可能影响所有流量。然而，全日封锁（diurnal pattern）测量结果显示，白天 QUIC 连接量较高时，GFW 仅能封锁一小部分连接（&lt;a href=&#34;#fig:4-diurnal-timeseries-three-sources&#34;&gt;图 4&lt;/a&gt;），且未影响不再封锁域名名单上的 QUIC 及其他流量。&lt;/p&gt;
        &lt;!--l. 92--&gt;&lt;p class=&#34;indent&#34; &gt;  最后，我们还评估了实验可能对网络本身造成干扰的风险。由于需发送大量 QUIC 包，存在压垮链路或终端服务器的可能。我们采取多重措施降低这一风险：一，发送速率控制在 150 万包/秒，带宽占用低于 4 Gbps；二，确认与上游互联网提供商链路带宽至少为 40 Gbps，国际链路通常为 100 Gbps 或多 Tbps，实验流量仅占极小比例；三，限定包 TTL，仅穿越 GFW 而不抵达目的地，仅影响骨干链路，该类链路有足够余量承载我们的流量；四，持续监测网络的健康，包括 ZMap 扫描和双向连接性测试。实验期间未观测到网络性能下降，说明未对网络造成过载。&lt;/p&gt;
        &lt;!--l. 110--&gt;&lt;p class=&#34;indent&#34; &gt;  从义务伦理视角&lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:unhrc2016internet&#34;&gt;60&lt;/a&gt; §4.1]&lt;/span&gt;，我们需兼顾他人（如中国网民）的权利和本研究的初衷。本研究方法直面两种道德义务的冲突：一方面应尽量避免对他人网络资源的干扰，另一方面实验又肩负着阻止 GFW 持续伤害的责任。我们认为后者更具道德优先性，因此选择继续实验。从结果主义视角&lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:unhrc2016internet&#34;&gt;60&lt;/a&gt; §4.1]&lt;/span&gt;，需权衡利弊——本实验揭示了恢复用户信息获取权利的途径，同时将对其他网络和主机的风险降到最低。&lt;/p&gt;
        &lt;!--l. 138--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span class=&#34;ptmb8t-&#34;&gt;漏洞披露。&lt;/span&gt;漏洞披露是安全研究领域的标准伦理实践，有助于提升系统安全水平并保护受影响用户。但我们的研究对象是 GFW，对其改进本身会带来负面后果，故披露过程需慎重。另一方面，我们又有必要保护可能因 GFW 漏洞受攻击的互联网用户。因此，我们仔细权衡披露内容，力求在不提升 GFW 审查能力的前提下，最大化地保护用户的利益。我们的目标是保护用户，同时避免“协助”中国强化审查的风险。&lt;/p&gt;
        &lt;!--l. 153--&gt;&lt;p class=&#34;indent&#34; &gt;  综合考量后，我们决定将可用性攻击（&lt;a href=&#34;#sec:6-availability-attack&#34;&gt;第 6 节&lt;/a&gt;）披露给审查方，因为该漏洞可能对用户造成危害。2025 年 1 月 22 日，我们向 CNCERT 及被誉为“GFW 之父”的方滨兴 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:goldkorn2013fang&#34;&gt;34&lt;/a&gt;]&lt;/span&gt;披露了漏洞，并建议移除存在漏洞的 QUIC 审查设备。邮件内容见&lt;a href=&#34;#app:appendix-c&#34;&gt;附录 C&lt;/a&gt;。为确保信息准确传达，我们以中英文邮件联络审查方，并分别提供中英文两份详细说明网页的链接。尽管未收到回复或正式回应，但2025年1月24日至2月24日间，英文网页被访问 37 次（中文版无访问），说明信息已被接收。CNCERT 不予直接回应，体现了与互联网审查机构进行漏洞披露的难度&lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Bock2021a&#34;&gt;9&lt;/a&gt; §VIII]&lt;/span&gt;。中国官方极少承认审查系统的存在 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Streisand2023a&#34;&gt;57&lt;/a&gt;]&lt;/span&gt;，更遑论承认其所带来的安全风险并考虑拆除审查设施。&lt;/p&gt;
        &lt;!--l. 174--&gt;&lt;p class=&#34;indent&#34; &gt;  但自2025年3月13日起，GFW行为发生变化：从境外发起的 QUIC 流量不再触发封锁。这一变化一定程度上缓解了该漏洞的影响，即可用性攻击无法再由境外发起。我们尚不清楚此举是否因我们的披露所致，类似不再双向触发审查的情况曾在有关 GFW 对 ESNI 审查的研究被公开后发生过 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Bock2020ESNI&#34;&gt;10&lt;/a&gt;]&lt;/span&gt;。&lt;/p&gt;
        &lt;!--l. 182--&gt;&lt;p class=&#34;indent&#34; &gt;  尽管如此，若在中国境内发起攻击，可用性攻击仍然有效。攻击者只要在与受害者共享同一 GFW 节点路由下、且网络出站无过滤的情况下，即可阻断中国境内主机与境外任意目的主机间的 UDP 流量。由于中国审查方不太可能移除 QUIC 审查设备（这是唯一彻底的修复办法），我们选择将漏洞的公开作为主要风险缓解策略。即是说，通过发表本文，我们希望披露并公开该漏洞，提升整个社会对大规模审查系统所带来的安全风险的认知 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Fan2025a&#34;&gt;28&lt;/a&gt;]&lt;/span&gt;。&lt;/p&gt;
        &lt;!--l. 196--&gt;&lt;p class=&#34;indent&#34; &gt;  我们未将性能降级攻击（&lt;a href=&#34;#sec:5-gfw-degradation-attack&#34;&gt;第 5 节&lt;/a&gt;）直接披露给审查方，而是优先私下告知反审查社区，并让其随着论文的发表而公开。我们选择此策略是因为性能降级攻击仅影响 GFW 自己的基础设施，不威胁用户。如若直接披露，反而会使审查方有机会在反审查社区知晓漏洞前强化其审查机制。&lt;/p&gt;
        &lt;!--l. 206--&gt;&lt;p class=&#34;indent&#34; &gt;  虽然公开漏洞可能促使审查方修补漏洞（审查者可能本身就知道该漏洞，但因为论文的公开，审查者现在则知道了他人也发现了该漏洞），但我们认为公开披露的价值高于相关风险。只有让更广泛的技术社区了解审查系统的弱点，才能推动协议设计和反审查策略的进步。例如，QUIC Initial 包被设计为是加密的（尽管中间盒可解密），部分目的就是为了提升中间盒的解析难度。GFW 的 QUIC 审查系统难以跟上解密开销，说明即便协议设计仅略微增加处理成本，也能有效降低审查系统的效率&lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:cat-and-mouse&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;。&lt;/p&gt;
        &lt;!--l. 235--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;span class=&#34;ptmb8t-&#34;&gt;未收集个人身份信息（PII）。&lt;/span&gt;本研究不涉及人类被试者，也未收集任何个人身份信息（PII）。&lt;/p&gt;
        &lt;h2 class=&#34;sectionHead&#34; id=&#34;open-science&#34;&gt;
          &lt;a id=&#34;sec:open-science&#34; href=&#34;#sec:open-science&#34;&gt;
            &lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; 开放科学
          &lt;/a&gt;
        &lt;/h2&gt;
        &lt;!--l. 4--&gt;&lt;p class=&#34;noindent&#34; &gt;为促进后续研究与结果可复现性，我们已公开发布本研究的全部代码与数据。为提高可访问性，我们亦以 HTML格式提供论文的中英文版本。项目主页位于：&lt;a href=&#34;https://gfw.report/publications/usenixsecurity25/en/&#34; class=&#34;url&#34; &gt;&lt;span class=&#34;cmtt-10&#34;&gt;https://gfw&lt;/span&gt;&lt;span class=&#34;zptmcmrm-&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;cmtt-10&#34;&gt;report/publications/usenixsecurity25/en/&lt;/span&gt;&lt;/a&gt;。&lt;/p&gt;     &lt;h2 class=&#34;sectionHead&#34; id=&#34;references&#34;&gt;
          &lt;a id=&#34;sec:references&#34; href=&#34;#sec:references&#34;&gt;引用&lt;/a&gt;
      &lt;/h2&gt;
      &lt;div class=&#34;bibliography&#34;&gt;
          &lt;ol class=&#34;citation-numbering&#34;&gt;
              &lt;!-- 1 --&gt;
              &lt;li class=&#34;bibitem&#34;&gt;
                  &lt;a id=&#34;cite:chrome-kyber-update&#34;&gt;&lt;/a&gt;D. Adrian. A new path for kyber on the web. URL: &lt;a class=&#34;url&#34; href=&#34;https://security.googleblog.com/2024/09/a-new-path-for-kyber-on-web.html&#34;&gt;https://security.googleblog.com/2024/09/a-new-path-for-kyber-on-web.html&lt;/a&gt;.
              &lt;/li&gt;
              &lt;!-- 2 --&gt;
              &lt;li class=&#34;bibitem&#34;&gt;
                  &lt;a id=&#34;cite:Alice2020a&#34;&gt;&lt;/a&gt;Alice, Bob, Carol, J. Beznazwy, and A. Houmansadr. How China detects and blocks Shadowsocks. In Internet Measurement Conference. ACM, 2020. URL: &lt;a class=&#34;url&#34; href=&#34;https://censorbib.nymity.ch/pdf/Alice2020a.pdf&#34;&gt;https://censorbib.nymity.ch/pdf/Alice2020a.pdf&lt;/a&gt;.
              &lt;/li&gt;
              &lt;!-- 3 --&gt;
              &lt;li class=&#34;bibitem&#34;&gt;
                  &lt;a id=&#34;cite:Anderson2012b&#34;&gt;&lt;/a&gt;D. Anderson. Splinternet behind the Great Firewall of China: Once China opened its door to the world, it could not close it again. Queue, 10(11):40–49, November 2012. URL: &lt;a class=&#34;url&#34; href=&#34;https://queue.acm.org/detail.cfm?id=2405036&#34;&gt;https://queue.acm.org/detail.cfm?id=2405036&lt;/a&gt;, &lt;a class=&#34;url&#34; href=&#34;https://doi.org/10.1145/2390756.2405036&#34;&gt;doi:10.1145/2390756.2405036&lt;/a&gt;.
              &lt;/li&gt;
              &lt;!-- 4 --&gt;
              &lt;li class=&#34;bibitem&#34;&gt;
                  &lt;a id=&#34;cite:Anonymous2014a&#34;&gt;&lt;/a&gt;Anonymous. Towards a comprehensive picture of the Great Firewall’s DNS censorship. In Free and Open Communications on the Internet. USENIX, 2014. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci14/foci14-anonymous.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci14/foci14-anonymous.pdf&lt;/a&gt;.
              &lt;/li&gt;
              &lt;!-- 5 --&gt;
              &lt;li class=&#34;bibitem&#34;&gt;
                  &lt;a id=&#34;cite:cat-and-mouse&#34;&gt;&lt;/a&gt;Anonymous and Anonymous. Sharing a modified Shadowsocks as well as our thoughts on the cat-and-mouse game, October 2022. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/136&#34;&gt;https://github.com/net4people/bbs/issues/136&lt;/a&gt;.
              &lt;/li&gt;
              &lt;!-- 6 --&gt;
              &lt;li class=&#34;bibitem&#34;&gt;
                  &lt;a id=&#34;cite:Anonymous2020a&#34;&gt;&lt;/a&gt;Anonymous, A. A. Niaki, N. P. Hoang, P. Gill, and A. Houmansadr. Triplet censors: Demystifying Great Firewall’s DNS censorship behavior. In Free and Open Communications on the Internet. USENIX, 2020. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/foci20-paper-anonymous_0.pdf&#34;&gt;https://www.usenix.org/system/files/foci20-paper-anonymous_0.pdf&lt;/a&gt;.
              &lt;/li&gt;
              &lt;!-- 7 --&gt;
              &lt;li class=&#34;bibitem&#34;&gt;
                  &lt;a id=&#34;cite:rfc9114&#34;&gt;&lt;/a&gt;M. Bishop. HTTP/3. RFC 9114, June 2022. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.rfc-editor.org/info/rfc9114&#34;&gt;https://www.rfc-editor.org/info/rfc9114&lt;/a&gt;, &lt;a class=&#34;url&#34; href=&#34;https://doi.org/10.17487/RFC9114&#34;&gt;doi:10.17487/RFC9114&lt;/a&gt;.
              &lt;/li&gt;
              &lt;!-- 8 --&gt;
              &lt;li class=&#34;bibitem&#34;&gt;
                  &lt;a id=&#34;cite:Bock2021b&#34;&gt;&lt;/a&gt;K. Bock, A. Alaraj, Y. Fax, K. Hurley, E. Wustrow, and D. Levin. Weaponizing middleboxes for TCP reflected amplification. In USENIX Security Symposium. USENIX, 2021. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/sec21-bock.pdf&#34;&gt;https://www.usenix.org/system/files/sec21-bock.pdf&lt;/a&gt;.
              &lt;/li&gt;
              &lt;!-- 9 --&gt;
              &lt;li class=&#34;bibitem&#34;&gt;
                  &lt;a id=&#34;cite:Bock2021a&#34;&gt;&lt;/a&gt;K. Bock, P. Bharadwaj, J. Singh, and D. Levin. Your censor is my censor: Weaponizing censorship infrastructure for availability attacks. In Workshop on Offensive Technologies. IEEE, 2021. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.cs.umd.edu/~dml/papers/weaponizing_woot21.pdf&#34;&gt;https://www.cs.umd.edu/~dml/papers/weaponizing_woot21.pdf&lt;/a&gt;.
              &lt;/li&gt;
              &lt;!-- 10 --&gt;
              &lt;li class=&#34;bibitem&#34;&gt;
                  &lt;a id=&#34;cite:Bock2020ESNI&#34;&gt;&lt;/a&gt;K. Bock, iyouport, Anonymous, L.-H. Merino, D. Fifield, A. Houmansadr, and D. Levin. Exposing and circumventing China’s censorship of ESNI, August 2020. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/43\#issuecomment-673322409&#34;&gt;https://github.com/net4people/bbs/issues/43#issuecomment-673322409&lt;/a&gt;.
              &lt;/li&gt;
               &lt;!-- 11 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
               &lt;a id=&#34;cite:Chai2019a&#34;&gt;&lt;/a&gt;Z. Chai, A. Ghafari, and A. Houmansadr. On the importance of encrypted-SNI (ESNI) to censorship circumvention. In Free and Open Communications on the Internet. USENIX, 2019. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/foci19-paper_chai_update.pdf&#34;&gt;https://www.usenix.org/system/files/foci19-paper_chai_update.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 12 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:chrome124relnotes&#34;&gt;&lt;/a&gt;Chrome Developers. Chrome 124 — release notes, April 2024. URL: &lt;a class=&#34;url&#34; href=&#34;https://developer.chrome.com/release-notes/124&#34;&gt;https://developer.chrome.com/release-notes/124&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 13 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Clayton2006a&#34;&gt;&lt;/a&gt;R. Clayton, S. J. Murdoch, and R. N. M. Watson. Ignoring the Great Firewall of China. In Privacy Enhancing Technologies, pages 20–35. Springer, 2006. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.cl.cam.ac.uk/~rnc1/ignoring.pdf&#34;&gt;https://www.cl.cam.ac.uk/~rnc1/ignoring.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 14 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:cloudflare-radar-worldwide&#34;&gt;&lt;/a&gt;Cloudflare. Cloudflare Radar – Adoption and Usage Worldwide, 2025. URL: &lt;a class=&#34;url&#34; href=&#34;https://radar.cloudflare.com/adoption-and-usage?dateStart=2024-01-01&amp;amp;dateEnd=2024-12-31&#34;&gt;https://radar.cloudflare.com/adoption-and-usage?dateStart=2024-01-01&amp;amp;dateEnd=2024-12-31&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 15 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Crandall2007a&#34;&gt;&lt;/a&gt;J. R. Crandall, D. Zinn, M. Byrd, E. Barr, and R. East. ConceptDoppler: A weather tracker for Internet censorship. In Computer and Communications Security, pages 352–365. ACM, 2007. URL: &lt;a class=&#34;url&#34; href=&#34;http://www.csd.uoc.gr/~hy558/papers/conceptdoppler.pdf&#34;&gt;http://www.csd.uoc.gr/~hy558/papers/conceptdoppler.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 16 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:uzbekistan-quic-ech-block&#34;&gt;&lt;/a&gt;critical_error. QUIC streams with encrypted_client_hello extensions in QUIC initials are being blocked in Uzbekistan. NTC Party Forum, 12 2024. URL: &lt;a class=&#34;url&#34; href=&#34;https://ntc.party/t/13953&#34;&gt;https://ntc.party/t/13953&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 17 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:warp-supports-masque&#34;&gt;&lt;/a&gt;Dan Hall. Zero Trust WARP: tunneling with a MASQUE. URL: &lt;a class=&#34;url&#34; href=&#34;https://blog.cloudflare.com/zero-trust-warp-with-a-masque/&#34;&gt;https://blog.cloudflare.com/zero-trust-warp-with-a-masque/&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 18 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:lantern&#34;&gt;&lt;/a&gt;L. developers. Lantern. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/getlantern&#34;&gt;https://github.com/getlantern&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 19 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:chaos-protection-quiche2025&#34;&gt;&lt;/a&gt;dschinazi. Chaos Protection in QUIC, 2025. URL: &lt;a class=&#34;url&#34; href=&#34;https://quiche.googlesource.com/quiche/+/cb6b51054274cb2c939264faf34a1776e0a5bab7&#34;&gt;https://quiche.googlesource.com/quiche/+/cb6b51054274cb2c939264faf34a1776e0a5bab7&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 20 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Duan2012a&#34;&gt;&lt;/a&gt;H. Duan, N. Weaver, Z. Zhao, M. Hu, J. Liang, J. Jiang, K. Li, and V. Paxson. Hold-On: Protecting against on-path DNS poisoning. In Securing and Trusting Internet Names. National Physical Laboratory, 2012. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.icir.org/vern/papers/hold-on.satin12.pdf&#34;&gt;https://www.icir.org/vern/papers/hold-on.satin12.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 21 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:rfc9369&#34;&gt;&lt;/a&gt;M. Duke. QUIC Version 2. RFC 9369, May 2023. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.rfc-editor.org/info/rfc9369&#34;&gt;https://www.rfc-editor.org/info/rfc9369&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 22 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Dunna2018a&#34;&gt;&lt;/a&gt;A. Dunna, C. O’Brien, and P. Gill. Analyzing China’s blocking of unpublished Tor bridges. In Free and Open Communications on the Internet. USENIX, 2018. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci18/foci18-paper-dunna.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci18/foci18-paper-dunna.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 23 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:zmap&#34;&gt;&lt;/a&gt;Z. Durumeric, E. Wustrow, and J. A. Halderman. ZMap: Fast internet-wide scanning and its security applications. In USENIX Security Symposium. USENIX, August 2013. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/conference/usenixsecurity13/technical-sessions/paper/durumeric&#34;&gt;https://www.usenix.org/conference/usenixsecurity13/technical-sessions/paper/durumeric&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 24 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:neqo_pr2228_2024&#34;&gt;&lt;/a&gt;L. Eggert. Pull request #2228: feat: Shuffle the client Initial crypto data. &lt;a class=&#34;url&#34; href=&#34;https://github.com/mozilla/neqo/pull/2228&#34;&gt;https://github.com/mozilla/neqo/pull/2228&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 25 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Elmenhorst2021a&#34;&gt;&lt;/a&gt;K. Elmenhorst, B. Schütz, N. Aschenbruck, and S. Basso. Web censorship measurements of HTTP/3 over QUIC. In Internet Measurement Conference. ACM, 2021. URL: &lt;a class=&#34;url&#34; href=&#34;https://dl.acm.org/doi/pdf/10.1145/3487552.3487836&#34;&gt;https://dl.acm.org/doi/pdf/10.1145/3487552.3487836&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 26 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Ensafi2015b&#34;&gt;&lt;/a&gt;R. Ensafi, D. Fifield, P. Winter, N. Feamster, N. Weaver, and V. Paxson. Examining how the Great Firewall discovers hidden circumvention servers. In Internet Measurement Conference. ACM, 2015. URL: &lt;a class=&#34;url&#34; href=&#34;https://conferences2.sigcomm.org/imc/2015/papers/p445.pdf&#34;&gt;https://conferences2.sigcomm.org/imc/2015/papers/p445.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 27 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:quic2017&#34;&gt;&lt;/a&gt;A. L. et al. The quic transport protocol: Design and internet-scale deployment. SIGCOMM ’17. ACM, 2017. &lt;a class=&#34;url&#34; href=&#34;https://doi.org/10.1145/3098822.3098842&#34;&gt;doi:10.1145/3098822.3098842&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 28 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Fan2025a&#34;&gt;&lt;/a&gt;S. Fan, J. Sippe, S. San, J. Sheffey, D. Fifield, A. Houmansadr, E. Wedwards, and E. Wustrow. Wallbleed: A memory disclosure vulnerability in the Great Firewall of China. In Network and Distributed System Security. The Internet Society, 2025. URL: &lt;a class=&#34;url&#34; href=&#34;https://gfw.report/publications/ndss25/data/paper/wallbleed.pdf&#34;&gt;https://gfw.report/publications/ndss25/data/paper/wallbleed.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 29 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Farnan2016a&#34;&gt;&lt;/a&gt;O. Farnan, A. Darer, and J. Wright. Poisoning the well – exploring the Great Firewall’s poisoned DNS responses. In Workshop on Privacy in the Electronic Society. ACM, 2016. URL: &lt;a class=&#34;url&#34; href=&#34;https://dl.acm.org/authorize?N25517&#34;&gt;https://dl.acm.org/authorize?N25517&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 30 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:nsf-shift&#34;&gt;&lt;/a&gt;N. S. Foundation. Updates on nsf priorities. &lt;a class=&#34;url&#34; href=&#34;https://www.nsf.gov/updates-on-priorities&#34;&gt;https://www.nsf.gov/updates-on-priorities&lt;/a&gt;, 2025.
               &lt;/li&gt;
               &lt;!-- 31 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:worse-is-better&#34;&gt;&lt;/a&gt;R. P. Gabriel. Worse is better. URL: &lt;a class=&#34;url&#34; href=&#34;https://dreamsongs.com/WorseIsBetter.html&#34;&gt;https://dreamsongs.com/WorseIsBetter.html&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 32 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:gfw2020esni&#34;&gt;&lt;/a&gt;gfw-report. Rapid blocking of connections following ESNI triggers, August 2020. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/43\#issuecomment-673490763&#34;&gt;https://github.com/net4people/bbs/issues/43#issuecomment-673490763&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 33 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:God2024QUIC&#34;&gt;&lt;/a&gt;P. God. QUIC connection with SNI of *.eu.org has been blocked. Telegram post, 2024. URL: &lt;a class=&#34;url&#34; href=&#34;https://t.me/c/1166154022/909198&#34;&gt;https://t.me/c/1166154022/909198&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 34 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:goldkorn2013fang&#34;&gt;&lt;/a&gt;J. Goldkorn. Fang Binxing and the Great Firewall. In G. R. Barmé and J. Goldkorn, editors, China Story Yearbook 2013: Civilising China. Australian Centre on China in the World. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.thechinastory.org/yearbooks/yearbook-2013/chapter-6-chinas-internet-a-civilising-process/fang-binxing-and-the-great-firewall/&#34;&gt;https://www.thechinastory.org/yearbooks/yearbook-2013/chapter-6-chinas-internet-a-civilising-process/fang-binxing-and-the-great-firewall/&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 35 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:google_quiche_2025&#34;&gt;&lt;/a&gt;Google. QUICHE: QUIC, HTTP/2, HTTP/3 and related protocol toolkit. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/google/quiche&#34;&gt;https://github.com/google/quiche&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 36 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Hanson2015a&#34;&gt;&lt;/a&gt;L. Hanson. The chinese internet gets a stronger backbone. &lt;a class=&#34;url&#34; href=&#34;https://www.forbes.com/sites/lisachanson/2015/02/24/the-chinese-internet-gets-a-stronger-backbone&#34;&gt;https://www.forbes.com/sites/lisachanson/2015/02/24/the-chinese-internet-gets-a-stronger-backbone&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 37 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Hoang2024a&#34;&gt;&lt;/a&gt;N. P. Hoang, J. Dalek, M. Crete-Nishihata, N. Christin, V. Yegneswaran, M. Polychronakis, and N. Feamster. GFWeb: Measuring the Great Firewall’s Web censorship at scale. In USENIX Security Symposium. USENIX, 2024. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/sec24fall-prepub-310-hoang.pdf&#34;&gt;https://www.usenix.org/system/files/sec24fall-prepub-310-hoang.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 38 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Hoang2021a&#34;&gt;&lt;/a&gt;N. P. Hoang, A. A. Niaki, J. Dalek, J. Knockel, P. Lin, B. Marczak, M. Crete-Nishihata, P. Gill, and M. Polychronakis. How great is the Great Firewall? Measuring China’s DNS censorship. In USENIX Security Symposium. USENIX, 2021. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/sec21-hoang.pdf&#34;&gt;https://www.usenix.org/system/files/sec21-hoang.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 39 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:hysteria&#34;&gt;&lt;/a&gt;Hysteria developers. Hysteria. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/apernet/hysteria&#34;&gt;https://github.com/apernet/hysteria&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 40 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:hysteria_release_2_6_2&#34;&gt;&lt;/a&gt;Hysteria Developers. Hysteria software release. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/apernet/hysteria/releases/tag/app%2Fv2.6.2&#34;&gt;https://github.com/apernet/hysteria/releases/tag/app%2Fv2.6.2&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 41 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:ietf-masque-working-group&#34;&gt;&lt;/a&gt;IETF. Multiplexed Application Substrate over QUIC Encryption (masque), 2025. URL: &lt;a class=&#34;url&#34; href=&#34;https://datatracker.ietf.org/wg/masque/about/&#34;&gt;https://datatracker.ietf.org/wg/masque/about/&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 42 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:InternetSociety2023&#34;&gt;&lt;/a&gt;Internet Society. When is the Internet not the Internet?, December 2023. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.internetsociety.org/resources/internet-fragmentation/the-chinese-firewall/&#34;&gt;https://www.internetsociety.org/resources/internet-fragmentation/the-chinese-firewall/&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 43 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:rfc9000&#34;&gt;&lt;/a&gt;J. Iyengar and M. Thomson. QUIC: A UDP-Based Multiplexed and Secure Transport. RFC 9000, May 2021. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.rfc-editor.org/info/rfc9000&#34;&gt;https://www.rfc-editor.org/info/rfc9000&lt;/a&gt;, &lt;a class=&#34;url&#34; href=&#34;https://doi.org/10.17487/RFC9000&#34;&gt;doi:10.17487/RFC9000&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 44 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:jia2023quicstepcircumventingquicbasedcensorship&#34;&gt;&lt;/a&gt;W. Jia, M. Wang, L. Wang, and P. Mittal. QUICstep: Circumventing QUIC-based censorship, 2023. URL: &lt;a class=&#34;url&#34; href=&#34;https://arxiv.org/abs/2304.01073&#34;&gt;https://arxiv.org/abs/2304.01073&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 45 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:kohno2023ethical&#34;&gt;&lt;/a&gt;T. Kohno, Y. Acar, and W. Loh. Ethical frameworks and computer security trolley problems: Foundations for conversations. In 32nd USENIX Security Symposium (USENIX Security 23), 2023. URL: &lt;a class=&#34;url&#34; href=&#34;https://securityethics.cs.washington.edu/&#34;&gt;https://securityethics.cs.washington.edu/&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 46 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:cloudflare-quiche&#34;&gt;&lt;/a&gt;madeye. Savoury implementation of the QUIC transport protocol and HTTP/3, 2024. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/cloudflare/quiche&#34;&gt;https://github.com/cloudflare/quiche&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 47 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:bugzilla_1942325&#34;&gt;&lt;/a&gt;Mozilla Developers. Bug 1942325 - update Neqo to v0.12.2 in mozilla-central. &lt;a class=&#34;url&#34; href=&#34;https://bugzilla.mozilla.org/show_bug.cgi?id=1942325&#34;&gt;https://bugzilla.mozilla.org/show_bug.cgi?id=1942325&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 48 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:MozillaFirefox&#34;&gt;&lt;/a&gt;Mozilla Foundation. Firefox Web Browser Source Code. &lt;a class=&#34;url&#34; href=&#34;https://github.com/mozilla-firefox/firefox&#34;&gt;https://github.com/mozilla-firefox/firefox&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 49 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:MozillaNeqo2025&#34;&gt;&lt;/a&gt;Mozilla Foundation. Neqo: Next Generation QUIC Client and Server Library. &lt;a class=&#34;url&#34; href=&#34;https://github.com/mozilla/neqo&#34;&gt;https://github.com/mozilla/neqo&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 50 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:neqo_v0_12_0_release&#34;&gt;&lt;/a&gt;Mozilla Neqo Team. Neqo version 0.12.0 release. &lt;a class=&#34;url&#34; href=&#34;https://github.com/mozilla/neqo/releases/tag/v0.12.0&#34;&gt;https://github.com/mozilla/neqo/releases/tag/v0.12.0&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 51 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:ietf-tls-esni-24&#34;&gt;&lt;/a&gt;E. Rescorla, K. Oku, N. Sullivan, and C. A. Wood. TLS Encrypted Client Hello. Internet-draft, March 2025. Work in Progress. URL: &lt;a class=&#34;url&#34; href=&#34;https://datatracker.ietf.org/doc/draft-ietf-tls-esni/24/&#34;&gt;https://datatracker.ietf.org/doc/draft-ietf-tls-esni/24/&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 52 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Sakamoto2024a&#34;&gt;&lt;/a&gt;Sakamoto and E. Wedwards. Bleeding wall: A hematologic examination on the Great Firewall. In Free and Open Communications on the Internet, 2024. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.petsymposium.org/foci/2024/foci-2024-0002.pdf&#34;&gt;https://www.petsymposium.org/foci/2024/foci-2024-0002.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 53 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:quic-go-release&#34;&gt;&lt;/a&gt;M. Seemann. quic-go: A QUIC implementation in pure Go (version 0.52.0). &lt;a class=&#34;url&#34; href=&#34;https://github.com/quic-go/quic-go/releases/tag/v0.52.0&#34;&gt;https://github.com/quic-go/quic-go/releases/tag/v0.52.0&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 54 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:sing-box&#34;&gt;&lt;/a&gt;Sing-box developers. Sing-box. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/SagerNet/sing-box&#34;&gt;https://github.com/SagerNet/sing-box&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 55 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:singbox_release_1_12_0_beta_17&#34;&gt;&lt;/a&gt;sing-box Developers. sing-box software release. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/SagerNet/sing-box/releases/tag/v1.12.0-beta.17&#34;&gt;https://github.com/SagerNet/sing-box/releases/tag/v1.12.0-beta.17&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 56 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:ephemeral-ports&#34;&gt;&lt;/a&gt;N. Software. The ephemeral port range. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.ncftp.com/ncftpd/doc/misc/ephemeral_ports.html&#34;&gt;https://www.ncftp.com/ncftpd/doc/misc/ephemeral_ports.html&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 57 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Streisand2023a&#34;&gt;&lt;/a&gt;M. Streisand, E. Wustrow, and A. Houmansadr. Where have all the paragraphs gone? detecting and exposing censorship in Chinese translation. In Free and Open Communications on the Internet, 2023. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.petsymposium.org/foci/2023/foci-2023-0001.pdf&#34;&gt;https://www.petsymposium.org/foci/2023/foci-2023-0001.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 58 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:rfc9001&#34;&gt;&lt;/a&gt;M. Thomson and S. Turner. Using TLS to Secure QUIC. RFC 9001. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.rfc-editor.org/info/rfc9001&#34;&gt;https://www.rfc-editor.org/info/rfc9001&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 59 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:tuic&#34;&gt;&lt;/a&gt;TUIC Protocol. tuic: Delicately-tuiced 0-rtt proxy protocol. &lt;a class=&#34;url&#34; href=&#34;https://github.com/tuic-protocol/tuic&#34;&gt;https://github.com/tuic-protocol/tuic&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 60 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:unhrc2016internet&#34;&gt;&lt;/a&gt;United Nations Human Rights Council. The promotion, protection and enjoyment of human rights on the Internet.    &lt;a class=&#34;url&#34; href=&#34;https://www.article19.org/data/files/Internet_Statement_Adopted.pdf&#34;&gt;https://www.article19.org/data/files/Internet_Statement_Adopted.pdf&lt;/a&gt;, June 2016. Resolution A/HRC/32/L.20.
               &lt;/li&gt;
               &lt;!-- 61 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:v2ray&#34;&gt;&lt;/a&gt;V2Ray developers. V2Ray. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/v2fly/v2ray-core&#34;&gt;https://github.com/v2fly/v2ray-core&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 62 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:v2ray_release_5_33_0&#34;&gt;&lt;/a&gt;V2Ray Developers. V2Ray Core software release. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/v2fly/v2ray-core/releases/tag/v5.33.0&#34;&gt;https://github.com/v2fly/v2ray-core/releases/tag/v5.33.0&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 63 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:ValdikSS_2022_NTC_HTTP3_QUIC_Post10&#34;&gt;&lt;/a&gt;ValdikSS. Restriction HTTP/3 (QUIC) - post 10. ntc.party, Mar 2022. Accessed: 2024-05-27. URL: &lt;a class=&#34;url&#34; href=&#34;https://ntc.party/t/1823/10&#34;&gt;https://ntc.party/t/1823/10&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 64 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Wang2017a&#34;&gt;&lt;/a&gt;Z. Wang, Y. Cao, Z. Qian, C. Song, and S. V. Krishnamurthy. Your state is not mine: A closer look at evading stateful Internet censorship. In Internet Measurement Conference. ACM, 2017. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.cs.ucr.edu/~krish/imc17.pdf&#34;&gt;https://www.cs.ucr.edu/~krish/imc17.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 65 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Winter2012a&#34;&gt;&lt;/a&gt;P. Winter and S. Lindskog. How the Great Firewall of China is blocking Tor. In Free and Open Communications on the Internet. USENIX, 2012. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci12/foci12-final2.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci12/foci12-final2.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 66 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Wu2023a&#34;&gt;&lt;/a&gt;M. Wu, J. Sippe, D. Sivakumar, J. Burg, P. Anderson, X. Wang, K. Bock, A. Houmansadr, D. Levin, and E. Wustrow. How the Great Firewall of China detects and blocks fully encrypted traffic. In USENIX Security Symposium. USENIX, 2023. URL: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/sec23fall-prepub-234-wu-mingshi.pdf&#34;&gt;https://www.usenix.org/system/files/sec23fall-prepub-234-wu-mingshi.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 67 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Wu2025a&#34;&gt;&lt;/a&gt;M. Wu, A. Zohaib, Z. Durumeric, A. Houmansadr, and E. Wustrow. A wall behind a wall: Emerging regional censorship in China. In Symposium on Security &amp;#x0026; Privacy. IEEE, 2025. URL: &lt;a class=&#34;url&#34; href=&#34;https://gfw.report/publications/sp25/data/paper/paper.pdf&#34;&gt;https://gfw.report/publications/sp25/data/paper/paper.pdf&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 68 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:xray&#34;&gt;&lt;/a&gt;XRay developers. XRay. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/XTLS/Xray-core&#34;&gt;https://github.com/XTLS/Xray-core&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 69 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:xray_release_25_6_8&#34;&gt;&lt;/a&gt;Xray Developers. Xray software release. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/XTLS/Xray-core/releases/tag/v25.6.8&#34;&gt;https://github.com/XTLS/Xray-core/releases/tag/v25.6.8&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 70 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Xue2022b&#34;&gt;&lt;/a&gt;D. Xue, B. Mixon-Baca, ValdikSS, A. Ablove, B. Kujath, J. R. Crandall, and R. Ensafi. TSPU: Russia’s decentralized censorship system. In Internet Measurement Conference. ACM, 2022. URL: &lt;a class=&#34;url&#34; href=&#34;https://dl.acm.org/doi/pdf/10.1145/3517745.3561461&#34;&gt;https://dl.acm.org/doi/pdf/10.1145/3517745.3561461&lt;/a&gt;.
               &lt;/li&gt;
               &lt;!-- 71 --&gt;
               &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Yan2006a&#34;&gt;&lt;/a&gt;B. Yan, B. Fang, B. Li, and Y. Wang. Detection and defence of DNS spoofing attack, November 2006. URL: &lt;a class=&#34;url&#34; href=&#34;https://github.com/user-attachments/files/18172972/Yan2006a.pdf&#34;&gt;https://github.com/user-attachments/files/18172972/Yan2006a.pdf&lt;/a&gt;.
               &lt;/li&gt;
          &lt;/ol&gt;
      &lt;/div&gt;
      &lt;h2 class=&#34;sectionHead&#34; id=&#34;app:appendix-a&#34;&gt;
          &lt;a id=&#34;app:appendix-a&#34; href=&#34;#app:appendix-a&#34;&gt;
            &lt;span class=&#34;titlemark&#34;&gt;A.&lt;/span&gt; 全日封锁延迟分布
          &lt;/a&gt;
        &lt;/h2&gt;
        &lt;!--l. 6--&gt;&lt;p class=&#34;noindent&#34; &gt;&lt;a href=&#34;#fig:10-how-fast-the-gfw-blocks-boxplot&#34;&gt;图 10&lt;/a&gt; 展示了 GFW 封锁延迟在一天中的变化。封锁延迟指 GFW 在检测到含有被封锁 SNI 的 QUIC Initial 包后，阻断该连接所需的时间。其测量方式为：客户端发送 QUIC Initial 包的时间与客户端首次发送被 GFW 丢弃的 UDP 数据包之间的时间差。&lt;/p&gt;

        &lt;div class=&#39;figure&#39;&gt;
          &lt;p class=&#39;noindent&#39; id=&#39;fig:10-how-fast-the-gfw-blocks-boxplot&#39;&gt;
            &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/how-fast-the-gfw-blocks-boxplot-.png&#39; /&gt;
            &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:10-how-fast-the-gfw-blocks-boxplot&#34;&gt;图 10&lt;/a&gt;：箱线图展示了 GFW 阻断连接所需时间的分布。横坐标为对数刻度。绿色三角形表示均值，须状线显示最小值和最大值。&lt;/p&gt;
          &lt;/p&gt;
        &lt;/div&gt;
        &lt;!--l. 14--&gt;&lt;p class=&#34;indent&#34; &gt;  最小封锁延迟在白天始终低于 100 毫秒，这很可能受限于 GFW 内部处理和响应速度。&lt;/p&gt;
        &lt;!--l. 17--&gt;&lt;p class=&#34;indent&#34; &gt;  最大封锁延迟则随一天内时段波动，可能与 GFW 处理的 QUIC 连接数量有关（&lt;a href=&#34;#sec:5-gfw-degradation-attack&#34;&gt;第 5 节&lt;/a&gt;亦有提示）。在通常人类活动较少的凌晨时段（凌晨 12 点至 6 点），GFW 封锁连接所需时间相对较短，平均封锁延迟约为 150 毫秒。相比之下，在人类活动高峰时段（上午 7 点至晚上 11 点），平均封锁延迟可达 800 毫秒，且最大延迟在下午 3 点左右达到 7000 毫秒。&lt;/p&gt;

        &lt;h2 class=&#34;sectionHead&#34; id=&#34;app:appendix-b&#34;&gt;
          &lt;a id=&#34;app:appendix-b&#34; href=&#34;#app:appendix-b&#34;&gt;
            &lt;span class=&#34;titlemark&#34;&gt;B.&lt;/span&gt; 基于端口的流量过滤
          &lt;/a&gt;
        &lt;/h2&gt;
        &lt;!--l. 32--&gt;&lt;p class=&#34;noindent&#34; &gt;为进一步验证&lt;a href=&#34;#sec:3.3-source-port-must-exceed-destination-port&#34;&gt;第 3.3 节&lt;/a&gt;中关于 GFW 基于源端口和目标端口过滤启发式规则的结论，我们扩展了分析范围，覆盖更多端口。采用相同方法，我们测试了从 1 到 65535 的端口，间距为 1000，并特别包含了65535号端口。&lt;/p&gt;
        &lt;!--l. 39--&gt;&lt;p class=&#34;indent&#34; &gt;  &lt;a href=&#34;#fig:11-heatmap-ports-1-65000-step-1000_heatmap&#34;&gt;图 11&lt;/a&gt; 展示了在扩展端口范围下 GFW 的封锁行为。结果进一步证实了我们的最初发现：如果 QUIC Initial 包的源端口小于或等于目标端口，GFW 不会追踪或封锁对应的 UDP 流。&lt;/p&gt;

        &lt;div class=&#39;figure&#39;&gt;
          &lt;p class=&#39;noindent&#39; id=&#39;fig:11-heatmap-ports-1-65000-step-1000_heatmap&#39;&gt;
            &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/heatmap-ports-1-65000-step-1000_heatmap-.png&#39; /&gt;
            &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:11-heatmap-ports-1-65000-step-1000_heatmap&#34;&gt;图 11&lt;/a&gt;：如果 QUIC Initial 包的源端口小于或等于目标端口，审查方不会追踪或封锁相应 UDP 流。该规则适用于所有端口号（1 至 65535）。&lt;/p&gt;
          &lt;/p&gt;
        &lt;/div&gt;
        &lt;h2 class=&#34;sectionHead&#34; id=&#34;app:appendix-c&#34;&gt;
          &lt;a id=&#34;app:appendix-c&#34; href=&#34;#app:appendix-c&#34;&gt;
            &lt;span class=&#34;titlemark&#34;&gt;C.&lt;/span&gt; 向审查方披露漏洞的邮件
          &lt;/a&gt;
        &lt;/h2&gt;
        &lt;!--l. 75--&gt;&lt;p class=&#34;noindent&#34; &gt;如&lt;a href=&#34;#sec:9-conclusion&#34;&gt;第 9 节&lt;/a&gt;所述，因该漏洞允许攻击者利用 GFW 对用户造成进一步伤害，我们决定将可用性攻击（&lt;a href=&#34;#sec:6-availability-attack&#34;&gt;第 6 节&lt;/a&gt;）披露给审查者。2025年1月22日，我们向 CNCERT/CC 及被誉为“GFW 之父”的方滨兴 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:goldkorn2013fang&#34;&gt;34&lt;/a&gt;]&lt;/span&gt; 发送如下邮件，建议移除存在漏洞的 QUIC 审查设备并部署出站过滤以防止 IP 欺骗攻击。该邮件以中英文撰写，并提供了两个介绍攻击详情的中英文私有网页链接。尽管我们未收到任何回复或正式回应，但从2025年1月24日（周五）下午 2:04（UTC+8）至2025年2月24日（周一）上午 9:35（UTC+8）期间，英文网页共被访问 37 次（中文版无访问），说明信息已被接收。&lt;/p&gt;

&lt;/p&gt;
  &lt;pre class=&#34;verbatim&#34; id=&#34;verbatim-1&#34;&gt;
&lt;b&gt;主题:&lt;/b&gt;       Disclose a Vulnerability in the GFW’s QUIC Filtering Mechanism
&lt;b&gt;发件人:&lt;/b&gt;     gfw.report &amp;lt;gfw.report@protonmail.com&amp;gt;
&lt;b&gt;收件人:&lt;/b&gt;     CNCERT/CC &amp;lt;cncert@cert.org.cn&amp;gt;
&lt;b&gt;抄送:&lt;/b&gt;       Fang Binxing &amp;lt;fangbx@iie.ac.cn&amp;gt;
&lt;b&gt;日期:&lt;/b&gt;       Thu, 23 Jan 2025 12:01:46 +0000

尊敬的CNCERT团队：

我们撰写此信是为了披露一种由中国骨干网络上部署的QUIC过滤机制引发的漏洞。该机制至少自2024年4月7日以来一直在运行。该漏洞允许具有伪造IP数据包能力的网络攻击者利用中国的防火长城（GFW）长期中断或阻断中国境内外主机之间的通信。

以下是关于此漏洞的详细信息、影响和缓解措施。此外，我们在以下链接提供了此披露的最新版本：[此处隐去中文版负责任披露页面的网址。]

## 漏洞详情

攻击者可以向特定的IP:端口发送带有防火长城屏蔽名单中的SNI（例如google.com）的QUIC初始数据包（参见以下示例），从而触发GFW的残留审查机制，持续约180秒。如果攻击者将源IP地址伪造成中国境内的受害者IP地址，则此机制可被利用来阻止受害者的IP地址与指定的服务器IP:端口通信三分钟。同样，攻击者可以将源IP地址伪造成中国境外的受害者服务器IP地址，并向中国境内受害者的IP地址的多个端口发送数据包。通过不断发送伪造的QUIC初始数据包，攻击者可以无限期维持封锁。

当防火长城的审查机制被触发时，它会基于三元组（源IP、目标IP、目标UDP端口）阻断通信，时间为3分钟（180秒）。审查可以通过包含屏蔽名单中SNI的单个UDP数据包（如以下示例中的QUIC初始数据包）触发。通常情况下，这种阻断只会影响尝试连接的客户端和服务器之间的通信。然而，由于阻断可以由单个UDP数据包触发，能够伪造IP数据包的网络攻击者可以轻松地让防火墙阻断其他主机的通信。

例如，假设中国境内的某主机地址为19.89.5.35，一个位于中国境外的DNS服务器地址为4.2.2.1，使用UDP端口53。如果攻击者从19.89.5.35:x（任意源端口x）发送一个UDP数据包到4.2.2.1:53，这将触发防火长城阻止19.89.5.35向4.2.2.1:53发送任何数据包，持续3分钟。攻击者可以通过使用不同的源端口伪造数据包，来无限期延长封锁时间。

## 影响

GFW的开发和部署，以及此次发现的问题，对中国用户构成了严重风险，并可能在大范围内中断通信。例如，它可以被利用来阻止基于UDP的DNS流量，从而在中国的DNS解析器与外部网络之间造成广泛的连接问题。

为了展示此攻击的潜在影响，我们使用了32个全球分布的Amazon EC2实例进行了实验。在实验中，我们通过让每个EC2实例向我们在广州控制的VPS发送DNS请求，同时从美国的一个不进行出口过滤的服务器，向每个EC2 IP地址伪造包含屏蔽名单中SNI的QUIC初始数据包并发送到广州VPS。以下地图展示了仅使用一个伪造点时，哪些实例受到了影响。绿色点代表没有连接问题，红色点代表成功向广州主机发送请求有困难。黑色点分别代表我们的受害服务器（广州）和伪造服务器（美国）的位置。

&lt;img alt=&#39;PIC&#39; style=&#34;display:block; margin-top: 0; margin-bottom: 0;&#34; class=&#39;figure-img&#39; src=&#39;../figures/affected_hosts-.png&#39; /&gt;
## 缓解措施

由于此攻击可能造成的严重危害，我们敦促立即采取行动解决这一问题。UDP是一种无连接协议，很难完全防止伪造攻击。因此，最彻底的缓解措施是禁用负责阻断UDP连接的审查设备。除了导致这些有害攻击，防火长城还通过阻止信息访问，侵犯了基本人权。

一种较不彻底的缓解措施是部署出口过滤以防止IP数据包伪造，但只要攻击者能够找到一个能够伪造数据包的位置，即使在中国境外，此攻击仍然可能实现。鉴于此，我们建议：1）立即且永久性地禁用QUIC审查过滤设备；2）在边缘网络部署出口过滤以限制IP伪造。

感谢您对这一关键问题的关注。我们随时愿意提供更多技术细节或解答后续问题，以确保此问题得到及时解决。

此致
敬礼
Team

---

Example command:
nc -s $SRC_IP -p $SRC_PORT -vnu $DST_IP $DST_PORT &amp;#x003C;&amp;#x003C;&amp;#x003C;$(xxd -r -p \
&amp;#x003C;&amp;#x003C;&amp;#x003C; &amp;#x0022;c600000001104ebdf7c473c1c15db3ffa4534f5b3158102154b19e765d7a3caa33a20b92c56da30040e182
dcfd47c61c7fff552b8c61053c0c91ab148d199277a3b459519768aa6c79533eecd2d2e678dbac45dadef121d1d
3f5f56454c6b9305c45d919053fea8c1c1bd950d1fd14ee770d8312d10c03a18aea463538d721af70b4e732037e
ac620f361d0435114eea55204caa685dd33f8b2cb1dac6568b320e2d348f77e72a4c150ed5ac27a9ce9edf696ea
929baf34f28598320b0baa993fbdeddf7c45b724eee8f6fa9c7860a973f0138777422347161743bc6d36e519951
47d7f6d2cf4a398b7ea1066f77bcdee89e760d2568bc3c9bb8f7d5c43482a11a7d696c7dc62fe6ecade80000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000&amp;#x0022;)
&lt;/pre&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>A Wall Behind A Wall: Emerging Regional Censorship in China</title>
        <link>https://gfw.report/publications/sp25/en/</link>
        <pubDate>Sun, 11 May 2025 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/publications/sp25/en/</guid>
        
        <description>&lt;!-- use paper-specific CSS --&gt;
&lt;link rel=&#34;stylesheet&#34; href=&#34;../sp25.css&#34;&gt;

&lt;!-- Used to render latex syntax --&gt;
&lt;script type=&#34;text/javascript&#34; async
  src=&#34;https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML&#34;&gt;
&lt;/script&gt;

&lt;!-- Used to render Table of Content --&gt;
&lt;link href=&#34;./css/tocbot.css&#34; rel=&#39;stylesheet&#39; type=&#39;text/css&#39; /&gt;
&lt;script src=&#34;./js/tocbot.min.js&#34;&gt;&lt;/script&gt;
&lt;script&gt;
    document.addEventListener(&#39;DOMContentLoaded&#39;, function() {
    tocbot.init({
        tocSelector: &#39;.js-toc&#39;,
        contentSelector: &#39;.js-toc-content&#39;,
        headingSelector: &#39;h2, h3&#39;,
        collapseDepth: 3,
        activeLinkClass: &#39;&#39;
    });
    });
&lt;/script&gt;
&lt;h1 class=&#34;titleHead&#34;&gt;A Wall Behind A Wall: Emerging Regional Censorship in China&lt;/h1&gt;
&lt;div class=&#34;authors&#34;&gt;
  &lt;div class=&#34;author&#34;&gt;
      &lt;p class=&#34;author-name&#34;&gt;
          Mingshi Wu&lt;span class=&#34;footnote-mark&#34;&gt;&lt;a href=&#34;#fn:equal-contribution&#34;&gt;&lt;sup class=&#34;textsuperscript cmsy-8&#34;&gt;∗&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;
      &lt;/p&gt;
      &lt;p class=&#34;author-affiliation&#34;&gt;GFW Report&lt;/p&gt;
      &lt;p class=&#34;author-email&#34;&gt;gfw.report@protonmail.com&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&#34;author&#34;&gt;
      &lt;p class=&#34;author-name&#34;&gt;
          Ali Zohaib&lt;span class=&#34;footnote-mark&#34;&gt;&lt;a href=&#34;#fn:equal-contribution&#34;&gt;&lt;sup class=&#34;textsuperscript cmsy-8&#34;&gt;∗&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;
      &lt;/p&gt;
      &lt;p class=&#34;author-affiliation&#34;&gt;University of Massachusetts Amherst&lt;/p&gt;
      &lt;p class=&#34;author-email&#34;&gt;azohaib@umass.edu&lt;/p&gt;
  &lt;/div&gt;
  &lt;/div&gt;
&lt;div class=&#34;authors&#34;&gt;
  &lt;div class=&#34;author&#34;&gt;
      &lt;p class=&#34;author-name&#34;&gt;Zakir Durumeric&lt;/p&gt;
      &lt;p class=&#34;author-affiliation&#34;&gt;Stanford University&lt;/p&gt;
      &lt;p class=&#34;author-email&#34;&gt;zakir@cs.stanford.edu&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&#34;author&#34;&gt;
      &lt;p class=&#34;author-name&#34;&gt;Amir Houmansadr&lt;/p&gt;
      &lt;p class=&#34;author-affiliation&#34;&gt;University of Massachusetts Amherst&lt;/p&gt;
      &lt;p class=&#34;author-email&#34;&gt;amir@cs.umass.edu&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&#34;author&#34;&gt;
      &lt;p class=&#34;author-name&#34;&gt;Eric Wustrow&lt;/p&gt;
      &lt;p class=&#34;author-affiliation&#34;&gt;University of Colorado Boulder&lt;/p&gt;
      &lt;p class=&#34;author-email&#34;&gt;ewust@colorado.edu&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- l. 143 --&gt;
&lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
  &lt;ol&gt;
      &lt;li class=&#34;footnote-text&#34;&gt;
          &lt;a id=&#34;fn:equal-contribution&#34;&gt;&lt;/a&gt;
          &lt;span class=&#34;footnote-mark&#34;&gt;&lt;sup class=&#34;textsuperscript&#34;&gt;*&lt;/sup&gt;&lt;/span&gt;
          &lt;span class=&#34;footnotes-text&#34;&gt;Mingshi Wu and Ali Zohaib contributed equally to this work.&lt;/span&gt;
      &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;

&lt;br&gt;

&lt;div class=&#34;js-toc&#34;&gt;&lt;/div&gt;

&lt;/p&gt;
&lt;h2 class=&#34;sectionHead&#34; id=&#34;abstract&#34;&gt;&lt;a id=&#34;sec:abstract&#34; href=&#34;#sec:abstract&#34;&gt;Abstract&lt;/a&gt;&lt;/h2&gt;
&lt;!-- l. 148 --&gt;&lt;p class=&#39;noindent&#39;&gt;
       China   has   long   orchestrated   its   Internet   censorship   through   relatively   centralized   policies   and   a   unified
    implementation,  known  as  the  Great  Firewall  of  China  (GFW).  However,  since  August  2023,  anecdotes  suggest  that
    the Henan Province has deployed its own regional censorship. In this work, we characterize provincial-level censorship
    in  Henan,  and  compare  it  with  the  national-level  GFW.  We  find  that  Henan  has  established  TLS  SNI-based  and
    HTTP  Host-based  censorship  that  inspects  and  blocks  traffic  leaving  the  province.  While  the  Henan  Firewall  is  less
    sophisticated  and  less  robust  against  typical  network  variability,  its  volatile  and  aggressive  blocking  of  second-level
    domains made it block ten times more websites than the GFW at some points in time. Based on the observed parsing
    flaws  and  injection  behaviors,  we  introduce  simple  client-side  methods  to  bypass  censorship  in  the  Henan  province.
    Our work documents an alarming sign of regional censorship emerging in China.
&lt;/p&gt;
&lt;!-- l. 167 --&gt;&lt;h2 class=&#34;sectionHead&#34; id=&#34;1&#34;&gt;&lt;a id=&#34;sec:1-introduction&#34; href=&#34;#sec:1-introduction&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;1.&lt;/span&gt; Introduction&lt;/a&gt;&lt;/h2&gt;

&lt;!-- l. 169 --&gt;&lt;p class=&#39;indent&#39;&gt;   The People’s Republic of China develops and maintains one of the most sophisticated Internet censorship apparatuses,
    colloquially referred to as the Great Firewall (GFW). Through DNS poisoning &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Duan2012a&#39;&gt;1&lt;/a&gt;, &lt;a href=&#39;#cite:Chai2019a&#39;&gt;2&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2021a&#39;&gt;3&lt;/a&gt;, &lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;4&lt;/a&gt;, &lt;a href=&#39;#cite:Fan2025a&#39;&gt;5&lt;/a&gt;]&lt;/span&gt;, HTTP Host header filtering &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Clayton2006a&#39;&gt;6&lt;/a&gt;, &lt;a href=&#39;#cite:Wang2017a&#39;&gt;7&lt;/a&gt;, &lt;a href=&#39;#cite:Rambert2021a&#39;&gt;8&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;]&lt;/span&gt;, TLS SNI/ESNI filtering &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Chai2019a&#39;&gt;2&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;, &lt;a href=&#39;#cite:Bock2020ESNI&#39;&gt;10&lt;/a&gt;, &lt;a href=&#39;#cite:Bock2021c&#39;&gt;11&lt;/a&gt; §3]&lt;/span&gt;, IP address blocking &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Chai2019a&#39;&gt;2&lt;/a&gt; §4]&lt;/span&gt;, active probing &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Ensafi2015b&#39;&gt;12&lt;/a&gt;, &lt;a href=&#39;#cite:Dunna2018a&#39;&gt;13&lt;/a&gt;, &lt;a href=&#39;#cite:Alice2020a&#39;&gt;14&lt;/a&gt;, &lt;a href=&#39;#cite:Wu2023a&#39;&gt;15&lt;/a&gt; §5]&lt;/span&gt;,
        and proxy traffic detection &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Wu2023a&#39;&gt;15&lt;/a&gt; §4]&lt;/span&gt;, China blocks its citizens from accessing large swaths of Internet content and
        services.
        &lt;/p&gt;
        &lt;!-- l. 180 --&gt;&lt;p class=&#39;indent&#39;&gt;   China’s  censorship  apparatus  has  long  been  believed  to  be  operated  relatively  centrally,  in  terms  of  both  its
        &lt;span class=&#39;ptmri8t-&#39;&gt;policy &lt;/span&gt;and &lt;span class=&#39;ptmri8t-&#39;&gt;implementation&lt;/span&gt;. Empirical measurements have revealed China’s uniform and coordinated management of
        censorship policies &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;3&lt;/a&gt;, &lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;4&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;, &lt;a href=&#39;#cite:Wu2023a&#39;&gt;15&lt;/a&gt;]&lt;/span&gt;, software updates &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Sakamoto2024a&#39;&gt;16&lt;/a&gt; §4.5]&lt;/span&gt; &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Fan2025a&#39;&gt;5&lt;/a&gt; §VII]&lt;/span&gt;, and infrastructures &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Alice2020a&#39;&gt;14&lt;/a&gt; §3.4]&lt;/span&gt; &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;4&lt;/a&gt; §5]&lt;/span&gt;.
        Censorship devices are positioned at the national border &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;4&lt;/a&gt;, &lt;a href=&#39;#cite:Xu2011a&#39;&gt;17&lt;/a&gt;, &lt;a href=&#39;#cite:Wright2012a&#39;&gt;18&lt;/a&gt;]&lt;/span&gt;, where they inspect and filter traffic entering or
        exiting the country. As a result, traffic exchanged domestically within China is not inspected or blocked by the
        GFW.
        &lt;/p&gt;
        &lt;!-- l. 191 --&gt;&lt;p class=&#39;indent&#39;&gt;   However, recent anecdotes suggest that this centralized and uniform censorship model may no longer tell the
        whole story. In August 2023, users in the Henan Province of China—the third-largest province by population and a
        pivotal labor hub—began reporting an uptick in inaccessible websites that were accessible elsewhere in China &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Henan-user-report&#39;&gt;19&lt;/a&gt;]&lt;/span&gt;.
        &lt;/p&gt;
        &lt;!-- l. 197 --&gt;&lt;p class=&#39;indent&#39;&gt;   In this work,&lt;span class=&#39;footnote-mark&#39;&gt;&lt;a href=&#39;#fn:project-homepage&#39;&gt;&lt;sup class=&#39;textsuperscript&#39;&gt;1&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;
        we first explore a natural question raised by the discovery of regional censorship in Henan (&lt;a href=&#39;#sec:3-detecting-regional-censorship&#39;&gt;Section 3&lt;/a&gt;): have other provinces in
        China deployed the same or similar regional censorship? We conducted a measurement study in seven provinces and municipalities
        in China, including Beijing, Shanghai, Guangdong, Zhejiang, Jiangsu, Sichuan, and Henan, to identify potential regional censorship.


        Likely limited by the vantage points we could access in China, we found no evidence of regional censorship in the six provinces
        other than Henan.
        &lt;/p&gt;
        &lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
            &lt;ol&gt;
                &lt;li class=&#39;footnote-text&#39;&gt;
                    &lt;a id=&#39;fn:project-homepage&#39;&gt;&lt;/a&gt;
                    &lt;span class=&#39;footnote-mark&#39;&gt;
                        &lt;sup class=&#39;textsuperscript&#39;&gt;1&lt;/sup&gt;
                    &lt;/span&gt;
                    &lt;span class=&#39;footnotes-text&#39;&gt;Project homepage: &lt;a href=&#34;https://gfw.report/publications/sp25/en&#34;&gt;https://gfw.report/publications/sp25/en&lt;/a&gt;.&lt;/span&gt;
                &lt;/li&gt;
            &lt;/ol&gt;
          &lt;/div&gt;
        &lt;!-- l. 207 --&gt;&lt;p class=&#39;indent&#39;&gt;   We then analyze the emerging regional censorship in the Henan Province, comparing its policies and implementations with the
        national GFW. As illustrated in &lt;a href=&#39;#fig:1-two-firewalls&#39;&gt;Figure 1&lt;/a&gt;, our investigation reveals that the provincial-level middleboxes in Henan block access to
        certain HTTP and HTTPS websites through both HTTP Host-based and TLS Server Name Indication (SNI)-based filtering
        (&lt;a href=&#39;#sec:4.1-methodology&#39;&gt;Section 4.1&lt;/a&gt;). Contrasting the GFW that monitors and blocks traffic leaving and entering the country, this regional
        firewall only censors traffic exiting the province (&lt;a href=&#39;#sec:4.2-what-traffic-is-targeted&#39;&gt;Section 4.2&lt;/a&gt;). It also differs from the GFW in terms of connection
        tracking and parsing logic (&lt;a href=&#39;#sec:4.3-how-the-henan-firewall-parses-connections&#39;&gt;Section 4.3&lt;/a&gt;), injection behaviors and fingerprints (&lt;a href=&#39;#sec:4.4-how-the-henan-firewall-blocks-traffic&#39;&gt;Section 4.4&lt;/a&gt;), and network location.
        (&lt;a href=&#39;#sec:4.5-where-are-the-censorship-devices-deployed&#39;&gt;Section 4.5&lt;/a&gt;).
        &lt;/p&gt;
        &lt;div class=&#39;figure&#39;&gt;
            &lt;p class=&#39;noindent&#39; id=&#39;fig:1-two-firewalls&#39;&gt;
                &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/two-firewalls-.png&#39; /&gt;
                &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:1-two-firewalls&#34;&gt;Figure 1&lt;/a&gt;:  Henan  Province  has  deployed  TLS  SNI-based  and  HTTP  Host-based  censorship  middleboxes  that  inspect  and
                block traffic exiting the province.
                &lt;/p&gt;
            &lt;/p&gt;
        &lt;/div&gt;
        &lt;!-- l. 263 --&gt;&lt;p class=&#39;indent&#39;&gt;   We conduct a longitudinal study to understand the content blocked by the Henan Firewall and how it differs from the
        content  blocked  by  the  GFW  (&lt;a href=&#39;#sec:5-understanding-the-blocklists&#39;&gt;Section 5&lt;/a&gt;).  Between  November  2023  and  March  2025  (with  a  measurement  gap
        between March and October 2024), we tested Tranco top one million domains on a daily basis, and tested CZDS
        227 million domains on a weekly basis. We find that the Henan Firewall employs more aggressive and volatile
        blocking policies than the GFW. The Henan Firewall blocked a cumulative 4.2 million domains, more than five
        times the size of the GFW’s cumulative blocklist. A key reason for this was its blocking of generic second-level
        domains (e.g., &lt;span class=&#39;cmtt-10&#39;&gt;*.com.au&lt;/span&gt;). Our testing also revealed periods where it blocked ten times more domains than the
        GFW.
        &lt;/p&gt;
        &lt;!-- l. 288 --&gt;&lt;p class=&#39;indent&#39;&gt;   Based on the observed parsing flaws and injection behaviors, we introduce circumvention techniques to bypass this regional
        censorship (&lt;a href=&#39;#sec:6-circumvention-strategies&#39;&gt;Section 6&lt;/a&gt;), which have been implemented by various popular anti-censorship tools. The regional censorship in Henan
        marks one of the first formally documented cases of a provincial firewall operating autonomously in China. We hope our study
        sounds the alarm to the broader censorship research community to identify, investigate, and combat the emergence of regional
        censorship in China and elsewhere.
        &lt;/p&gt;
        &lt;!-- l. 332 --&gt;&lt;h2 class=&#34;sectionHead&#34; id=&#34;2&#34;&gt;&lt;a id=&#34;sec:2-background-and-related-work&#34; href=&#34;#sec:2-background-and-related-work&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;2.&lt;/span&gt; Background and Related Work&lt;/a&gt;&lt;/h2&gt;
        &lt;!-- l. 337 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;2.1&#34;&gt; &lt;a id=&#34;sec:2.1-the-great-firewall-of-china-gfw&#34; href=&#34;#sec:2.1-the-great-firewall-of-china-gfw&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;2.1.&lt;/span&gt; The Great Firewall of China (GFW)&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 340 --&gt;&lt;p class=&#39;indent&#39;&gt;   The Great Firewall of China (GFW) is a set of different censorship mechanisms and devices deployed in China. The GFW
        utilizes a network of middleboxes distributed across China’s border autonomous systems (ASes) to inspect and block Internet traffic &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Xu2011a&#39;&gt;17&lt;/a&gt;]&lt;/span&gt;. The GFW not only blocks access to specific websites and services, but also tries to identify and block attempts to bypass its
        censorship.
        &lt;/p&gt;
        &lt;!-- l. 347 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Website censorship.   &lt;/span&gt;To block access to specific websites and services, the GFW often employs a combination of techniques,
        including DNS injection &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Duan2012a&#39;&gt;1&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2021a&#39;&gt;3&lt;/a&gt;]&lt;/span&gt;, HTTP Host-based filtering &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Rambert2021a&#39;&gt;8&lt;/a&gt;]&lt;/span&gt;, TLS SNI/ESNI-based filtering &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Chai2019a&#39;&gt;2&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;, &lt;a href=&#39;#cite:Bock2020ESNI&#39;&gt;10&lt;/a&gt;, &lt;a href=&#39;#cite:2022-tls-blocking&#39;&gt;20&lt;/a&gt;]&lt;/span&gt;, and IP address
        blocking &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Chai2019a&#39;&gt;2&lt;/a&gt; §4]&lt;/span&gt;.
        &lt;/p&gt;
        &lt;!-- l. 361 --&gt;&lt;p class=&#39;indent&#39;&gt;   To censor DNS traffic, the GFW operates &lt;span class=&#39;ptmri8t-&#39;&gt;on-path &lt;/span&gt;to inject forged DNS responses with wrong IP addresses to block access to
        specific domains &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;3&lt;/a&gt;, &lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;4&lt;/a&gt;, &lt;a href=&#39;#cite:Fan2025a&#39;&gt;5&lt;/a&gt;, &lt;a href=&#39;#cite:Farnan2016a&#39;&gt;21&lt;/a&gt;, &lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;22&lt;/a&gt;]&lt;/span&gt;. Early reports from 2002 documented that the GFW used a single wrong IP address in its
        forged responses &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Dong2002a&#39;&gt;23&lt;/a&gt;, &lt;a href=&#39;#cite:Zittrain2003a&#39;&gt;24&lt;/a&gt;]&lt;/span&gt;. Over time, this evolved into a more sophisticated system employing an increasing number of fake
        addresses and expanding the list of blocked domains &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;3&lt;/a&gt;, &lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;4&lt;/a&gt;, &lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;22&lt;/a&gt;, &lt;a href=&#39;#cite:Lowe2007a&#39;&gt;25&lt;/a&gt;]&lt;/span&gt;. Researchers have uncovered memory disclosure vulnerabilities
        in the GFW’s injection system &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Fan2025a&#39;&gt;5&lt;/a&gt;, &lt;a href=&#39;#cite:Sakamoto2024a&#39;&gt;16&lt;/a&gt;, &lt;a href=&#39;#cite:gfw-looking-glass-post&#39;&gt;26&lt;/a&gt;]&lt;/span&gt;.
        &lt;/p&gt;
        &lt;!-- l. 369 --&gt;&lt;p class=&#39;indent&#39;&gt;   To censor HTTP and TLS traffic, the GFW statefully inspects unencrypted text in the connection. Upon detecting a
        censored domain in a HTTP request’s Host field or in a TLS ClientHello’s Server Name Indication (SNI) extension,
        the GFW injects TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packets to both sides of the connection to tear it down &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Clayton2006a&#39;&gt;6&lt;/a&gt;, &lt;a href=&#39;#cite:Wang2017a&#39;&gt;7&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;, &lt;a href=&#39;#cite:tang2016depth&#39;&gt;27&lt;/a&gt;, &lt;a href=&#39;#cite:Bock2021b&#39;&gt;28&lt;/a&gt;]&lt;/span&gt;. &lt;a href=&#39;#fig:2-waterfall-diag&#39;&gt;Figure 2&lt;/a&gt;
        shows the GFW’s operation on a connection containing a forbidden domain name in the SNI of the TLS Client
        Hello.
        &lt;/p&gt;
        &lt;div class=&#39;figure&#39;&gt;
            &lt;p class=&#39;noindent&#39; id=&#39;fig:2-waterfall-diag&#39;&gt;
                &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/waterfall-diag-.png&#39; /&gt;
                &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:2-waterfall-diag&#34;&gt;Figure 2&lt;/a&gt;:  Overview of the Henan Firewall and the three different types of GFW. One can trigger and study each censorship
                    mechanism individually by putting exclusively censored domains in the SNI or HTTP Host field of a probe. For example,
                    as of April 2024, &lt;span class=&#39;cmtt-10&#39;&gt;011.com &lt;/span&gt;was exclusively blocked by the Henan Firewall, and &lt;span class=&#39;cmtt-10&#39;&gt;youtube.com &lt;/span&gt;was exclusively blocked by
                    the GFW.
                &lt;/p&gt;
            &lt;/p&gt;
        &lt;/div&gt;
        &lt;!-- l. 382 --&gt;&lt;p class=&#39;indent&#39;&gt;   The GFW often operates bidirectionally, meaning both traffic coming into the country and leaving the country can trigger its
        censorship &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;4&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;, &lt;a href=&#39;#cite:Sparks2012a&#39;&gt;29&lt;/a&gt;]&lt;/span&gt;. The bidirectional operation of censorship middleboxes has enabled researchers to measure censorship from
        outside the country &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;3&lt;/a&gt;, &lt;a href=&#39;#cite:Marczak2015a&#39;&gt;30&lt;/a&gt;, &lt;a href=&#39;#cite:Pearce2017b&#39;&gt;31&lt;/a&gt;]&lt;/span&gt;.
        &lt;/p&gt;
        &lt;!-- l. 390 --&gt;&lt;p class=&#39;indent&#39;&gt;   Projects such as OONI &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Filasto2012a&#39;&gt;32&lt;/a&gt;]&lt;/span&gt;, Censored Planet &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Raman2020c&#39;&gt;33&lt;/a&gt;]&lt;/span&gt;, and ICLab &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Niaki2020a&#39;&gt;34&lt;/a&gt;]&lt;/span&gt; have been measuring censorship globally
        for years. To monitor website censorship in China, several large-scale projects have been developed, including the
        GreatFire Analyzer &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:greatfire_analyzer&#39;&gt;35&lt;/a&gt;]&lt;/span&gt;, Blocky &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:greatfire_blocky&#39;&gt;36&lt;/a&gt;]&lt;/span&gt;, GFWatch &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;3&lt;/a&gt;]&lt;/span&gt;, and GFWeb &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;]&lt;/span&gt;. While longitudinal and large scale studies
        are excellent at tracking and understanding the blocklist changes in the GFW, sometimes a revisit of the existing
        censorship mechanisms could still reveal new updates by the censor. For example, Bock et al. &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Bock2021c&#39;&gt;11&lt;/a&gt;]&lt;/span&gt; discovered
        secondary TLS censorship middleboxes in China that had operated undetected until an in-depth analysis revealed
        them.
        &lt;/p&gt;
        &lt;!-- l. 413 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Proxy censorship.   &lt;/span&gt;Blocking access to websites is not enough to prevent users from accessing censored content, as users can use
        circumvention tools to bypass censorship. There has thus been a seemingly endless cat-and-mouse game between the GFW and the
        Internet users in China &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:cat-and-mouse&#39;&gt;37&lt;/a&gt;]&lt;/span&gt;. For example, the GFW employs active probing techniques to identify and block circumvention
        tools, such at Tor &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Ensafi2015b&#39;&gt;12&lt;/a&gt;, &lt;a href=&#39;#cite:Dunna2018a&#39;&gt;13&lt;/a&gt;, &lt;a href=&#39;#cite:Winter-obfs2-probe&#39;&gt;38&lt;/a&gt;, &lt;a href=&#39;#cite:Winter2012a&#39;&gt;39&lt;/a&gt;, &lt;a href=&#39;#cite:knock-knock-tor&#39;&gt;40&lt;/a&gt;]&lt;/span&gt; and Shadowsocks &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Alice2020a&#39;&gt;14&lt;/a&gt;, &lt;a href=&#39;#cite:Wu2023a&#39;&gt;15&lt;/a&gt; §5]&lt;/span&gt;, which have been successfully defended


        against &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2021ShadowsocksAdvise&#39;&gt;41&lt;/a&gt;, &lt;a href=&#39;#cite:Anonymous2021ShadowsocksTutorial&#39;&gt;42&lt;/a&gt;, &lt;a href=&#39;#cite:Frolov2020a&#39;&gt;43&lt;/a&gt;, &lt;a href=&#39;#cite:Frolov2020b&#39;&gt;44&lt;/a&gt;]&lt;/span&gt;. The GFW also conducts traffic analysis to identify and block fully encrypted proxies &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Wu2023a&#39;&gt;15&lt;/a&gt;]&lt;/span&gt;.
        &lt;/p&gt;
        &lt;!-- l. 427 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Other censorship mechanisms.   &lt;/span&gt;There have also been unique components of China’s censorship that appear separate from the
        GFW’s censorship against websites and proxies. Notably, in 2015, researchers discovered the “Great Cannon” of China, which
        injected Javascript into HTTP traffic in order to co-opt victim browsers into participating in a denial-of-service attack against specific
        hosts &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Marczak2015a&#39;&gt;30&lt;/a&gt;]&lt;/span&gt;.
        &lt;/p&gt;
        &lt;!-- l. 439 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;2.2&#34;&gt; &lt;a id=&#34;sec:2.2-regional-variation-in-censorship&#34; href=&#34;#sec:2.2-regional-variation-in-censorship&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;2.2.&lt;/span&gt; Regional Variation in Censorship&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 441 --&gt;&lt;p class=&#39;indent&#39;&gt;   Localized or decentralized censorship mechanisms are common in countries with strict censorship policies. In Russia, thousands
        of privately owned ISPs each implement their own filtering mechanisms, resulting in a varied censorship landscape &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Xue2022b&#39;&gt;45&lt;/a&gt;, &lt;a href=&#39;#cite:Ortwein2023a&#39;&gt;46&lt;/a&gt;, &lt;a href=&#39;#cite:Ramesh2020a&#39;&gt;47&lt;/a&gt;]&lt;/span&gt;.
        Similarly, in India, researchers have shown that ISPs differ significantly in their implementation of government censorship orders,
        leading to fragmented censorship across the country &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Yadav2018a&#39;&gt;48&lt;/a&gt;]&lt;/span&gt;.
        &lt;/p&gt;
        &lt;!-- l. 448 --&gt;&lt;p class=&#39;indent&#39;&gt;   However, prior work has suggested that China’s censorship systems and policies are largely uniform and centralized
        across the country. In 2011, Xu et al. &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Xu2011a&#39;&gt;17&lt;/a&gt;]&lt;/span&gt; measured the location of censorship devices in China. They found that
        China’s keyword-censoring middleboxes were largely at the edges of the network and employed rules in line with
        nationwide blocking policies of that time. In 2012, Wright &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Wright2012a&#39;&gt;18&lt;/a&gt;]&lt;/span&gt; performed a small-scale study on DNS censorship
        in  China,  finding  that  DNS  responses  to  queries  varied  across  the  country.  However,  this  work  did  not  account
        for other possible causes of the variation in DNS responses (e.g. geolocation-based load balancing, or changes in
        DNS configuration). In 2018, Bao et al. &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Bao2018a&#39;&gt;49&lt;/a&gt;]&lt;/span&gt; measured DNS injection variances in China from residential and
        cellular IP addresses. Internet-wide and longitudinal measurements have revealed China’s uniform and coordinated
        management of censorship policies &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;4&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2021a&#39;&gt;3&lt;/a&gt;, &lt;a href=&#39;#cite:Wu2023a&#39;&gt;15&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;]&lt;/span&gt;, software updates &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Sakamoto2024a&#39;&gt;16&lt;/a&gt; §4.5]&lt;/span&gt; &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Fan2025a&#39;&gt;5&lt;/a&gt; §VII]&lt;/span&gt;, and infrastructures &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Alice2020a&#39;&gt;14&lt;/a&gt; §3.4]&lt;/span&gt; &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;4&lt;/a&gt; §5]&lt;/span&gt;.
        &lt;/p&gt;
        &lt;!-- l. 546 --&gt;&lt;h2 class=&#34;sectionHead&#34; id=&#34;3&#34;&gt;&lt;a id=&#34;sec:3-detecting-regional-censorship&#34; href=&#34;#sec:3-detecting-regional-censorship&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;3.&lt;/span&gt; Detecting Regional Censorship&lt;/a&gt;&lt;/h2&gt;
        &lt;!-- l. 569 --&gt;&lt;p class=&#39;indent&#39;&gt;   Anti-censorship researchers outside of China often rely on local user reports to learn about the new censorship
        shifts and upgrades in China. This is partially because of the difficulty for researchers to obtain a diverse range of
        vantage points inside China and then constantly monitor various Internet services and protocols. Encouragingly, online
        discussion forums—such as Net4People BBS &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:net4people_bbs_issues&#39;&gt;50&lt;/a&gt;]&lt;/span&gt;, NTC Party forum &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:ntc_party_forum&#39;&gt;51&lt;/a&gt;]&lt;/span&gt;, and the GitHub issue pages of popular
        anti-censorship tools such as Xray &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:xtls_xray_core_issues&#39;&gt;52&lt;/a&gt;]&lt;/span&gt;, V2Ray &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:v2fly_v2ray_core_issues&#39;&gt;53&lt;/a&gt;]&lt;/span&gt;, sing-box &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:sagernet_sing_box_issues&#39;&gt;54&lt;/a&gt;]&lt;/span&gt;, and Hysteria &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:apernet_hysteria_issues&#39;&gt;55&lt;/a&gt;]&lt;/span&gt;—enable users to report new
        censorship behaviors as soon as they encounter them and allow researchers to investigate those reports promptly &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:cat-and-mouse&#39;&gt;37&lt;/a&gt;]&lt;/span&gt;.
        &lt;/p&gt;
        &lt;!-- l. 584 --&gt;&lt;p class=&#39;indent&#39;&gt;   This crowdsourced, collaborative approach has also been effective in identifying and combating the provincial censorship in
        Henan. In particular, our study started with reports from a group of users in Henan who were unable to access certain websites &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Henan-user-report&#39;&gt;19&lt;/a&gt;, &lt;a href=&#39;#cite:net4people442&#39;&gt;56&lt;/a&gt;, &lt;a href=&#39;#cite:net4people416&#39;&gt;57&lt;/a&gt;, &lt;a href=&#39;#cite:ghostcomment&#39;&gt;58&lt;/a&gt;, &lt;a href=&#39;#cite:tsinbei_tcp_timestamps&#39;&gt;59&lt;/a&gt;]&lt;/span&gt;. We then obtained a server in the Henan Province and confirmed the presence of a regional firewall. In
        particular, as illustrated in &lt;a href=&#39;#fig:2-waterfall-diag&#39;&gt;Figure 2&lt;/a&gt;, we found that the regional Henan Firewall blocked TLS and HTTP connections for some
        Server Name Indication (SNI) and HTTP Host values, but it operated differently than the GFW. Most distinctively, the regional
        firewall in Henan blocks a TCP connection by injecting one TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST+ACK&lt;/span&gt; packet containing a fixed 10-byte payload to the client.
        The unique payload of TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packet differentiates the Henan Firewall from all three types of packets injected by the
        GFW.
        &lt;/p&gt;
        &lt;!-- l. 601 --&gt;&lt;p class=&#39;indent&#39;&gt;   The discovery of regional censorship in Henan province led to a natural question: have other provinces in China
        deployed the same or similar regional censorship? Below, we explore this question with measurement across the
        country.
        &lt;/p&gt;
        &lt;!-- l. 606 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3.1&#34;&gt; &lt;a id=&#34;sec:3.1-experiment&#34; href=&#34;#sec:3.1-experiment&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;3.1.&lt;/span&gt; Experiment&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 619 --&gt;&lt;p class=&#39;indent&#39;&gt;   Our goal is to quantify the regional variation of TLS censorship across China by comparing the number of domains blocked
        between each pair of hosts inside or outside of China. As summarized by the second row of &lt;a href=&#39;#tbl:1-experiment-timeline-and-vantage-points&#39;&gt;Table 1&lt;/a&gt;, we obtained two vantage
        points in each of the seven cities in China, including Shanghai, Beijing, Chongqing, Guangzhou (Guangdong Province), Nanjing
        (Jiangsu Province), Chengdu (Sichuan Province), and Zhengzhou (in Henan Province). We also set up two VPSes in each of the
        three locations outside of China: Seattle (U.S.), San Francisco (U.S.), and Singapore. Our selection of vantage points was guided by
        a set of ethical considerations detailed in &lt;a href=&#39;#sec:7-ethics&#39;&gt;Section 7&lt;/a&gt;.
        &lt;/p&gt;
        &lt;div class=&#39;table-container&#39; id=&#39;tbl:1-experiment-timeline-and-vantage-points&#39;&gt;
        &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:1-experiment-timeline-and-vantage-points&#34;&gt;TABLE 1&lt;/a&gt;: Experiment timeline and vantage points. In total, we used 14 VPSes in China VPS Cloud (CVC, AS4837) in Zhengzhou, Henan Province (HN), six VPSes in Akamai Linode (LD, AS63949) in San Francisco (SF), Singapore (SG) and Seattle (SE), 12 VPSes in Tencent Cloud (TC, AS45090) in Beijing (BJ), Shanghai (SH), Chongqing (CQ), Guangzhou, Guangdong Province (GZ), Chengdu, Sichuan Province (CD), Nanjing, Jiangsu Province (NJ), and one bare metal network tap server (TAP) in a U.S. university.&lt;/p&gt;
          &lt;div class=&#39;tabular&#39;&gt;
              &lt;table class=&#39;tabular&#39; id=&#39;TBL-1&#39;&gt;
                  &lt;colgroup id=&#39;TBL-1-1g&#39;&gt;
                      &lt;col id=&#39;TBL-1-1&#39; /&gt;
                      &lt;col id=&#39;TBL-1-2&#39; /&gt;
                      &lt;col id=&#39;TBL-1-3&#39; /&gt;
                      &lt;col id=&#39;TBL-1-4&#39; /&gt;
                      &lt;col id=&#39;TBL-1-5&#39; /&gt;
                      &lt;col id=&#39;TBL-1-6&#39; /&gt;
                      &lt;col id=&#39;TBL-1-7&#39; /&gt;
                  &lt;/colgroup&gt;
                  &lt;tr id=&#39;TBL-1-1-&#39;&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-1-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Experiments &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-1-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Time Span &lt;/td&gt;
                      &lt;td class=&#39;td10&#39; colspan=&#39;2&#39; id=&#39;TBL-1-1-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Duration &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-1-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; China Vantage Points &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-1-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; External Vantage Points &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-1-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Sections &lt;/td&gt;
                  &lt;/tr&gt;
                  &lt;tr id=&#39;TBL-1-2-&#39;&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-2-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Identification &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-2-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 7/10/24 &lt;/td&gt;
                      &lt;td class=&#39;td10&#39; id=&#39;TBL-1-2-3&#39; style=&#39;white-space:nowrap; text-align:right; border-right: none;&#39;&gt; 1 &lt;/td&gt;
                      &lt;td class=&#39;td01&#39; id=&#39;TBL-1-2-4&#39; style=&#39;white-space:nowrap; text-align:left; border-left: none;&#39;&gt; &amp;nbsp;day &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-2-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 12 (TC), 2 (CVC: HN) &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-2-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 4 (LD: SG,SE) &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-2-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; §&lt;a href=&#39;#sec:3-detecting-regional-censorship&#39;&gt;3&lt;/a&gt; &lt;/td&gt;
                  &lt;/tr&gt;
                  &lt;tr id=&#39;TBL-1-3-&#39;&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-3-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Characterization &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-3-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 10/2/23 – 11/12/24 &lt;/td&gt;
                      &lt;td class=&#39;td10&#39; id=&#39;TBL-1-3-3&#39; style=&#39;white-space:nowrap; text-align:right; border-right: none;&#39;&gt; 13 &lt;/td&gt;
                      &lt;td class=&#39;td01&#39; id=&#39;TBL-1-3-4&#39; style=&#39;white-space:nowrap; text-align:left; border-left: none;&#39;&gt; &amp;nbsp;months &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-3-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 2 (CVC: HN) &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-3-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 1 (LD: SF), 3 (TC: GZ,BJ,SH) &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-3-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; §&lt;a href=&#39;#sec:4-characterizing-the-censorship-devices&#39;&gt;4&lt;/a&gt; &lt;/td&gt;
                  &lt;/tr&gt;
                  &lt;tr id=&#39;TBL-1-4-&#39;&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-4-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Traffic Analysis &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-4-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 10/31/24 &lt;/td&gt;
                      &lt;td class=&#39;td10&#39; id=&#39;TBL-1-4-3&#39; style=&#39;white-space:nowrap; text-align:right; border-right: none;&#39;&gt; 1 &lt;/td&gt;
                      &lt;td class=&#39;td01&#39; id=&#39;TBL-1-4-4&#39; style=&#39;white-space:nowrap; text-align:left; border-left: none;&#39;&gt; &amp;nbsp;hour &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-4-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; – &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-4-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 1 (TAP: US) &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-4-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; §&lt;a href=&#39;#sec:4.3-how-the-henan-firewall-parses-connections&#39;&gt;4.3&lt;/a&gt; &lt;/td&gt;
                  &lt;/tr&gt;
                  &lt;tr id=&#39;TBL-1-5-&#39;&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-5-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Locating &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-5-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 10/2/23 – 12/8/23 &lt;/td&gt;
                      &lt;td class=&#39;td10&#39; id=&#39;TBL-1-5-3&#39; style=&#39;white-space:nowrap; text-align:right; border-right: none;&#39;&gt; 2 &lt;/td&gt;
                      &lt;td class=&#39;td01&#39; id=&#39;TBL-1-5-4&#39; style=&#39;white-space:nowrap; text-align:left; border-left: none;&#39;&gt; &amp;nbsp;months &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-5-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 1 (CVC: HN), 1 (TC: GZ) &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-5-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 1 (LD: SF) &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-5-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; §&lt;a href=&#39;#sec:4.5-where-are-the-censorship-devices-deployed&#39;&gt;4.5&lt;/a&gt; &lt;/td&gt;
                  &lt;/tr&gt;
                  &lt;tr id=&#39;TBL-1-6-&#39;&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-6-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Blocklist &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-6-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 11/5/23 – 3/5/24 &amp;amp;&lt;br/&gt;10/07/24 – 3/31/25 &lt;/td&gt;
                      &lt;td class=&#39;td10&#39; id=&#39;TBL-1-6-3&#39; style=&#39;white-space:nowrap; text-align:right; border-right: none;&#39;&gt; 9 &lt;/td&gt;
                      &lt;td class=&#39;td01&#39; id=&#39;TBL-1-6-4&#39; style=&#39;white-space:nowrap; text-align:left; border-left: none;&#39;&gt; &amp;nbsp;months &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-6-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 14 (CVC: HN), 2 (TC: GZ) &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-6-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 2 (LD: SF) &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-6-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; §&lt;a href=&#39;#sec:5-understanding-the-blocklists&#39;&gt;5&lt;/a&gt; &lt;/td&gt;
                  &lt;/tr&gt;
              &lt;/table&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;!-- l. 636 --&gt;&lt;p class=&#39;indent&#39;&gt;   For the two VPSes in each location inside or outside of China, we used one as a client and the other as a &lt;span class=&#39;ptmri8t-&#39;&gt;sink server&lt;/span&gt;. The sink
        servers were configured to accept TCP handshakes on all ports between 1 and 65535. They would acknowledge the TCP data sent to
        them, but would never send any TCP payload back to the client. We configured &lt;span class=&#39;cmtt-10&#39;&gt;iptables &lt;/span&gt;rules on both the client and sink servers
        to drop any outgoing &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packets. This way, any &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packets received on either end must be injected by some middleboxes on the
        network path. We could thus confirm the presence of censorship by checking whether the TCP connection was being
        reset.
        &lt;/p&gt;
        &lt;!-- l. 647 --&gt;&lt;p class=&#39;indent&#39;&gt;   We  then  sent  TLS  traffic  with  various  SNI  values  between  each  pair  of  the  clients  and  sink  servers
        on  July 10,  2024.  In  particular,  we  used  the  top  10,000  domains  from  the  Tranco  list &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:LePochat2019tranco&#39;&gt;60&lt;/a&gt;]&lt;/span&gt;  5YZ7N  for
        testing.&lt;span class=&#39;footnote-mark&#39;&gt;&lt;a href=&#39;#fn:tranco-list-5YZ7N&#39;&gt;&lt;sup class=&#39;textsuperscript&#39;&gt;2&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;
        To reduce the chances of false negatives due to packet loss, we repeated our test three times on the same day and let the OS control
        retransmissions of the packets.
        &lt;/p&gt;
        &lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
            &lt;ol&gt;
              &lt;li class=&#34;footnote-text&#34;&gt;
                &lt;a id=&#34;fn:tranco-list-5YZ7N&#34;&gt;&lt;/a&gt;
                &lt;span class=&#34;footnote-mark&#34;&gt;
                  &lt;sup class=&#34;textsuperscript&#34;&gt;2&lt;/sup&gt;
                &lt;/span&gt;
                &lt;span class=&#34;footnotes-text&#34;&gt;
                  Tranco list ID 5YZ7N, obtained on August 15, 2023:
                  &lt;a href=&#34;https://tranco-list.eu/list/5YZ7N/1000000&#34;&gt;https://tranco-list.eu/list/5YZ7N/1000000&lt;/a&gt;.
                &lt;/span&gt;
              &lt;/li&gt;
            &lt;/ol&gt;
          &lt;/div&gt;

        &lt;!-- l. 665 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Limitations.   &lt;/span&gt;Ideally, we would have liked to use a diverse set of vantage points to identify potential regional censorship
        in China. However, due to the difficulty of obtaining VPSes in China, we have only been able to obtain vantage
        points in a limited number of locations and ASes. While using residential vantage points would have allowed us to
        observe potential middleboxes from more network locations in China, this could put potential risks on uninformed
        users and providers of residential proxies &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Mi2019-resident-evil&#39;&gt;61&lt;/a&gt;]&lt;/span&gt;. For this reason, we focus on using two large VPS providers in
        China, China VPS Cloud and Tencent Cloud, to avoid risks or persecution to individuals. We utilized all available
        locations these two VPS providers offered to maximize our coverage. We acknowledge that our results are limited to
        measuring TLS censorship, which could potentially miss regional censorship of other protocols. Additionally, due to a
        configuration error, we did not test using our client in Singapore, potentially missing bidirectional censorship from that
        perspective.
        &lt;/p&gt;
        &lt;!-- l. 742 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3.2&#34;&gt; &lt;a id=&#34;sec:3.2-results&#34; href=&#34;#sec:3.2-results&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;3.2.&lt;/span&gt; Results&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 745 --&gt;&lt;p class=&#39;indent&#39;&gt;   &lt;a href=&#39;#fig:3-client-to-sink-server-data-matrix&#39;&gt;Figure 3&lt;/a&gt; shows the number of blocked domains between different locations. We first observe that, connections originating from
        China to our sink servers in Singapore and the U.S. were almost equally impacted by the national-level Great Firewall of China
        (GFW), with around 479 out of the 10,000 domains blocked. The most significant blocking was observed in Zhengzhou, the capital
        of Henan province, where both provincial (Henan) and national (GFW) censorship mechanisms contributed to the high
        figure.
        &lt;/p&gt;
        &lt;div class=&#39;figure&#39;&gt;
            &lt;p class=&#39;noindent&#39; id=&#39;fig:3-client-to-sink-server-data-matrix&#39;&gt;
                &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/client-to-sink-server-data-matrix-.png&#39; /&gt;
                &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:3-client-to-sink-server-data-matrix&#34;&gt;Figure 3&lt;/a&gt;: The matrix shows the number of domains blocked between each pair of hosts in various locations. For each host
                    pair,  we  sent  TLS  ClientHello  messages  with  SNI  values  of  the  top  10,000  domains  from  the  Tranco  list &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:LePochat2019tranco&#39;&gt;60&lt;/a&gt;]&lt;/span&gt;  5YZ7N,
                    generated on August 15, 2023. The result suggests that 1) regional censorship in Henan province exists evidenced by the
                    non-zero  number  of  blocked  domains  when  testing  from  Zhengzhou,  Henan  to  sink  servers  in  other  regions  of  China;  2)
                    the  censorship  in  Henan  is  not  bidirectional,  as  initiating  TLS  connections  from  the  outside  to  Henan  did  not  trigger  any
                    blocking;  3)  the  GFW  maintains  a  blocklist  that  is  only  censored  when  accessed  from  within  China,  as  evidenced  by  the
                    differences in the numbers of blocked domains when testing inside-out and outside-in.
            &lt;/p&gt;
        &lt;/div&gt;
        &lt;!-- l. 756 --&gt;&lt;p class=&#39;indent&#39;&gt;   Traffic leaving Henan is affected by the regional firewall, regardless of the sink server location, even to other regions
        within China. On average, 122 domains were blocked by the Henan Firewall. We did not observe any blocking of
        TLS  connections  within  Henan  itself;  however,  since  both  of  our  client  and  sink  servers  were  in  the  same  data
        center,  we  can  only  cautiously  conclude  that  the  Henan  Firewall  does  not  affect  internal  traffic  within  this  data
        center.
        &lt;/p&gt;
        &lt;!-- l. 765 --&gt;&lt;p class=&#39;indent&#39;&gt;   When connections were made from Zhengzhou, Henan Province, to locations outside China (Singapore and Seattle), a total of
        594 domains were blocked. This indicates the simultaneous operation of two firewalls with independent blocklists, with the Henan
        Firewall intercepting traffic before it reaches the GFW and thus, increasing the total number of domains that are blocked. We,
        however, did not observe any blocking of connections from other client locations in China to Henan or other sink server regions
        within China. This finding suggests that the &lt;span class=&#39;ptmri8t-&#39;&gt;Henan Firewall is the first known deployment of a regional firewall in
        China.&lt;/span&gt;
        &lt;/p&gt;
        &lt;!-- l. 778 --&gt;&lt;p class=&#39;indent&#39;&gt;   Moreover, as presented in the last row of &lt;a href=&#39;#fig:3-client-to-sink-server-data-matrix&#39;&gt;Figure 3&lt;/a&gt;, tests from the U.S. to various locations in China consistently
        identified  the  same  411  domains  blocked  by  the  GFW,  with  only  one  exception:  tests  from  the  U.S.  to  Jiangsu
        Province detected 440 blocked domains. Further analysis indicates that the additional 29 domains blocked in the
        outside-in direction for Jiangsu is a subset of the 479 domains blocked by the GFW in the inside-out direction.
        This finding suggests that the additional censorship of these 29 domains likely does not reflect regional censorship
        specific to Jiangsu. Instead, it indicates that the GFW is configured to block these domains bidirectionally within
        Jiangsu.
        &lt;/p&gt;
        &lt;!-- l. 790 --&gt;&lt;p class=&#39;indent&#39;&gt;   Overall, these results are particularly noteworthy as they show the infeasibility of remote measurements to trigger the regional
        firewalls and more importantly, the asymmetric behavior of the GFW. In particular, while 479 domains were blocked on average
        when connections were initiated from within China, only 411 domains were blocked when connections were initiated from outside
        China. This discrepancy suggests that the GFW enforces a different blocklist for traffic originating from within China. Until recently,
        it was widely believed that the GFW operated symmetrically, triggering and applying the same blocklist to traffic regardless of
        direction. However, recent work has suggested this assumption is incorrect &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;]&lt;/span&gt;, and our findings here are consistent with this recent
        result.
        &lt;/p&gt;
        &lt;!-- l. 836 --&gt;&lt;p class=&#39;indent&#39;&gt;   We note that both the GFW and the Henan Firewall exhibit asymmetric interference to varying degrees. As shown
        in &lt;a href=&#39;#fig:4a-henan-inside-outside&#39;&gt;Figure 4(a) &lt;/a&gt;, while traffic going out of Henan is subject to the regional firewall (inside-out), inbound traffic (outside-in) to Henan
        does not trigger the regional firewall at all. This stands in contrast to the GFW, which, although bidirectional, behaves
        asymmetrically based on the domains queried.
        &lt;/p&gt;
        &lt;!-- l. 839 --&gt;&lt;p class=&#39;indent&#39;&gt;   &lt;a href=&#39;#fig:4b-gfw-inside-outside&#39;&gt;Figure 4(b)&lt;/a&gt; provides a clear example of this behavior. When a TLS ClientHello with SNI value &lt;span class=&#39;cmtt-10&#39;&gt;docker.com&lt;/span&gt;, in our
        case, is sent from within China (inside-out), the GFW triggers blocking via three TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packets. However, when
        the same TLS ClientHello is sent from outside of China (outside-in), the GFW does not trigger any blocking. On
        the other hand, when a TLS ClientHello packet with the SNI value &lt;span class=&#39;cmtt-10&#39;&gt;youtube.com&lt;/span&gt;, in this example, is sent, the
        GFW triggers blocking in both scenarios: whether the packet is sent from inside or outside China. This behavior
        demonstrates an apparent blocklist of domains that are exclusively censored by the GFW when accessed from within
        China.
        &lt;/p&gt;
        &lt;div class=&#34;row&#34;&gt;
            &lt;div class=&#34;col-12 col-md-6&#34;&gt;
              &lt;div class=&#34;figure d-flex flex-column h-100&#34;&gt;
                &lt;p class=&#34;noindent&#34; id=&#34;fig:4a-henan-inside-outside&#34;&gt;
                  &lt;img
                    alt=&#34;PIC&#34;
                    class=&#34;figure-img img-fluid img-full-in-row&#34;
                    src=&#34;../figures/henan-inside-outside-.png&#34;
                  /&gt;
                &lt;/p&gt;
                &lt;div class=&#34;text-center mt-auto mb-2&#34;&gt;
                  &lt;p class=&#34;caption w-100&#34;&gt;&lt;a href=&#34;#fig:4a-henan-inside-outside&#34;&gt;(a)&lt;/a&gt; Henan Firewall&lt;/p&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&#34;col-12 col-md-6&#34;&gt;
              &lt;div class=&#34;figure d-flex flex-column h-100&#34;&gt;
                &lt;p class=&#34;noindent&#34; id=&#34;fig:4b-gfw-inside-outside&#34;&gt;
                  &lt;img
                    alt=&#34;PIC&#34;
                    class=&#34;figure-img img-fluid img-full-in-row&#34;
                    src=&#34;../figures/gfw-inside-outside-.png&#34;
                  /&gt;
                &lt;/p&gt;
                &lt;div class=&#34;text-center mt-auto mb-2&#34;&gt;
                  &lt;p class=&#34;caption w-100&#34;&gt;&lt;a href=&#34;#fig:4b-gfw-inside-outside&#34;&gt;(b)&lt;/a&gt; GFW&lt;/p&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;
          &lt;/div&gt;
          &lt;p class=&#34;caption&#34;&gt;
            &lt;a href=&#34;#fig:4-demo-two-firewalls&#34;&gt;Figure 4&lt;/a&gt;:
            &lt;a href=&#34;#fig:4a-henan-inside-outside&#34;&gt;(a)&lt;/a&gt; The Henan Firewall does not censor inbound TLS or HTTP traffic to Henan, contrasting the bidirectional
            censorship employed by the GFW.
            &lt;a href=&#34;#fig:4b-gfw-inside-outside&#34;&gt;(b)&lt;/a&gt; The GFW’s TLS and HTTP censorship machines inspect bidirectional traffic coming
            in and out of China; however, certain domains are only censored when accessed from within China. In this example, while
            a TLS ClientHello with SNI value &lt;span class=&#34;cmtt-10&#34;&gt;docker.com&lt;/span&gt; can trigger the three TCP &lt;span class=&#34;cmtt-10&#34;&gt;RST&lt;/span&gt;
            packets by the GFW when sent from within China, it does not trigger any blocking when sent from outside of China.
          &lt;/p&gt;
        &lt;!-- l. 841 --&gt;&lt;p class=&#39;indent&#39;&gt;   In our experiment designed to detect any regional censorship, we inadvertently uncovered a significant aspect of the GFW’s
        operational mechanics that has only recently been documented &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;]&lt;/span&gt;. The newly observed asymmetric nature of the GFW and
        regional firewalls highlights the critical need for inside-out measurements to fully capture the extent and nuances of censorship.
        Relying solely on remote measurements, as is common in many other studies, fails to provide a comprehensive picture of such
        censorship events.
        &lt;/p&gt;
        &lt;!-- l. 843 --&gt;&lt;p class=&#39;indent&#39;&gt;   To further substantiate the asymmetric behavior of the GFW, we provide a list of domains that are exclusively blocked when
        sending TLS ClientHello messages from within China, as shown in &lt;a href=&#39;#tbl:2-gfw-blocked-domains&#39;&gt;Table 2&lt;/a&gt;. In our experiment, 68 out of the 10,000 domains did
        not trigger any censorship when tested from outside China but only were blocked when probed from inside China. These
        domains include popular websites such as &lt;span class=&#39;cmtt-10&#39;&gt;google.com&lt;/span&gt;, &lt;span class=&#39;cmtt-10&#39;&gt;nyt.com&lt;/span&gt;, and &lt;span class=&#39;cmtt-10&#39;&gt;docker.com&lt;/span&gt;. The list serves as concrete
        evidence of the selective enforcement of the GFW’s blocklist based on the origin of the traffic and the domain in
        question.
        &lt;/p&gt;
        &lt;div class=&#39;table-container&#39; id=&#39;tbl:2-gfw-blocked-domains&#39;&gt;
            &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:2-gfw-blocked-domains&#34;&gt;TABLE 2&lt;/a&gt;: A sample of domains that are exclusively blocked by the GFW when sending TLS ClientHello messages from within China. These domains did not trigger censorship when sent from outside China to within, as of July 10, 2024. Among the 10,000 Tranco top domains we tested, 68 domains were exclusively blocked inside-out and no domains were exclusively blocked outside-in.&lt;/p&gt;
            &lt;div class=&#39;tabular&#39;&gt;
              &lt;table class=&#39;tabular&#39; id=&#39;TBL-2&#39;&gt;
                &lt;colgroup id=&#39;TBL-2-1g&#39;&gt;
                  &lt;col id=&#39;TBL-2-1&#39;/&gt;
                &lt;/colgroup&gt;
                &lt;colgroup id=&#39;TBL-2-2g&#39;&gt;
                  &lt;col id=&#39;TBL-2-2&#39;/&gt;
                &lt;/colgroup&gt;
                &lt;colgroup id=&#39;TBL-2-3g&#39;&gt;
                  &lt;col id=&#39;TBL-2-3&#39;/&gt;
                &lt;/colgroup&gt;
                &lt;tr id=&#39;TBL-2-1-&#39;&gt;
                  &lt;td class=&#39;td11 text-nowrap text-left&#39; id=&#39;TBL-2-1-1&#39;&gt;binance.com&lt;/td&gt;
                  &lt;td class=&#39;td11 text-nowrap text-left&#39; id=&#39;TBL-2-1-2&#39;&gt;godaddy.com&lt;/td&gt;
                  &lt;td class=&#39;td11 text-nowrap text-left&#39; id=&#39;TBL-2-1-3&#39;&gt;note.com&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-2-&#39;&gt;
                  &lt;td class=&#39;td11 text-nowrap text-left&#39; id=&#39;TBL-2-2-1&#39;&gt;cdninstagram.com&lt;/td&gt;
                  &lt;td class=&#39;td11 text-nowrap text-left&#39; id=&#39;TBL-2-2-2&#39;&gt;google.com&lt;/td&gt;
                  &lt;td class=&#39;td11 text-nowrap text-left&#39; id=&#39;TBL-2-2-3&#39;&gt;nyt.com&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-3-&#39;&gt;
                  &lt;td class=&#39;td11 text-nowrap text-left&#39; id=&#39;TBL-2-3-1&#39;&gt;docker.com&lt;/td&gt;
                  &lt;td class=&#39;td11 text-nowrap text-left&#39; id=&#39;TBL-2-3-2&#39;&gt;google.com.hk&lt;/td&gt;
                  &lt;td class=&#39;td11 text-nowrap text-left&#39; id=&#39;TBL-2-3-3&#39;&gt;tiktokcdn.com&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-4-&#39;&gt;
                  &lt;td class=&#39;td11 text-nowrap text-left&#39; id=&#39;TBL-2-4-1&#39;&gt;gmail.com&lt;/td&gt;
                  &lt;td class=&#39;td11 text-nowrap text-left&#39; id=&#39;TBL-2-4-2&#39;&gt;linktr.ee&lt;/td&gt;
                  &lt;td class=&#39;td11 text-nowrap text-left&#39; id=&#39;TBL-2-4-3&#39;&gt;torproject.org&lt;/td&gt;
                &lt;/tr&gt;
              &lt;/table&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;!-- l. 878 --&gt;&lt;h2 class=&#34;sectionHead&#34; id=&#34;4&#34;&gt;&lt;a id=&#34;sec:4-characterizing-the-censorship-devices&#34; href=&#34;#sec:4-characterizing-the-censorship-devices&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;4.&lt;/span&gt; Characterizing the Censorship Devices&lt;/a&gt;&lt;/h2&gt;
        &lt;!-- l. 881 --&gt;&lt;p class=&#39;indent&#39;&gt;   Since October 2023, we conducted a series of experiments to characterize censorship devices and understand the differences
        between the Great Firewall (GFW) and Henan regional censorship devices. In this section, we answer several research questions:
        where are the regional censorship devices located? What packets can trigger the Henan SNI Firewall? Which ports are monitored by
        the Henan Firewall? Do the TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; injections have any specific fingerprints? And does the Henan Firewall induce residual
        censorship?
        &lt;/p&gt;
        &lt;!-- l. 892 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4.1&#34;&gt; &lt;a id=&#34;sec:4.1-methodology&#34; href=&#34;#sec:4.1-methodology&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;4.1.&lt;/span&gt; Methodology&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 897 --&gt;&lt;p class=&#39;indent&#39;&gt;   We developed a methodology tailored to the specific characteristics of two firewalls, i.e., regional and national, as discussed
        earlier. To precisely assess the impact of each firewall, our approach involves isolating and analyzing these two systems individually.
        This method, which was devised based on our preliminary observations, serves as the foundation for our comprehensive
        measurement experiments. Key aspects of our methodology are outlined below.
        &lt;/p&gt;
        &lt;!-- l. 899 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Obtaining Vantage Points.   &lt;/span&gt;In total we use 10 vantage points in Zhengzhou, China (in Henan) acquired via China VPS Cloud (AS
        4837), two VPSes in Guangzhou, one in Beijing, and one in Shanghai via Tencent Cloud (AS 45090), and two VPSes in San
        Francisco, U.S. through Akamai’s Linode (AS 63949). The VPSes in Guangzhou, Beijing, Shanghai and San Francisco served as
        sink servers that were programmed to listen on ports 1 to 65535 and accept TCP connections but did not send any other
        data back to the sender. All our machines ran Ubuntu 22.04, and we verified their advertised locations using the
        IP2Location &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:ip2location&#39;&gt;62&lt;/a&gt;]&lt;/span&gt; database. We have summarized the timeline of our experiments and the vantage points used in each
        in &lt;a href=&#39;#tbl:1-experiment-timeline-and-vantage-points&#39;&gt;Table 1&lt;/a&gt;.
        &lt;/p&gt;
        &lt;!-- l. 908 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Dropping Outgoing RSTs on the VPSes.   &lt;/span&gt;We configured &lt;span class=&#39;cmtt-10&#39;&gt;iptables &lt;/span&gt;rules on both the client and sink servers to drop all outgoing
        &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packets. This configuration ensures that any &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packet received by the client side can be reliably attributed to middlebox
        injections.
        &lt;/p&gt;
        &lt;!-- l. 912 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Triggering TLS SNI-based Censorship.   &lt;/span&gt;We trigger censorship by sending a TLS ClientHello with potentially censored domain
        names in the SNI field. Since the sink servers are configured to not respond with any data packets and not tear down connections
        before observing a &lt;span class=&#39;cmtt-10&#39;&gt;FIN&lt;/span&gt;or a &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packet, we expect any &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packets received are indeed injected packets from a firewall.
        We mark a domain name as censored if a &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packet is received for a TLS ClientHello containing the domain
        name.
        &lt;/p&gt;
        &lt;!-- l. 919 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Triggering HTTP Host-based Censorship.   &lt;/span&gt;To trigger HTTP censorship, we sent HTTP GET requests with the forbidden domain
        name in the Host header of the request:
        &lt;div style=&#34;text-align: center;&#34;&gt;
          &lt;code id=&#34;verbatim-1&#34; style=&#34;background: none;&#34;&gt;
            GET / HTTP/1.1\r\nHost: example.com\r\n
          &lt;/code&gt;
        &lt;/div&gt;
        &lt;/p&gt;

        &lt;!-- l. 925 --&gt;&lt;p class=&#39;nopar&#39;&gt; While later we found that the Henan Firewall does not require a full TCP handshake to trigger blocking, we still complete a TCP
        handshake before sending the HTTP request, making our testing methods consistent against the Henan Firewall and the GFW. We
        mark a domain name as censored if a &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packet is received for an HTTP GET request containing the domain
        name.
        &lt;/p&gt;
        &lt;!-- l. 940 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Isolating the Henan Firewall.   &lt;/span&gt;To distinguish Henan Firewall responses from the GFW’s, we identify several fingerprints unique to
        each firewall. Prior work has documented the GFW disrupts connections by injecting up to three &lt;span class=&#39;cmtt-10&#39;&gt;RST+ACK&lt;/span&gt; to both sides of the
        connection whenever a TLS ClientHello message with a forbidden Server Name Indication field is observed &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Chai2019a&#39;&gt;2&lt;/a&gt;, &lt;a href=&#39;#cite:Bock2020b&#39;&gt;63&lt;/a&gt;]&lt;/span&gt;. In contrast,
        the Henan Firewall injects a single &lt;span class=&#39;cmtt-10&#39;&gt;RST+ACK&lt;/span&gt; packet to only the client side of a connection. In addition, the Henan
        Firewall’s &lt;span class=&#39;cmtt-10&#39;&gt;RST+ACK&lt;/span&gt; packet contains a payload, making it easy to distinguish from GFW responses. We expand on this
        in &lt;a href=&#39;#sec:4.4-how-the-henan-firewall-blocks-traffic&#39;&gt;Section 4.4&lt;/a&gt;.
        &lt;/p&gt;
        &lt;!-- l. 952 --&gt;&lt;p class=&#39;indent&#39;&gt;   Finally, we send probes from vantage points in Henan to servers in Guangzhou, Beijing, and Shanghai to make sure that our
        traffic is not routed outside China (where it may encounter the GFW) but is still subject to the regional firewall in
        Henan.
        &lt;/p&gt;
        &lt;!-- l. 972 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Limitations.   &lt;/span&gt;Our measurements in Henan Province are limited to a single Autonomous System (AS), China Unicom (AS 4837),
        due to the difficulty of obtaining diverse vantage points in China that could be ethically used for censorship measurement.
        Consequently, our empirical findings are confined to this single Internet Service Provider (ISP), limiting our ability to confirm or
        characterize censorship practices across other ISPs or ASes in Henan.
        &lt;/p&gt;
        &lt;!-- l. 989 --&gt;&lt;p class=&#39;indent&#39;&gt;   While user reports suggest that ISPs in Henan employ region-specific censorship, the censorship implementations are
        reportedly distinct &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Henan-user-report-1&#39;&gt;64&lt;/a&gt;]&lt;/span&gt;. For instance, Github user 5e2t reported that China Mobile Henan censored traffic on its
        cellular network and was capable of reassembling closely spaced TCP packets &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Henan-user-report-1&#39;&gt;64&lt;/a&gt;]&lt;/span&gt;, which differs from the behavior
        we observed on China Unicom in &lt;a href=&#39;#sec:4.3-how-the-henan-firewall-parses-connections&#39;&gt;Section 4.3&lt;/a&gt;. Therefore, our results should be interpreted as reflective only of
        China  Unicom  Henan’s  censorship  implementation,  not  necessarily  indicative  of  province-wide  practices  across
        all ISPs.
        &lt;/p&gt;
        &lt;!-- l. 1013 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4.2&#34;&gt; &lt;a id=&#34;sec:4.2-what-traffic-is-targeted&#34; href=&#34;#sec:4.2-what-traffic-is-targeted&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;4.2.&lt;/span&gt; What Traffic Is Targeted&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 1016 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Does the Henan Firewall sample traffic to monitor and censor?   &lt;/span&gt;The censor has been observed to only monitor and censor a
        fraction of traffic, potentially as a way to reduce the computation load on its censorship devices &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Wu2023a&#39;&gt;15&lt;/a&gt; §6.3]&lt;/span&gt;. We, however, did not
        observe any traffic sampling or probabilistic blocking behaviors from the Henan Firewall. We observed that the Henan Firewall
        consistently blocked domains listed on its blocklist. We sent 1,000 consecutive ClientHello messages containing a forbidden
        domain name, each request made over a unique port pair with small delays. We received the TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packets for
        every connection we made, indicating a 100% triggering rate of censorship for censored domains of the Henan
        Firewall.
        &lt;/p&gt;
        &lt;!-- l. 1027 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;What ports does the Henan Firewall monitor?   &lt;/span&gt;Previous works have shown that the GFW TLS ESNI censorship middleboxes
        monitor all ports i.e. 1-65535 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Bock2020ESNI&#39;&gt;10&lt;/a&gt;]&lt;/span&gt;. To measure the Henan Firewall, we sent TLS ClientHello messages, with a known blocked SNI
        to all ports of our sink server in Guangzhou, China. We found that the Henan Firewall, similar to the GFW, monitors TLS traffic
        going to any TCP port number, ranging between 1 and 65535.
        &lt;/p&gt;
        &lt;!-- l. 1034 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Is the Henan Firewall bidirectional?   &lt;/span&gt;Owing to the inherent limitations of obtaining vantage points in a censored region,
        researchers typically opt for performing measurements from the outside in rather than inside out. Particularly in China, works that
        study the GFW &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;3&lt;/a&gt;, &lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;4&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;]&lt;/span&gt; used vantage points outside China because of its bidirectional nature. However, as mentioned
        in &lt;a href=&#39;#sec:3-detecting-regional-censorship&#39;&gt;Section 3&lt;/a&gt;, sending probes from outside China does not trigger the Henan Firewall as it only censors traffic going out of Henan.
        As shown in &lt;a href=&#39;#fig:3-client-to-sink-server-data-matrix&#39;&gt;Figure 3&lt;/a&gt;, we tested this by sending TLS ClientHello messages with different SNI values in the Tranco list &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:LePochat2019tranco&#39;&gt;60&lt;/a&gt;]&lt;/span&gt;
        5YZ7N, between nodes in Henan and nodes in other regions of China. We found that only traffic going out of Henan was blocked
        by the regional firewall. Similar asymmetric blocking behaviors were also observed in the GFW by prior work &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;, &lt;a href=&#39;#cite:Bock2020ESNI&#39;&gt;10&lt;/a&gt;]&lt;/span&gt;.
        &lt;/p&gt;
        &lt;!-- l. 1064 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4.3&#34;&gt; &lt;a id=&#34;sec:4.3-how-the-henan-firewall-parses-connections&#34; href=&#34;#sec:4.3-how-the-henan-firewall-parses-connections&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;4.3.&lt;/span&gt; How the Henan Firewall Parses Connections&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 1067 --&gt;&lt;p class=&#39;indent&#39;&gt;   In this section, we look at the parsing logic of the Henan Firewall and the GFW. We perform experiments to check the TCP
        handshake requirements for triggering the Henan Firewall and the GFW. We also use DPYProxy &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Niere2023a&#39;&gt;65&lt;/a&gt;]&lt;/span&gt; to test for TCP and TLS
        reassembly capabilities, as well as the presence of residual censorship in the two firewalls. We summarize our findings
        in &lt;a href=&#39;#tbl:3-parsing-logic-of-the-gfw-and-the-henan-firewall&#39;&gt;Table 3&lt;/a&gt;.
        &lt;/p&gt;
        &lt;div class=&#34;table-container&#34; id=&#34;tbl:3-parsing-logic-of-the-gfw-and-the-henan-firewall&#34;&gt;
          &lt;p class=&#34;caption&#34;&gt;
            &lt;a href=&#34;#tbl:3-parsing-logic-of-the-gfw-and-the-henan-firewall&#34;&gt;TABLE 3&lt;/a&gt;: Parsing logic of the GFW and the Henan Firewall. The Henan Firewall appears to be stateless and less robust against typical network variability than the GFW.
          &lt;/p&gt;

          &lt;div class=&#34;tabular&#34;&gt;
            &lt;table class=&#34;tabular&#34; id=&#34;TBL-3&#34;&gt;
              &lt;colgroup id=&#34;TBL-3-1g&#34;&gt;
                &lt;col id=&#34;TBL-3-1&#34; /&gt;
                &lt;col id=&#34;TBL-3-2&#34; /&gt;
                &lt;col id=&#34;TBL-3-3&#34; /&gt;
              &lt;/colgroup&gt;

              &lt;tr id=&#34;TBL-3-1-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-3-1-1&#34;&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-3-1-2&#34;&gt;
                  &lt;span class=&#34;ptmb8t-x-x-90&#34;&gt;GFW     &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-3-1-3&#34;&gt;
                  &lt;span class=&#34;ptmb8t-x-x-90&#34;&gt;Henan Firewall   &lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-3-2-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-3-2-1&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;Require SYN              &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-3-2-2&#34;&gt;
                  &lt;span class=&#34;pzdr-x-x-90&#34;&gt;✓        &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-3-2-3&#34;&gt;
                  &lt;span class=&#34;pzdr-x-x-90&#34;&gt;✗             &lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-3-3-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-3-3-1&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;Require SYN+ACK   &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-3-3-2&#34;&gt;
                  &lt;span class=&#34;pzdr-x-x-90&#34;&gt;✗        &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-3-3-3&#34;&gt;
                  &lt;span class=&#34;pzdr-x-x-90&#34;&gt;✗             &lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-3-4-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-3-4-1&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;TCP Reassembly        &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-3-4-2&#34;&gt;
                  &lt;span class=&#34;pzdr-x-x-90&#34;&gt;✓        &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-3-4-3&#34;&gt;
                  &lt;span class=&#34;pzdr-x-x-90&#34;&gt;✗             &lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-3-5-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-3-5-1&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;TLS Reassembly        &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-3-5-2&#34;&gt;
                  &lt;span class=&#34;pzdr-x-x-90&#34;&gt;✗        &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-3-5-3&#34;&gt;
                  &lt;span class=&#34;pzdr-x-x-90&#34;&gt;✗             &lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-3-6-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-3-6-1&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;TCP Header Length   &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-3-6-2&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;Arbitrary   &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-3-6-3&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;20 bytes Only    &lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;
            &lt;/table&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;!-- l. 1097 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;TCP handshake completeness requirements.   &lt;/span&gt;The middleboxes designers often need to make a trade-off between the complexity
        of the parsing logic and the efficiency of the traffic analysis operations. For example, due to asymmetric routing nature of the
        Internet, and the fact that Henan Firewall and the GFW are not always immediate neighbors of the client or the
        server (as shown in &lt;a href=&#39;#tbl:5-results-from-our-ttl-limited-probing-experiment&#39;&gt;Table 5&lt;/a&gt;), the middleboxes may only be able to observe flows in one direction. This nature often
        makes the middleboxes’ designers forgo requiring a complete TCP three-way handshake to track TCP connections
        and conduct censorship. On October 10, 2024, we tested the requirements of the TCP handshake completeness for
        the Henan Firewall and the GFW from our vantage point in Henan. We sent a single TCP packet whose payload
        is a TLS ClientHello message contained a forbidden domain name &lt;span class=&#39;cmtt-10&#39;&gt;011.com &lt;/span&gt;as the SNI, preceded by 1) a SYN
        packet from client, or 2) a SYN packet from the client and a SYN+ACK packet from the server, or 3) no packet at
        all.
        &lt;/p&gt;
        &lt;!-- l. 1112 --&gt;&lt;p class=&#39;indent&#39;&gt;   As summarized in &lt;a href=&#39;#tbl:3-parsing-logic-of-the-gfw-and-the-henan-firewall&#39;&gt;Table 3&lt;/a&gt;, while the GFW requires to observe a SYN packet from the client (but not a SYN+ACK packet from
        the server) to trigger the censorship &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;]&lt;/span&gt;, the Henan Firewall does not require to observe any TCP handshake packet to be
        triggered.
        &lt;/p&gt;
        &lt;!-- l. 1117 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;TCP  segmentation.   &lt;/span&gt;TCP segmentation enables the splitting of larger TCP payloads into smaller ones. In the context of
        circumvention, splitting a TLS ClientHello message into multiple TCP segments has been used to confuse stateless censors that do
        not reassemble packets. However, we confirm that the GFW performs TCP reassembly and thus, is stateful. On the other hand, we
        found that the Henan Firewall does not perform TCP reassembly and thus, it is possible to bypass it by splitting the TCP payload of
        the ClientHello into multiple TCP segments, with the SNI distributed between the segments. We tested this by initiating a TLS
        connection from our vantage point in Henan to our VPS in Guangzhou with a forbidden SNI and splitting the ClientHello into two
        segments, with the second segment containing the forbidden domain name. We observed that while a complete ClientHello message
        was blocked by the Henan Firewall, not putting a complete SNI extension in the first segment would bypass the Henan
        Firewall.
        &lt;/p&gt;
        &lt;!-- l. 1132 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;TLS fragmentation.   &lt;/span&gt;While TCP segmentation has been long known to be used to bypass stateless censors, the use of TLS
        fragmentation was only recently analyzed by Niere et al. &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Niere2023a&#39;&gt;65&lt;/a&gt;]&lt;/span&gt; and implemented in their DPYProxy tool. Before a TLS message is
        encapsulated within a TCP segment, it is first enclosed in what is known as a TLS record. Given that the maximum size of a TLS
        message exceeds the maximum allowable size for a TLS record, the TLS standard permits the division of TLS messages
        across several TLS records. Niere et al. &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Niere2023a&#39;&gt;65&lt;/a&gt;]&lt;/span&gt; found that the GFW did not perform TLS reassembly, and it is thus
        possible to bypass it by fragmenting TLS ClientHello messages over multiple TLS records, wherein the SNI is split
        into multiple TLS segments within the same TCP payload. We confirm that, as of April 4, 2024, both the Henan
        Firewall and the GFW do not perform TLS reassembly and thus, it is possible to bypass them via TLS ClientHello
        fragmentation.
        &lt;/p&gt;

        &lt;!-- l. 1183 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;TCP header length has to be 20 bytes.   &lt;/span&gt;The four most significant bits of the 13th byte of the TCP header represent the
        TCP Data Offset, which specifies the length of the TCP header in 32-bit words. The minimum value of the TCP
        Data Offset field is &lt;span class=&#39;cmr-10&#39;&gt;5 &lt;/span&gt;words (20 bytes) when no TCP options are present, and the maximum value is &lt;span class=&#39;cmr-10&#39;&gt;15 &lt;/span&gt;words
        (60 bytes).
        &lt;/p&gt;
        &lt;!-- l. 1190 --&gt;&lt;p class=&#39;indent&#39;&gt;   We found that the Henan Firewall required the TCP header length to be exactly 20 bytes to correctly parse and block the TLS
        ClientHello or HTTP request messages. We tested this by sending forbidden messages (e.g. TLS ClientHello messages with a
        forbidden SNI &lt;span class=&#39;cmtt-10&#39;&gt;011.com&lt;/span&gt;) from our vantage point in Henan to our sink server in Guangzhou on October 17, 2024, with different TCP
        options set in their TCP headers. While varying the TCP header length, we made sure that the TCP options are always a
        multiple of four bytes to comply with the 32-bit word alignment requirement of TCP header. The TCP options
        we tested include common TCP ones like Maximum Segment Size (MSS), Window Scale, Timestamps, Selective
        Acknowledgment Permitted (SAckOk), No Option (NOP), End of Option List (EOL), as well as self-defined TCP options that
        are not commonly used. We found that as long as any TCP option was set, the Henan Firewall did not block the
        connection.
        &lt;/p&gt;
        &lt;!-- l. 1211 --&gt;&lt;p class=&#39;indent&#39;&gt;   An intuitive hypothesis to explain this strange behavior is that the Henan Firewall does not parse the TCP header length field in
        the TCP header, and falsely assumes that the TCP header length is always 20 bytes. This way, when a TCP header has more than
        20 bytes due to TCP options, it will treat the TCP options as part of the TCP payload and will thus fail to recognize a complete
        TLS  ClientHello  or  an  HTTP  request  message.  However,  we  falsified  this  hypothesis  and  confirmed  the  Henan
        Firewall did parse the TCP header length field. In particular, we sent TLS ClientHello messages with a forbidden
        SNI &lt;span class=&#39;cmtt-10&#39;&gt;011.com &lt;/span&gt;with no TCP option set in its TCP header, confirming that this message was blocked by the Henan
        Firewall. If the Henan Firewall does not parse the TCP header length field in the TCP header, then regardless of
        the TCP header length value we put in the TCP header, this message should be blocked. We changed the 4-bit
        TCP header length field in the TCP header to be all &lt;span class=&#39;cmr-10&#39;&gt;2&lt;/span&gt;&lt;sup&gt;&lt;span class=&#39;cmr-7&#39;&gt;4&lt;/span&gt;&lt;/sup&gt; possible values from 0 to 15, and recomputed the correct
        TCP checksum for each TCP packet, and found that the Henan Firewall only blocked a connection when its TCP
        header length value was &lt;span class=&#39;cmr-10&#39;&gt;5 &lt;/span&gt;words (20 bytes). This experiment indicates that &lt;span class=&#39;ptmri8t-&#39;&gt;the Henan Firewall did parse the TCP
        header length field in the TCP header, but had a condition to only block a connection when its TCP header length is
        20 bytes.&lt;/span&gt;
        &lt;/p&gt;
        &lt;!-- l. 1231 --&gt;&lt;p class=&#39;indent&#39;&gt;   Although we were unable to determine the rationale behind this condition—possibly an oversight by the censor—it raises an
        important question about how much real-world traffic evaded detection due to this condition. We conducted a test on a university
        network in the United States. Specifically, we used Retina &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:wan2022retina&#39;&gt;66&lt;/a&gt;]&lt;/span&gt; to capture the TCP header length fields for all
        traffic on the campus network over a one-hour period from 3:56:14 PM to 4:56:14 PM (UTC–7) on October 31,
        2024. In total, we collected 23.1 billion TCP packets and 5.0 billion TLS packets. As shown in &lt;a href=&#39;#fig:5-header-length&#39;&gt;Figure 5&lt;/a&gt;, only
        22% of the TCP packets had a header length of 20 bytes, and only 19% of the TLS packets had a header length
        of 20 bytes. This result suggests that the Henan Firewall may only be able to censor around 20% of the targeted
        connections.
        &lt;/p&gt;
        &lt;div class=&#39;figure&#39;&gt;
            &lt;p class=&#39;noindent&#39; id=&#39;fig:5-header-length&#39;&gt;
                &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/header-length-.png&#39; /&gt;
                &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:5-header-length&#34;&gt;Figure 5&lt;/a&gt;: The  distribution  of  the  TCP  header  length  fields  of  all  TCP  and  TLS  packets  during  a  one-hour  captured  on  a
                    university network on October 31, 2024. In total, we captured approximately 23.1 billion TCP packets and 5.0 billion TLS
                    packets. Only 22% of any TCP packets have a header length of 20 bytes, while only 19% of any TLS packets have a header
                    length of 20 bytes. This evaluation result suggests that the Henan Firewall has only been able to censor around 20% of the
                    targeted connections.
            &lt;/p&gt;
        &lt;/div&gt;
        &lt;!-- l. 1255 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4.4&#34;&gt; &lt;a id=&#34;sec:4.4-how-the-henan-firewall-blocks-traffic&#34; href=&#34;#sec:4.4-how-the-henan-firewall-blocks-traffic&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;4.4.&lt;/span&gt; How the Henan Firewall Blocks Traffic&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 1258 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Does the Henan Firewall employ residual censorship?   &lt;/span&gt;Residual censorship is a mechanism used by censors in which after a
        censorship event is detected between two hosts, the censor continues to block all subsequent connections between the two hosts
        (SrcIP, DstIP, DstPort - three tuple) for a certain duration typically 90 s or 180 s. The phenomenon has been documented by
        multiple previous works, studying the GFW &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Clayton2006a&#39;&gt;6&lt;/a&gt;, &lt;a href=&#39;#cite:Rambert2021a&#39;&gt;8&lt;/a&gt;, &lt;a href=&#39;#cite:Bock2021a&#39;&gt;67&lt;/a&gt;]&lt;/span&gt;. We found that the Henan Firewall does not perform any residual
        censorship. We were able to make connections with the same three-tuple after any reset injections from the Henan
        Firewall.
        &lt;/p&gt;
        &lt;!-- l. 1277 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Fingerprinting the injection behaviors.   &lt;/span&gt;Continuing the efforts of fingerprinting the GFW’s evolving injection behaviors &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Wang2017a&#39;&gt;7&lt;/a&gt; §2.1, &lt;a href=&#39;#cite:Niere2023a&#39;&gt;65&lt;/a&gt; §3.1, &lt;a href=&#39;#cite:klzgrad2009gfw&#39;&gt;68&lt;/a&gt;, &lt;a href=&#39;#cite:gfwrev2010http&#39;&gt;69&lt;/a&gt;, &lt;a href=&#39;#cite:Weaver2009a&#39;&gt;70&lt;/a&gt; §7.1.6]&lt;/span&gt;, we fingerprint the TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packets injected by the GFW and the Henan Firewall. Using
        the &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packets collected in &lt;a href=&#39;#sec:4.5-where-are-the-censorship-devices-deployed&#39;&gt;Section 4.5&lt;/a&gt;, we analyze their packet features such as IP ID, IP TTL, TCP Flags, TCP Payload, and
        Payload Length.


        &lt;/p&gt;
        &lt;!-- l. 1287 --&gt;&lt;div class=&#34;table-container&#34; id=&#34;tbl:4-injection-behaviors-packet-fingerprints&#34;&gt;
          &lt;p class=&#34;caption&#34;&gt;
            &lt;a href=&#34;#tbl:4-injection-behaviors-packet-fingerprints&#34;&gt;TABLE 4&lt;/a&gt;: A comparison of the injection behaviors and packet fingerprints of the Henan Firewall and the three types of
            GFW TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; injectors. All injections were triggered by TLS SNI-based censorship. The IP TTLs shown are the observed
            values; their initial values should be higher. The &#39;C&#39; and &#39;S&#39; refer to the client and server.
          &lt;/p&gt;

          &lt;div class=&#34;tabular&#34;&gt;
            &lt;table class=&#34;tabular&#34; id=&#34;TBL-4&#34;&gt;
              &lt;colgroup id=&#34;TBL-4-1g&#34;&gt;
                &lt;col id=&#34;TBL-4-1&#34; /&gt;
                &lt;col id=&#34;TBL-4-2&#34; /&gt;
                &lt;col id=&#34;TBL-4-3&#34; /&gt;
                &lt;col id=&#34;TBL-4-4&#34; /&gt;
                &lt;col id=&#34;TBL-4-5&#34; /&gt;
              &lt;/colgroup&gt;

              &lt;tr id=&#34;TBL-4-1-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-4-1-1&#34;&gt;              &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-1-2&#34;&gt;&lt;span class=&#39;ptmb8t-x-x-70&#39;&gt;GFW  (I) &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-1-3&#34;&gt;&lt;span class=&#39;ptmb8t-x-x-70&#39;&gt;GFW  (II) &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-1-4&#34;&gt;&lt;span class=&#39;ptmb8t-x-x-70&#39;&gt;GFW  (III) &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-1-5&#34;&gt;&lt;span class=&#39;ptmb8t-x-x-70&#39;&gt;Henan  Firewall &lt;/span&gt;&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-4-2-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-4-2-1&#34;&gt;&lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;Observed IP TTL &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-2-2&#34;&gt; &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;55–118  &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-2-3&#34;&gt; &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;39–238   &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-2-4&#34;&gt;   &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;248       &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-2-5&#34;&gt;      &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;58            &lt;/span&gt;&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-4-3-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-4-3-1&#34;&gt;&lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;IP ID                     &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-3-2&#34;&gt;    &lt;span class=&#39;colorbox&#39; id=&#39;colorbox1&#39;&gt;&lt;span class=&#39;cmtt-8x-x-87&#39;&gt;00&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox2&#39;&gt;&lt;span class=&#39;cmtt-8x-x-87&#39;&gt;00&lt;/span&gt; &lt;/span&gt;  &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-3-3&#34;&gt;   &lt;span class=&#39;colorbox&#39; id=&#39;colorbox3&#39;&gt;&lt;span class=&#39;cmtt-8x-x-87&#39;&gt;00&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox4&#39;&gt;&lt;span class=&#39;cmtt-8x-x-87&#39;&gt;A3&lt;/span&gt; &lt;/span&gt; &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;– &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox5&#39;&gt;&lt;span class=&#39;cmtt-8x-x-87&#39;&gt;FE&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox6&#39;&gt;&lt;span class=&#39;cmtt-8x-x-87&#39;&gt;5F&lt;/span&gt; &lt;/span&gt; &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-3-4&#34;&gt;    &lt;span class=&#39;colorbox&#39; id=&#39;colorbox7&#39;&gt;&lt;span class=&#39;cmtt-8x-x-87&#39;&gt;99&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox8&#39;&gt;&lt;span class=&#39;cmtt-8x-x-87&#39;&gt;16&lt;/span&gt; &lt;/span&gt; &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;– &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox9&#39;&gt;&lt;span class=&#39;cmtt-8x-x-87&#39;&gt;99&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox10&#39;&gt;&lt;span class=&#39;cmtt-8x-x-87&#39;&gt;33&lt;/span&gt; &lt;/span&gt; &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-3-5&#34;&gt;       &lt;span class=&#39;colorbox&#39; id=&#39;colorbox11&#39;&gt;&lt;span class=&#39;cmtt-8x-x-87&#39;&gt;00&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox12&#39;&gt;&lt;span class=&#39;cmtt-8x-x-87&#39;&gt;01&lt;/span&gt; &lt;/span&gt;    &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-4-4-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-4-4-1&#34;&gt;&lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;IP Flag (DF)         &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-4-2&#34;&gt;   &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;0       &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-4-3&#34;&gt;    &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;1        &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-4-4&#34;&gt;    &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;0         &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-4-5&#34;&gt;      &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;0             &lt;/span&gt;&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-4-5-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-4-5-1&#34;&gt;&lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;TCP Payload Len &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-5-2&#34;&gt; &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;0 byte   &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-5-3&#34;&gt;  &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;0 byte    &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-5-4&#34;&gt;  &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;0 byte     &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-5-5&#34;&gt;   &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;10 bytes       &lt;/span&gt;&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-4-6-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-4-6-1&#34;&gt;&lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;TCP Payload         &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-6-2&#34;&gt;    &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;-        &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-6-3&#34;&gt;    &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;-        &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-6-4&#34;&gt;    &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;-         &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-6-5&#34;&gt;       &lt;span class=&#39;colorbox&#39; id=&#39;colorbox13&#39;&gt;&lt;span class=&#39;cmtt-8x-x-62&#39;&gt;01&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox14&#39;&gt;&lt;span class=&#39;cmtt-8x-x-62&#39;&gt;02&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox15&#39;&gt;&lt;span class=&#39;cmtt-8x-x-62&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox16&#39;&gt;&lt;span class=&#39;cmtt-8x-x-62&#39;&gt;04&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox17&#39;&gt;&lt;span class=&#39;cmtt-8x-x-62&#39;&gt;05&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox18&#39;&gt;&lt;span class=&#39;cmtt-8x-x-62&#39;&gt;06&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox19&#39;&gt;&lt;span class=&#39;cmtt-8x-x-62&#39;&gt;07&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox20&#39;&gt;&lt;span class=&#39;cmtt-8x-x-62&#39;&gt;08&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox21&#39;&gt;&lt;span class=&#39;cmtt-8x-x-62&#39;&gt;09&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox22&#39;&gt;&lt;span class=&#39;cmtt-8x-x-62&#39;&gt;00&lt;/span&gt; &lt;/span&gt;      &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-4-7-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-4-7-1&#34;&gt;&lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;TCP Flags             &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-7-2&#34;&gt;  &lt;span class=&#39;cmtt-8x-x-87&#39;&gt;RST&lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-7-3&#34;&gt; &lt;span class=&#39;cmtt-8x-x-87&#39;&gt;RST+ACK&lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-7-4&#34;&gt; &lt;span class=&#39;cmtt-8x-x-87&#39;&gt;RST+ACK&lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-7-5&#34;&gt;   &lt;span class=&#39;cmtt-8x-x-87&#39;&gt;RST+ACK&lt;/span&gt;&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-4-8-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-4-8-1&#34;&gt;&lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;Packet Counts       &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-8-2&#34;&gt;   &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;x1      &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-8-3&#34;&gt;   &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;x3       &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-8-4&#34;&gt;    &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;x1        &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-8-5&#34;&gt;      &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;x1            &lt;/span&gt;&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-4-9-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-4-9-1&#34;&gt;&lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;Targeted Hosts      &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-9-2&#34;&gt;  &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;C&amp;amp;S    &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-9-3&#34;&gt;  &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;C&amp;amp;S     &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-9-4&#34;&gt;   &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;C&amp;amp;S      &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-9-5&#34;&gt;      &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;C             &lt;/span&gt;&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-4-10-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-4-10-1&#34;&gt;&lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;Residual Duration &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-10-2&#34;&gt;  &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;180 s   &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-10-3&#34;&gt;  &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;180 s    &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-10-4&#34;&gt;  &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;180 s     &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-10-5&#34;&gt;      &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;-             &lt;/span&gt;&lt;/td&gt;
              &lt;/tr&gt;
            &lt;/table&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;!-- l. 1330 --&gt;&lt;p class=&#39;indent&#39;&gt;   &lt;a href=&#39;#tbl:4-injection-behaviors-packet-fingerprints&#39;&gt;Table 4&lt;/a&gt; compares the reset packet-injection behaviors of the Henan Firewall against three types from the GFW (I, II, III). While
        the GFW injection mechanisms target both client (C) and server (S), the Henan Firewall exclusively injects reset packets to the
        client side.
        &lt;/p&gt;
        &lt;!-- l. 1335 --&gt;&lt;p class=&#39;indent&#39;&gt;   Examining IP and TCP flags of the &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packets from firewalls, we observed that the Henan Firewall sent a single &lt;span class=&#39;cmtt-10&#39;&gt;RST+ACK&lt;/span&gt;
        packet with the IP DF (Do Not Fragment) flag unset. Among the GFW injectors, type I sends a single &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packet without &lt;span class=&#39;cmtt-10&#39;&gt;ACK&lt;/span&gt; with
        the IP DF flag unset, type II sends three duplicate and identical &lt;span class=&#39;cmtt-10&#39;&gt;RST+ACK&lt;/span&gt; with IP DF set, and type III sends a single &lt;span class=&#39;cmtt-10&#39;&gt;RST+ACK&lt;/span&gt;
        packet with IP DF unset.
        &lt;/p&gt;
        &lt;!-- l. 1341 --&gt;&lt;p class=&#39;indent&#39;&gt;   The observed IP TTL values of the TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packets by the three GFW injectors exhibited a range of values: 55–118 for type I,
        39–238 for type II, and a fixed value of 248 for type III. We observed a fixed IP TTL value of 58 for the &lt;span class=&#39;cmtt-10&#39;&gt;RST+ACK&lt;/span&gt; packets from the
        Henan Firewall. We note that these values are the IP TTL values observed by the client; the initial TTL values set by the censorship
        devices would have been higher, subsequently reduced by the number of network hops from the censorship devices to the
        client.
        &lt;/p&gt;
        &lt;!-- l. 1352 --&gt;&lt;p class=&#39;indent&#39;&gt;   Regarding IP ID values, we observed that the Type I GFW inject one &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packet with a fixed IP ID of 0x0000, the Type II
        GFW injects three &lt;span class=&#39;cmtt-10&#39;&gt;RST+ACK&lt;/span&gt; packets with a range of IP ID values from 0x00A3 to 0xFE5F (163–65119), and the Type III GFW
        injects &lt;span class=&#39;cmtt-10&#39;&gt;RST+ACK&lt;/span&gt; packets with a range of IP ID values from 0x9916 to 0x9933 (39190–39219). The Henan Firewall, on the other
        hand, had a fixed IP ID value of 0x0001 for its TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packets.
        &lt;/p&gt;
        &lt;!-- l. 1360 --&gt;&lt;p class=&#39;indent&#39;&gt;   The most distinctive fingerprint of the Henan Firewall’s &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packets is their 10-byte TCP payload pattern &lt;span class=&#39;colorbox&#39; id=&#39;colorbox23&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;01&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox24&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;02&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox25&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox26&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;04&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox27&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;05&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox28&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;06&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox29&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;07&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox30&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;08&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox31&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;09&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox32&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;, a characteristic not
        found in any of the GFW injectors. While RFC 9293 states that “TCP implementations SHOULD allow a received &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt;
        segment to include data (SHLD-2)” &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:rfc9293&#39;&gt;71&lt;/a&gt; §3.5.3]&lt;/span&gt;, it is still very rare to see a &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packet with a payload in real world.
        In &lt;a href=&#39;#sec:6-circumvention-strategies&#39;&gt;Section 6&lt;/a&gt;, we introduce a circumvention technique that leverages this distinct fingerprint to bypass the Henan
        Firewall.
        &lt;/p&gt;
        &lt;!-- l. 1391 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4.5&#34;&gt; &lt;a id=&#34;sec:4.5-where-are-the-censorship-devices-deployed&#34; href=&#34;#sec:4.5-where-are-the-censorship-devices-deployed&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;4.5.&lt;/span&gt; Where Are the Censorship Devices Deployed&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 1394 --&gt;&lt;p class=&#39;indent&#39;&gt;   To find where in the network the Henan regional firewall devices are located, we used a variant on our methodology to measure
        the network time and TTL-hop distance of the censorship devices from our Henan client.
        &lt;/p&gt;
        &lt;!-- l. 1396 --&gt;&lt;p class=&#39;indent&#39;&gt;   First, we sent ClientHello packets from our vantage point in Zhengzhou, Henan Province to our sink servers in Guangzhou and
        San Francisco independently, and measured the time difference between when we sent a ClientHello and when we received a &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt;
        for any of the connections. We utilized the top one million domains from the Tranco list performed the experiment four times in a
        day and recorded any &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packets that we received.
        &lt;/p&gt;
        &lt;!-- l. 1413 --&gt;&lt;p class=&#39;indent&#39;&gt;   &lt;a href=&#39;#fig:6-cdf-response-time&#39;&gt;Figure 6&lt;/a&gt; shows the cumulative distribution of the time difference between sending a ClientHello message and receiving the first
        TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packet by the Henan censorship devices and the GFW. The analysis is based on 36,480 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packets received from
        Henan and 16,649 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packets collected from the GFW between October 2 and December 8, 2023. Although the
        GFW can inject more than three &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packets for a blocked connection, we account only for the first &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packet
        received since it is the one that initiates the connection tear down. The graph clearly shows the difference in latencies:
        the delta timing differences indicate that Henan censorship devices were located closer to the client, whereas the
        GFW  was  situated  at  the  national  gateway.  Specifically,  the  delta  times  for  the  GFW  ranged  from  11.52 ms  to
        445.38 ms (with a mean of 17.98 ms), while those for the Henan devices ranged from 2.30 ms to 30.49 ms (with a
        mean of 2.82 ms). This evidence strongly suggests that the regional censorship in Henan is independently deployed
        and in closer proximity to our vantage points, implying that these censorship devices are located within the Henan
        province.
        &lt;/p&gt;
        &lt;div class=&#39;figure&#39;&gt;
            &lt;p class=&#39;noindent&#39; id=&#39;fig:6-cdf-response-time&#39;&gt;
                &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/cdf-response-time-.png&#39; /&gt;
                &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:6-cdf-response-time&#34;&gt;Figure 6&lt;/a&gt;: Cumulative distribution of the time difference between sending a TLS ClientHello packet containing a forbidden
                    domain name and receiving the first forged TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packet from the censorship devices.
            &lt;/p&gt;
        &lt;/div&gt;
        &lt;!-- l. 1449 --&gt;&lt;p class=&#39;indent&#39;&gt;   Second, to identify the exact network hop where censorship occurs, we used a TTL-limited probing method based on traceroute.
        Specifically, we sent TLS ClientHello packets containing a known censored domain, gradually increasing the IP
        TTL value of the probes until an injected &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packet was observed. The TTL of the probe that triggered the &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt;
        reflects the hop count to the censoring device. This approach is similar to that used in prior work such as CenTrace &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Raman2022a&#39;&gt;72&lt;/a&gt;]&lt;/span&gt;.
        &lt;/p&gt;
        &lt;div class=&#34;table-container&#34; id=&#34;tbl:5-results-from-our-ttl-limited-probing-experiment&#34;&gt;
            &lt;p class=&#34;caption&#34;&gt;
              &lt;a href=&#34;#tbl:5-results-from-our-ttl-limited-probing-experiment&#34;&gt;TABLE 5&lt;/a&gt;: Results from our TTL-limited probing experiment, showing that the Henan middleboxes are two hops closer to our client compared to the GFW. We sent TLS ClientHello probes from Zhengzhou, Henan to a sink server in San Francisco, US, triggering two distinct middleboxes at different hops.
            &lt;/p&gt;

            &lt;div class=&#34;tabular&#34;&gt;
              &lt;table class=&#34;tabular&#34; id=&#34;TBL-5&#34;&gt;
                &lt;colgroup id=&#34;TBL-5-1g&#34;&gt;
                  &lt;col id=&#34;TBL-5-1&#34; /&gt;
                  &lt;col id=&#34;TBL-5-2&#34; /&gt;
                  &lt;col id=&#34;TBL-5-3&#34; /&gt;
                  &lt;col id=&#34;TBL-5-4&#34; /&gt;
                  &lt;col id=&#34;TBL-5-5&#34; /&gt;
                  &lt;col id=&#34;TBL-5-6&#34; /&gt;
                &lt;/colgroup&gt;

                &lt;tr id=&#34;TBL-5-1-&#34;&gt;
                  &lt;td class=&#34;td01 text-nowrap text-left&#34; id=&#34;TBL-5-1-1&#34;&gt;&lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-5-1-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;Hops Away&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-5-1-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;ASN&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-left&#34; id=&#34;TBL-5-1-4&#34;&gt;
                    &lt;p class=&#34;noindent&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;ISP&lt;/span&gt;&lt;/p&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-5-2-&#34;&gt;
                  &lt;td class=&#34;td01 text-nowrap text-left&#34; id=&#34;TBL-5-2-1&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;Henan&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-5-2-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;5&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-5-2-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;4837&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-left&#34; id=&#34;TBL-5-2-4&#34;&gt;
                    &lt;p class=&#34;noindent&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;China Unicom Henan Province Network&lt;/span&gt;&lt;/p&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-5-3-&#34;&gt;
                  &lt;td class=&#34;td01 text-nowrap text-left&#34; id=&#34;TBL-5-3-1&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;GFW&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-5-3-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;7&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-5-3-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;4837&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-left&#34; id=&#34;TBL-5-3-4&#34;&gt;
                    &lt;p class=&#34;noindent&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;Backbone - China Unicom&lt;/span&gt;&lt;/p&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

              &lt;/table&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;!-- l. 1480 --&gt;&lt;p class=&#39;indent&#39;&gt;   &lt;a href=&#39;#tbl:5-results-from-our-ttl-limited-probing-experiment&#39;&gt;Table 5&lt;/a&gt; shows results from our measurements conducted in Zhengzhou, targeting a sink server in the US. We used &lt;span class=&#39;cmtt-10&#39;&gt;011.com &lt;/span&gt;to
        trigger regional censorship (Henan) and &lt;span class=&#39;cmtt-10&#39;&gt;youtube.com &lt;/span&gt;for national-level censorship (GFW). Our findings indicate that the Henan
        middlebox is located at hop 5 within China Unicom’s provincial network, while the GFW appears at hop 7, deeper in the national
        backbone network. These results confirm that both censoring entities operate as on-path middleboxes, with the Henan device
        positioned closer to the client.
        &lt;/p&gt;
        &lt;!-- l. 1497 --&gt;&lt;h2 class=&#34;sectionHead&#34; id=&#34;5&#34;&gt;&lt;a id=&#34;sec:5-understanding-the-blocklists&#34; href=&#34;#sec:5-understanding-the-blocklists&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;5.&lt;/span&gt; Understanding the Blocklists&lt;/a&gt;&lt;/h2&gt;
        &lt;!-- l. 1500 --&gt;&lt;p class=&#39;indent&#39;&gt;   We monitored and analyzed the websites blocked by the Henan Firewall and the GFW across time. We also inferred the
        underlying blocking rules employed.
        &lt;/p&gt;
        &lt;!-- l. 1503 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;5.1&#34;&gt; &lt;a id=&#34;sec:5.1-analyzing-the-blocked-domains&#34; href=&#34;#sec:5.1-analyzing-the-blocked-domains&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;5.1.&lt;/span&gt; Analyzing the Blocked Domains&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 1506 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Experiment setup.   &lt;/span&gt;Due to the challenge of obtaining high-bandwidth machines in Henan, we divide our measurements into two
        parts. First, we perform daily tests on the top one million websites from the Tranco list 5YZ7N. Second, carried out weekly, we test
        227 million domains sourced from the zone files of more than 1,000 Top-Level Domains (TLDs), obtained from the
        Centralized Zone Data Service (CZDS) of the Internet Corporation for Assigned Names and Numbers (ICANN) &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:SignInCe67:online&#39;&gt;73&lt;/a&gt;]&lt;/span&gt;.
        &lt;/p&gt;
        &lt;!-- l. 1513 --&gt;&lt;p class=&#39;indent&#39;&gt;   For our daily test of the Tranco top one million domains, we tested both TLS SNI and HTTP Host-based blocking by sending
        respective requests to servers we controlled in China. For each domain, for TLS SNI-based censorship, we sent four requests per
        day; for HTTP Host-based censorship, we sent two per day. For a given day, we mark a domain as blocked for that protocol if it
        receives a TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; in response to any of our requests.
        &lt;/p&gt;
        &lt;!-- l. 1522 --&gt;&lt;p class=&#39;indent&#39;&gt;   Due to the bandwidth constraints, for the 227 million tested weekly, we send a single TLS request per domain each week to our
        server, and mark the domain as blocked if our request receives a TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt;.
        &lt;/p&gt;
        &lt;!-- l. 1540 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Experiment timeline.   &lt;/span&gt;&lt;a href=&#39;#tbl:1-experiment-timeline-and-vantage-points&#39;&gt;Table 1&lt;/a&gt; summarizes the specific experiment timeline and vantage point usage. In particular, we failed to run
        the longitudinal experiments between March 5 and October 7, 2024. There were also minor data gaps, also reflected in &lt;a href=&#39;#fig:7-censored-domains-over-time-all&#39;&gt;Figure 7&lt;/a&gt;,
        due to unexpected disruptions of our VPSes in Guangzhou. Since we used the same machines to measure both the Henan
        Firewall and the GFW, the disruptions experienced by our sink servers in Guangzhou impacted our measurements of
        both firewalls. We thus removed these minor measurement gaps, counting towards an additional 25 days, from our
        analysis.
        &lt;/p&gt;
        &lt;div class=&#39;figure&#39;&gt;
            &lt;p class=&#39;noindent&#39; id=&#39;fig:7-censored-domains-over-time-all&#39;&gt;
                &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/censored-domains-over-time-all-.png&#39; /&gt;
                &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:7-censored-domains-over-time-all&#34;&gt;Figure 7&lt;/a&gt;: The numbers of domains blocked by the Henan Firewall and the GFW over time. We tested with a Tranco top
                    one  million  domain  list  ID  5YZ7N,  between  November 5,  2023  and  March 31,  2025,  with  a  measurement  gap  between
                    March 5 and October 7, 2024.
            &lt;/p&gt;
        &lt;/div&gt;
        &lt;!-- l. 1554 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;The  Henan  Firewall  uses  the  same  blocklist  for  HTTP  Host-based  and  TLS  SNI-based  censorship.   &lt;/span&gt;Prior work has
        shown that the GFW maintains different domain-based blocklists to censor different protocols &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Chai2019a&#39;&gt;2&lt;/a&gt; §4.1]&lt;/span&gt; &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt; §5.2]&lt;/span&gt;.
        In contrast, we find the Henan Firewall uses the same blocklist for both HTTP Host-based and TLS SNI-based
        censorship. In particular, we compare the lists of domains that were blocked by Henan’s HTTP Host-based and TLS
        SNI-based censorship on the same day (November 14, 2024). A similar number of domains is blocked in each
        protocol: 24,795 domains blocked by HTTP Host-based censorship, and 24,974 domains blocked by TLS SNI-based
        censorship. The small 1% difference between these two lists is explained by measurement noise: we repeated the
        same detection for the divergent domains twice to reduce false negatives, and found the difference between lists
        disappeared.
        &lt;/p&gt;
        &lt;!-- l. 1601 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Comparing the sizes of the blocklists over time.   &lt;/span&gt;We monitored the changes to the blocklists of the Henan Firewall and the GFW
        over time. &lt;a href=&#39;#fig:7-censored-domains-over-time-all&#39;&gt;Figure 7&lt;/a&gt; shows the total number of domains blocked by the Henan Firewall and the GFW. The Henan Firewall has a
        blocklist that remains much larger than the GFW blocklist until March 4, 2025.
        &lt;/p&gt;
        &lt;!-- l. 1617 --&gt;&lt;p class=&#39;indent&#39;&gt;   The Henan Firewall frequently added and removed generic second-level domain blocking rules (e.g. *.com.au, *.net.br, *.gov.co),
        causing dramatic changes in the number of blocked domains. For example, &lt;a href=&#39;#fig:7-censored-domains-over-time-all&#39;&gt;Figure 7&lt;/a&gt; shows a large consistent drop in the number
        of domains being blocked by the Henan Firewall, between November 10 and December 8, 2023. This drop was mostly
        due to the removal of at least 112 generic second-level domain blocking rules. In particular, the removal of the
        blocking rule *.com.au itself contributed to the unblocking of more than five thousands domains on November 22,
        2023.
        &lt;/p&gt;
        &lt;!-- l. 1668 --&gt;&lt;p class=&#39;indent&#39;&gt;   We observe that the blocklist used by the Henan Firewall also targets websites that are related to state or city governance from
        other countries. For instance, a majority of state government websites from the United States such as &lt;span class=&#39;ptmri8t-&#39;&gt;texas.gov, seattle.gov,
        alabama.gov, nc.gov &lt;/span&gt;are all blocked in Henan but not by the GFW. Compared to the 83 &lt;span class=&#39;ptmri8t-&#39;&gt;*.gov* &lt;/span&gt;domains that are seen in the GFW
        blocklist, we found 1002 &lt;span class=&#39;ptmri8t-&#39;&gt;*.gov* &lt;/span&gt;domains blocked by the Henan Firewall, showing an inclination to block anything that exhibits
        governance data or news from around the world. In fact, we noticed a trend in the Henan Firewall to target country code top-level
        domains (ccTLDs) more than the GFW as can be seen in &lt;a href=&#39;#tbl:6-top-ten-tlds-censored-by-gfw-henan-firewall&#39;&gt;Table 6&lt;/a&gt;. Some of these blocks were widespread: In 2024, Henan blocked
        all 5,334 &lt;span class=&#39;ptmri8t-&#39;&gt;*.com.au &lt;/span&gt;domains we tested on Jan 19 and Feb 1–2, all 2,075 &lt;span class=&#39;ptmri8t-&#39;&gt;*.co.za &lt;/span&gt;domains Feb 15–Mar 4, and all 1,547 &lt;span class=&#39;ptmri8t-&#39;&gt;*.org.uk&lt;/span&gt;
        domains Feb 8–Mar 4. These may be instances of overblocking, where the firewall contains an overly broad rule. It
        is  unclear  to  us  why  the  Henan  Firewall  would  repetitively  block  and  unblock  these  country  code  second  level
        domains.
        &lt;/p&gt;
        &lt;div class=&#34;table-container&#34; id=&#34;tbl:6-top-ten-tlds-censored-by-gfw-henan-firewall&#34;&gt;
            &lt;p class=&#34;caption&#34;&gt;
              &lt;a href=&#34;#tbl:6-top-ten-tlds-censored-by-gfw-henan-firewall&#34;&gt;TABLE 6&lt;/a&gt;: Top ten TLDs censored by the GFW and the Henan Firewall over a period of three months. The Henan Firewall
              blocked more country code top-level domain (ccTLDs) than the GFW.
            &lt;/p&gt;

            &lt;div class=&#34;tabular&#34;&gt;
              &lt;table class=&#34;tabular&#34; id=&#34;TBL-6&#34;&gt;
                &lt;colgroup id=&#34;TBL-6-1g&#34;&gt;
                  &lt;col id=&#34;TBL-6-1&#34; /&gt;
                  &lt;col id=&#34;TBL-6-2&#34; /&gt;
                &lt;/colgroup&gt;
                &lt;colgroup id=&#34;TBL-6-3g&#34;&gt;
                  &lt;col id=&#34;TBL-6-3&#34; /&gt;
                  &lt;col id=&#34;TBL-6-4&#34; /&gt;
                &lt;/colgroup&gt;

                &lt;tr id=&#34;TBL-6-1-&#34;&gt;
                  &lt;td class=&#34;td11 text-nowrap text-center&#34; colspan=&#34;2&#34; id=&#34;TBL-6-1-1&#34;&gt;
                    &lt;div class=&#34;multicolumn text-nowrap text-center&#34;&gt;
                      &lt;span class=&#34;ptmb8t-x-x-90&#34;&gt;GFW&lt;/span&gt;
                    &lt;/div&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-center&#34; colspan=&#34;2&#34; id=&#34;TBL-6-1-3&#34;&gt;
                    &lt;div class=&#34;multicolumn text-nowrap text-center&#34;&gt;
                      &lt;span class=&#34;ptmb8t-x-x-90&#34;&gt;Henan&lt;/span&gt;
                    &lt;/div&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-6-2-&#34;&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-2-1&#34;&gt;
                    &lt;span class=&#34;ptmb8t-x-x-90&#34;&gt;TLD&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-2-2&#34;&gt;
                    &lt;span class=&#34;ptmb8t-x-x-90&#34;&gt;Blocklist %&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-2-3&#34;&gt;
                    &lt;span class=&#34;ptmb8t-x-x-90&#34;&gt;TLD&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-2-4&#34;&gt;
                    &lt;span class=&#34;ptmb8t-x-x-90&#34;&gt;Blocklist %&lt;/span&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-6-3-&#34;&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-3-1&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.com&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-3-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;45.8%&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-3-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.com&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-3-4&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;37.4%&lt;/span&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-6-4-&#34;&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-4-1&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.org&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-4-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;6.1%&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-4-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.au&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-4-4&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;11.4%&lt;/span&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-6-5-&#34;&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-5-1&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.net&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-5-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;5.6%&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-5-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.za&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-5-4&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;4.6%&lt;/span&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-6-6-&#34;&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-6-1&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.jp&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-6-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;2.4%&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-6-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.net&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-6-4&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;4.5%&lt;/span&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-6-7-&#34;&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-7-1&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.cc&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-7-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;2.1%&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-7-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.uk&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-7-4&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;4.1%&lt;/span&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-6-8-&#34;&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-8-1&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.de&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-8-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;1.7%&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-8-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.org&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-8-4&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;4.0%&lt;/span&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-6-9-&#34;&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-9-1&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.xyz&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-9-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;1.7%&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-9-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.in&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-9-4&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;2.9%&lt;/span&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-6-10-&#34;&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-10-1&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.in&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-10-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;1.7%&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-10-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.jp&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-10-4&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;2.4%&lt;/span&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-6-11-&#34;&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-11-1&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.tw&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-11-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;1.5%&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-11-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.tw&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-11-4&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;1.1%&lt;/span&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-6-12-&#34;&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-12-1&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.io&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-12-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;1.3%&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-12-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.de&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-12-4&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;1.0%&lt;/span&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;
              &lt;/table&gt;
            &lt;/div&gt;
          &lt;/div&gt;

        &lt;!-- l. 1697 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Henan Firewall’s blocklist is more volatile than the GFW’s.&lt;/span&gt;&lt;!-- l. 1716 --&gt; As shown in &lt;a href=&#39;#fig:8-cdf-censored-duration-both&#39;&gt;Figure 8&lt;/a&gt;, the Henan Firewall has more volatile blocking policy than the GFW’s blocklist. While 75% of blocked
        domains were censored for fewer than 51 days by the Henan Firewall, more than 50% of the domains ever censored by the GFW
        were blocked during the entire measurement period (256 days). Domains blocked by the GFW had longer censorship durations
        (mean: 173.8 days; median: 256 days) compared to those blocked by the Henan Firewall (mean: 35.7 days; median: 21
        days).
        &lt;/p&gt;
        &lt;div class=&#39;figure&#39;&gt;
          &lt;p class=&#39;noindent&#39; id=&#39;fig:8-cdf-censored-duration-both&#39;&gt;
              &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/cdf-censored-duration-both-.png&#39; /&gt;
              &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:8-cdf-censored-duration-both&#34;&gt;Figure 8&lt;/a&gt;: The censorship duration of all domains (ever) blocked by the GFW and the Henan Firewall between November 5,
                2023  and  March 31,  2025,  with  a  measurement  gap  between  March 5  and  October 7,  2024.  Compared  to  the  GFW,  the
                Henan Firewall has a more volatile blocking policy, with a larger proportion of domains being blocked for a shorter duration.
          &lt;/p&gt;
        &lt;/div&gt;
        &lt;!-- l. 1723 --&gt;&lt;p class=&#39;indent&#39;&gt;   As mentioned above, this volatile blocking policy of the Henan Firewall is also mostly due to the frequent addition and removal
        of generic second-level domain blocking rules. For example, &lt;a href=&#39;#fig:7-censored-domains-over-time-all&#39;&gt;Figure 7&lt;/a&gt; shows two spikes in the number of domains blocked by the
        Henan Firewall between January 11 and January 12, 2024, as well as between February 1 and February 3, 2024. They are mostly
        due to the addition and removal of the blocking rule *.com.au. It is worth noting that even when the rule *.com.au was removed, for
        example  on  January  12  and  February  3,  2024,  the  Henan  Firewall  still  blocked  44  and  26  domains  ended  with
        .com.au, respectively. This observation suggests that the blocking rule can be finer grained than the second-level
        domain.
        &lt;/p&gt;
        &lt;!-- l. 1750 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Do the two firewalls target similar websites?   &lt;/span&gt;&lt;a href=&#39;#fig:9-cdf-ranking&#39;&gt;Figure 9&lt;/a&gt; shows the cumulative distribution of the domains blocked by the GFW
        and by the Henan regional censorship devices among the top one million Tranco domains over our measurement period of nine
        months.
        &lt;/p&gt;
        &lt;div class=&#39;figure&#39;&gt;
          &lt;p class=&#39;noindent&#39; id=&#39;fig:9-cdf-ranking&#39;&gt;
              &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/cdf-ranking-.png&#39; /&gt;
              &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:9-cdf-ranking&#34;&gt;Figure 9&lt;/a&gt;: Cumulative distribution of the domains blocked by the GFW and the Henan Firewall in the Tranco top one million
                list 5YZ7N. The data is collected between November 5, 2023 to March 31, 2025, with a measurement gap between March 5
                and October 7, 2024.
          &lt;/p&gt;
        &lt;/div&gt;
        &lt;!-- l. 1757 --&gt;&lt;p class=&#39;indent&#39;&gt;   For the GFW, we classify a domain as blocked if it was blocked at least once during our measurement period. Due to the
        volatility of the Henan Firewall’s blocklist, we categorize domains into three classes: those that were ever blocked, those blocked for
        less than 21 days, and those blocked for less than 51 days. We selected these thresholds based on our observation of average
        blocking durations for both firewalls, as shown in &lt;a href=&#39;#fig:8-cdf-censored-duration-both&#39;&gt;Figure 8&lt;/a&gt;.
        &lt;/p&gt;
        &lt;!-- l. 1764 --&gt;&lt;p class=&#39;indent&#39;&gt;   During our measurement period, we cumulatively observed 25,441 domains censored by the GFW, while 175,925 domains were
        blocked at least once by the Henan Firewall. Of the domains censored by the Henan Firewall, our analysis identified 104,100
        domains with blocking periods under 21 days, while 163,083 domains experienced blocking durations shorter than 51
        days.
        &lt;/p&gt;
        &lt;!-- l. 1769 --&gt;&lt;p class=&#39;indent&#39;&gt;   Looking at the cumulative distribution and the ranking of the domains, we found that the most popular domains were more likely
        to be blocked by both the GFW and the Henan Firewall. The Henan Firewall is more homogeneous in blocking
        domains in terms of their popularity whereas the GFW’s blocklist exhibits a more heterogeneous distribution. While
        the GFW firewall targets the more popular websites, as can be seen from the graph, the Henan Firewall targets
        the websites more uniformly. However, the sizes of the two blocklists provide a stark contrast between the two
        firewalls.
        &lt;/p&gt;
        &lt;!-- l. 1777 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Overlap  between  the  two  blocklists.   &lt;/span&gt;To understand the sizes and overlap of the two blocklists, we perform a
        long-running experiment to test 227 million domains on a weekly basis, between December 26, 2023 and March 31, 2025.
        &lt;a href=&#39;#fig:10-venn-diagram-accumulated&#39;&gt;Figure 10&lt;/a&gt; shows the accumulated blocklists of the GFW and the Henan Firewall. During the experiment, the Henan
        Firewall blocked 4,196,532 domains—more than five times the 741,542 domains ever blocked by the GFW. There
        are  479,247  domains  blocked  by  both  firewalls.  The  Jaccard  index  between  the  two  blocklists  is  approximately
        0.0885, indicating they share under 9% similarity and are therefore largely independent yet complementary in their
        coverage.
        &lt;/p&gt;
        &lt;div class=&#39;figure&#39;&gt;
          &lt;p class=&#39;noindent&#39; id=&#39;fig:10-venn-diagram-accumulated&#39;&gt;
              &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/venn-diagram-accumulated-.png&#39; /&gt;
              &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:10-venn-diagram-accumulated&#34;&gt;Figure 10&lt;/a&gt;: Venn  diagram  of  the  cumulative  domains  ever  blocked  by  the  GFW  and  the  Henan  Firewall.  We  conducted
                weekly testing of 227 million domains between December 26, 2023 and March 31, 2025 (with a measurement gap between
                March 5 and October 7, 2024). The Henan blocklist is more than five times the size of the GFW blocklist.
          &lt;/p&gt;
        &lt;/div&gt;
        &lt;!-- l. 1820 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Categorizing the blocked domains.   &lt;/span&gt;we used the &lt;span class=&#39;ptmri8t-&#39;&gt;whoisxmlapi.com&lt;/span&gt; &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:WebsiteC13:online&#39;&gt;74&lt;/a&gt;]&lt;/span&gt; website categorization service to classify the blocklists
        obtained for each firewall between November 21, 2023, and January 15, 2024. We acknowledge that not all domains could be
        categorized, as some were inactive or did not host content. &lt;a href=&#39;#tbl:7-top-categories-blocked-by-henan-and-gfw&#39;&gt;Table 7&lt;/a&gt; shows the top ten categories of censored domains for each
        firewall.
        &lt;/p&gt;
        &lt;div class=&#34;table-container&#34; id=&#34;tbl:7-top-categories-blocked-by-henan-and-gfw&#34;&gt;
          &lt;p class=&#34;caption&#34;&gt;
            &lt;a href=&#34;#tbl:7-top-categories-blocked-by-henan-and-gfw&#34;&gt;TABLE 7&lt;/a&gt;: The top categories of domains blocked by the Henan Firewall and the GFW among the top one million Tranco domains. Categories not in the top ten of each firewall are marked as “-”.
          &lt;/p&gt;

          &lt;div class=&#34;tabular&#34;&gt;
            &lt;table class=&#34;tabular&#34; id=&#34;TBL-7&#34;&gt;
              &lt;colgroup id=&#34;TBL-7-1g&#34;&gt;
                &lt;col id=&#34;TBL-7-1&#34; /&gt;
                &lt;col id=&#34;TBL-7-2&#34; /&gt;
                &lt;col id=&#34;TBL-7-3&#34; /&gt;
                &lt;col id=&#34;TBL-7-4&#34; /&gt;
                &lt;col id=&#34;TBL-7-5&#34; /&gt;
              &lt;/colgroup&gt;

              &lt;tr id=&#34;TBL-7-1-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-1-1&#34;&gt;
                  &lt;span class=&#34;ptmb8t-&#34;&gt;Category             &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; colspan=&#34;2&#34; id=&#34;TBL-7-1-2&#34;&gt;
                  &lt;div class=&#34;multicolumn text-nowrap text-center&#34;&gt;
                    &lt;span class=&#34;ptmb8t-&#34;&gt;Henan&lt;/span&gt;
                  &lt;/div&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; colspan=&#34;2&#34; id=&#34;TBL-7-1-4&#34;&gt;
                  &lt;div class=&#34;multicolumn text-nowrap text-center&#34;&gt;
                    &lt;span class=&#34;ptmb8t-&#34;&gt;GFW&lt;/span&gt;
                  &lt;/div&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-2-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-2-1&#34;&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; colspan=&#34;2&#34; id=&#34;TBL-7-2-2&#34;&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; colspan=&#34;2&#34; id=&#34;TBL-7-3-4&#34;&gt;&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-4-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-4-1&#34;&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-4-2&#34;&gt;
                  &lt;span class=&#34;ptmb8t-&#34;&gt;Count&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-4-3&#34;&gt;
                  &lt;span class=&#34;ptmb8t-&#34;&gt;Portion (%)&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-4-4&#34;&gt;
                  &lt;span class=&#34;ptmb8t-&#34;&gt;Count&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-4-5&#34;&gt;
                  &lt;span class=&#34;ptmb8t-&#34;&gt;Portion (%)&lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-5-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-5-1&#34;&gt;Business&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-5-2&#34;&gt;4861&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-5-3&#34;&gt;26.9&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-5-4&#34;&gt;1183&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-5-5&#34;&gt;15.3&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-6-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-6-1&#34;&gt;Computer&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-6-2&#34;&gt;2517&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-6-3&#34;&gt;13.9&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-6-4&#34;&gt;642&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-6-5&#34;&gt;8.3&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-7-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-7-1&#34;&gt;Pornography&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-7-2&#34;&gt;2394&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-7-3&#34;&gt;13.2&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-7-4&#34;&gt;2207&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-7-5&#34;&gt;28.6&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-8-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-8-1&#34;&gt;Gambling&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-8-2&#34;&gt;1276&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-8-3&#34;&gt;7.1&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-8-4&#34;&gt;–&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-8-5&#34;&gt;–&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-9-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-9-1&#34;&gt;Society&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-9-2&#34;&gt;1265&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-9-3&#34;&gt;7.0&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-9-4&#34;&gt;459&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-9-5&#34;&gt;5.9&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-10-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-10-1&#34;&gt;Shopping&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-10-2&#34;&gt;1261&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-10-3&#34;&gt;7.0&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-10-4&#34;&gt;288&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-10-5&#34;&gt;3.7&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-11-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-11-1&#34;&gt;Travel&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-11-2&#34;&gt;1230&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-11-3&#34;&gt;6.8&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-11-4&#34;&gt;–&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-11-5&#34;&gt;–&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-12-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-12-1&#34;&gt;Entertainment&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-12-2&#34;&gt;1134&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-12-3&#34;&gt;6.3&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-12-4&#34;&gt;548&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-12-5&#34;&gt;7.1&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-13-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-13-1&#34;&gt;Education&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-13-2&#34;&gt;1104&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-13-3&#34;&gt;6.1&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-13-4&#34;&gt;–&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-13-5&#34;&gt;–&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-14-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-14-1&#34;&gt;Uncategorized&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-14-2&#34;&gt;1057&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-14-3&#34;&gt;5.8&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-14-4&#34;&gt;395&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-14-5&#34;&gt;5.1&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-15-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-15-1&#34;&gt;News&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-15-2&#34;&gt;–&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-15-3&#34;&gt;–&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-15-4&#34;&gt;1378&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-15-5&#34;&gt;17.9&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-16-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-16-1&#34;&gt;Personal Sites&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-16-2&#34;&gt;–&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-16-3&#34;&gt;–&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-16-4&#34;&gt;313&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-16-5&#34;&gt;4.1&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-17-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-17-1&#34;&gt;Streaming Media&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-17-2&#34;&gt;–&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-17-3&#34;&gt;–&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-17-4&#34;&gt;305&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-17-5&#34;&gt;4.0&lt;/td&gt;
              &lt;/tr&gt;

            &lt;/table&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;!-- l. 1858 --&gt;&lt;p class=&#39;indent&#39;&gt;   An interesting point that we note here is that the Henan Firewall targets Business, Economy, Computer and Internet Information
        domains more than the GFW. More than 35% of the total domains appearing on the blocklist of the Henan Firewall were from these
        two categories. To find the reason behind the focus on these categories, we hypothesize that the province of Henan has been a center
        of a lot of financial controversies, with the most prominent being the mass protests in 2022 that were a result of a financial
        scandal involving local lenders &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Security88:online&#39;&gt;75&lt;/a&gt;]&lt;/span&gt;. Given the financial scandals targeting state-controlled financial institutions, it is
        very probable that the state wants to limit access to information that is relevant to the economy of the area. On
        the other side, it could be a part of the national policy to censor critics of the country’s business and economic
        policies.
        &lt;/p&gt;
        &lt;!-- l. 1871 --&gt;&lt;p class=&#39;indent&#39;&gt;   The GFW on the other hand, targets more of the news and media, as well as adult content domains. This is in line with the
        long-standing understanding of the GFW that it aims to limit more of the news, morally sensitive and politically sensitive
        content.
        &lt;/p&gt;
        &lt;!-- l. 1879 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;5.2&#34;&gt; &lt;a id=&#34;sec:5.2-identifying-the-blocking-rules&#34; href=&#34;#sec:5.2-identifying-the-blocking-rules&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;5.2.&lt;/span&gt; Identifying the Blocking Rules&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 1880 --&gt;&lt;p class=&#39;indent&#39;&gt;   Another way to view how each of the firewalls configures filter rules is to infer likely regular expressions used for blocklist
        matching. As noted by Anonymous et al. &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;22&lt;/a&gt; §6]&lt;/span&gt; and Hoang et al. &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;3&lt;/a&gt; §4.1]&lt;/span&gt; in their study of the GFW’s DNS censorship, the
        GFW blocks domains using rules that may target second-level domains, top-level domains, and/or subdomains. They developed a
        methodology to encompass the blocking rules applied by the GFW. We used a similar methodology based on the permutations listed
        in &lt;a href=&#39;#tbl:8-permutations-str-testing-henan-gfw&#39;&gt;Table 8&lt;/a&gt; to infer blocking rules for both the Henan Firewall and GFW. We note that our inferred regular expressions may not
        fully reflect the rules employed by the censor, as our permutations can miss regular expressions based on second-level domains or
        more complex regular expressions such as &lt;span class=&#39;cmtt-10&#39;&gt;*.gov* &lt;/span&gt;that we observe the Henan Firewall blocking. Nonetheless, our
        inferred rules allow us to identify structural differences in the blocklists of the Henan Firewall compared to the
        GFW.
        &lt;/p&gt;
        &lt;div class=&#34;table-container&#34; id=&#34;tbl:8-permutations-str-testing-henan-gfw&#34;&gt;
          &lt;p class=&#34;caption&#34;&gt;
            &lt;a href=&#34;#tbl:8-permutations-str-testing-henan-gfw&#34;&gt;TABLE 8&lt;/a&gt;: Permutations used to test the blocking rules of the Henan Firewall and the GFW. The placeholder &lt;span class=&#34;cmtt-10&#34;&gt;{str}&lt;/span&gt; represents strings that, alone or combined with others, should not trigger censorship. In this work, we used the string &lt;span class=&#34;cmtt-10&#34;&gt;ZZZZ&lt;/span&gt;.
          &lt;/p&gt;

          &lt;div class=&#34;tabular&#34;&gt;
            &lt;table class=&#34;tabular&#34; id=&#34;TBL-8&#34;&gt;
              &lt;colgroup id=&#34;TBL-8-1g&#34;&gt;
                &lt;col id=&#34;TBL-8-1&#34; /&gt;
                &lt;col id=&#34;TBL-8-2&#34; /&gt;
                &lt;col id=&#34;TBL-8-3&#34; /&gt;
                &lt;col id=&#34;TBL-8-4&#34; /&gt;
              &lt;/colgroup&gt;

              &lt;tr id=&#34;TBL-8-1-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-1-1&#34;&gt;
                  &lt;span class=&#34;ptmb8t-x-x-90&#34;&gt;Test&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-1-2&#34;&gt;
                  &lt;span class=&#34;ptmb8t-x-x-90&#34;&gt;Pattern&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-1-3&#34;&gt;
                  &lt;span class=&#34;ptmb8t-x-x-90&#34;&gt;Test&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-1-4&#34;&gt;
                  &lt;span class=&#34;ptmb8t-x-x-90&#34;&gt;Pattern&lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-8-2-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-2-1&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;Test 0&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-2-2&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;{str}domain{str}&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-2-3&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;Test 5&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-2-4&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;{str}domain&lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-8-3-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-3-1&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;Test 1&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-3-2&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;domain&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-3-3&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;Test 6&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-3-4&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;{str}.domain.{str}&lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-8-4-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-4-1&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;Test 2&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-4-2&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;domain.{str}&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-4-3&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;Test 7&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-4-4&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;{str}.domain{str}&lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-8-5-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-5-1&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;Test 3&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-5-2&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;domain{str}&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-5-3&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;Test 8&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-5-4&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;{str}domain.{str}&lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-8-6-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-6-1&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;Test 4&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-6-2&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;{str}.domain&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-6-3&#34;&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-6-4&#34;&gt;&lt;/td&gt;
              &lt;/tr&gt;
            &lt;/table&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;!-- l. 1922 --&gt;&lt;p class=&#39;indent&#39;&gt;   As shown in &lt;a href=&#39;#tbl:8-permutations-str-testing-henan-gfw&#39;&gt;Table 8&lt;/a&gt;, we generated nine permutations for each censored domain identified in our daily measurement experiment
        (&lt;a href=&#39;#sec:5-understanding-the-blocklists&#39;&gt;Section 5&lt;/a&gt;), by prepending and/or appending a fixed string to the domain name. This methodology was used by Anonymous et al. &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;22&lt;/a&gt; §6]&lt;/span&gt; in 2014 and Hoang et al. &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;3&lt;/a&gt; §4.1]&lt;/span&gt; in 2021. We chose the pattern string &lt;span class=&#39;cmtt-10&#39;&gt;ZZZZ &lt;/span&gt;to construct each permutation
        in this work. We then sent ClientHellos with SNI containing each permutation independently to our sink servers
        and recorded the results for each testing. This experiment was conducted four times daily during our measurement
        period.
        &lt;/p&gt;
        &lt;!-- l. 2016 --&gt;&lt;p class=&#39;indent&#39;&gt;   As shown in &lt;a href=&#39;#tbl:9-inferred-regex-patterns&#39;&gt;Table 9&lt;/a&gt;, the most popular blocking regex pattern used by both the Henan Firewall and the GFW was
        &lt;span class=&#39;obeylines-h&#39;&gt;&lt;code class=&#39;verb&#39;&gt;^(.*\.)?keyword$&lt;/code&gt;&lt;/span&gt;. This pattern meant to be used to block a domain and its subdomains. The second most popular blocking
        regex pattern used by the GFW was &lt;span class=&#39;obeylines-h&#39;&gt;&lt;code class=&#39;verb&#39;&gt;^keyword$&lt;/code&gt;&lt;/span&gt;, which was used to only block the domain name itself, not its
        subdomains. The third most popular blocking regex pattern used by the GFW was &lt;span class=&#39;obeylines-h&#39;&gt;&lt;code class=&#39;verb&#39;&gt;^(.*\.)?keyword&lt;/code&gt;&lt;/span&gt;, which was
        likely to be a mistake of not including the end anchor in the regex pattern. Interestingly, unlike the GFW, which
        sometimes employs regex patterns without end anchors, the Henan Firewall always includes end anchors in its regex
        patterns.  This  result  could  be  because  of  a  more  carefully  and  consistently  maintained  blocklist,  or  perhaps  the
        censorship implementation itself enforces the use of end-anchored regex patterns to prevent potential mistakes made by
        human.
        &lt;/p&gt;
        &lt;div class=&#34;table-container&#34; id=&#34;tbl:9-inferred-regex-patterns&#34;&gt;
          &lt;p class=&#34;caption&#34;&gt;
            &lt;a href=&#34;#tbl:9-inferred-regex-patterns&#34;&gt;TABLE 9&lt;/a&gt;: We infer the regex equivalents of blocking rules employed by the GFW and the Henan Firewall. In total, the GFW and the Henan Firewall employ 24 and 5 unique regex patterns, respectively. The table only shows the regex patterns that have more than ten occurrences for the GFW.
          &lt;/p&gt;

          &lt;div class=&#34;tabular&#34;&gt;
            &lt;table class=&#34;tabular&#34; id=&#34;TBL-9&#34;&gt;
              &lt;colgroup id=&#34;TBL-9-1g&#34;&gt;
                &lt;col id=&#34;TBL-9-1&#34; /&gt;
                &lt;col id=&#34;TBL-9-2&#34; /&gt;
                &lt;col id=&#34;TBL-9-3&#34; /&gt;
                &lt;col id=&#34;TBL-9-4&#34; /&gt;
                &lt;col id=&#34;TBL-9-5&#34; /&gt;
                &lt;col id=&#34;TBL-9-6&#34; /&gt;
              &lt;/colgroup&gt;

              &lt;tr id=&#34;TBL-9-1-&#34;&gt;
                &lt;td class=&#34;td01 text-nowrap text-left&#34; id=&#34;TBL-9-1-1&#34;&gt;
                  &lt;span class=&#34;ptmb8t-&#34;&gt;Inferred Regex        &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-9-1-2&#34;&gt;
                  &lt;span class=&#34;ptmb8t-&#34;&gt;Tests Hit   &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11&#34; colspan=&#34;4&#34; id=&#34;TBL-9-1-3&#34;&gt;
                  &lt;div class=&#34;text-center&#34;&gt;
                    &lt;span class=&#34;ptmb8t-&#34;&gt;Rule Count (Portion)&lt;/span&gt;
                  &lt;/div&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-9-2-&#34;&gt;
                &lt;td class=&#34;td01&#34; colspan=&#34;2&#34; id=&#34;TBL-9-2-1&#34;&gt;&lt;/td&gt;
                &lt;td class=&#34;td11&#34; colspan=&#34;3&#34; id=&#34;TBL-9-2-3&#34;&gt;
                  &lt;span class=&#34;cmidrule&#34;&gt;&lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-9-3-&#34;&gt;
                &lt;td class=&#34;td01 text-nowrap text-left&#34; id=&#34;TBL-9-3-1&#34;&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-9-3-2&#34;&gt;&lt;/td&gt;
                &lt;td class=&#34;td11&#34; colspan=&#34;2&#34; id=&#34;TBL-9-3-3&#34;&gt;
                  &lt;div class=&#34;text-center&#34;&gt;
                    &lt;span class=&#34;ptmb8t-&#34;&gt;GFW&lt;/span&gt;
                  &lt;/div&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11&#34; colspan=&#34;2&#34; id=&#34;TBL-9-3-5&#34;&gt;
                  &lt;div class=&#34;text-center&#34;&gt;
                    &lt;span class=&#34;ptmb8t-&#34;&gt;Henan&lt;/span&gt;
                  &lt;/div&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-9-4-&#34;&gt;
                &lt;td class=&#34;td01 text-nowrap text-left&#34; id=&#34;TBL-9-4-1&#34;&gt;
                  &lt;span class=&#34;obeylines-h&#34;&gt;&lt;code class=&#34;verb&#34;&gt;^(.*\.)?keyword$&lt;/code&gt;&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-9-4-2&#34;&gt;1&amp;amp;4&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-4-3&#34;&gt;163,355&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-4-4&#34;&gt;85%&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-4-5&#34;&gt;248,770&lt;/td&gt;
                &lt;td class=&#34;td10 text-nowrap text-right&#34; id=&#34;TBL-9-4-6&#34;&gt;64%&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-9-5-&#34;&gt;
                &lt;td class=&#34;td01 text-nowrap text-left&#34; id=&#34;TBL-9-5-1&#34;&gt;
                  &lt;span class=&#34;obeylines-h&#34;&gt;&lt;code class=&#34;verb&#34;&gt;^keyword$&lt;/code&gt;&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-9-5-2&#34;&gt;1&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-5-3&#34;&gt;17,764&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-5-4&#34;&gt;9.3%&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-5-5&#34;&gt;3&lt;/td&gt;
                &lt;td class=&#34;td10 text-nowrap text-right&#34; id=&#34;TBL-9-5-6&#34;&gt;0.0%&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-9-6-&#34;&gt;
                &lt;td class=&#34;td01 text-nowrap text-left&#34; id=&#34;TBL-9-6-1&#34;&gt;
                  &lt;span class=&#34;obeylines-h&#34;&gt;&lt;code class=&#34;verb&#34;&gt;^(.*\.)?keyword&lt;/code&gt;&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-9-6-2&#34;&gt;1–4&amp;amp;6&amp;amp;7&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-6-3&#34;&gt;7,272&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-6-4&#34;&gt;3.8%&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-6-5&#34;&gt;–&lt;/td&gt;
                &lt;td class=&#34;td10 text-nowrap text-right&#34; id=&#34;TBL-9-6-6&#34;&gt;–&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-9-7-&#34;&gt;
                &lt;td class=&#34;td01 text-nowrap text-left&#34; id=&#34;TBL-9-7-1&#34;&gt;
                  &lt;span class=&#34;obeylines-h&#34;&gt;&lt;code class=&#34;verb&#34;&gt;keyword$&lt;/code&gt;&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-9-7-2&#34;&gt;1&amp;amp;4&amp;amp;5&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-7-3&#34;&gt;2,483&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-7-4&#34;&gt;1.3%&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-7-5&#34;&gt;139,575&lt;/td&gt;
                &lt;td class=&#34;td10 text-nowrap text-right&#34; id=&#34;TBL-9-7-6&#34;&gt;36%&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-9-8-&#34;&gt;
                &lt;td class=&#34;td01 text-nowrap text-left&#34; id=&#34;TBL-9-8-1&#34;&gt;
                  &lt;span class=&#34;obeylines-h&#34;&gt;&lt;code class=&#34;verb&#34;&gt;keyword&lt;/code&gt;&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-9-8-2&#34;&gt;0–8&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-8-3&#34;&gt;647&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-8-4&#34;&gt;0.3%&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-8-5&#34;&gt;–&lt;/td&gt;
                &lt;td class=&#34;td10 text-nowrap text-right&#34; id=&#34;TBL-9-8-6&#34;&gt;–&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-9-9-&#34;&gt;
                &lt;td class=&#34;td01 text-nowrap text-left&#34; id=&#34;TBL-9-9-1&#34;&gt;
                  &lt;span class=&#34;obeylines-h&#34;&gt;&lt;code class=&#34;verb&#34;&gt;\.keyword$&lt;/code&gt;&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-9-9-2&#34;&gt;4&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-9-3&#34;&gt;429&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-9-4&#34;&gt;0.2%&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-9-5&#34;&gt;4&lt;/td&gt;
                &lt;td class=&#34;td10 text-nowrap text-right&#34; id=&#34;TBL-9-9-6&#34;&gt;0.0%&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-9-10-&#34;&gt;
                &lt;td class=&#34;td01 text-nowrap text-left&#34; id=&#34;TBL-9-10-1&#34;&gt;
                  &lt;span class=&#34;obeylines-h&#34;&gt;&lt;code class=&#34;verb&#34;&gt;^keyword&lt;/code&gt;&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-9-10-2&#34;&gt;1&amp;amp;2&amp;amp;3&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-10-3&#34;&gt;36&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-10-4&#34;&gt;0.0%&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-10-5&#34;&gt;–&lt;/td&gt;
                &lt;td class=&#34;td10 text-nowrap text-right&#34; id=&#34;TBL-9-10-6&#34;&gt;–&lt;/td&gt;
              &lt;/tr&gt;
            &lt;/table&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;!-- l. 2103 --&gt;&lt;h2 class=&#34;sectionHead&#34; id=&#34;6&#34;&gt;&lt;a id=&#34;sec:6-circumvention-strategies&#34; href=&#34;#sec:6-circumvention-strategies&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;6.&lt;/span&gt; Circumvention Strategies&lt;/a&gt;&lt;/h2&gt;
        &lt;!-- l. 2106 --&gt;&lt;p class=&#39;indent&#39;&gt;   Based on the parsing logic flaws we identified in &lt;a href=&#39;#sec:4.3-how-the-henan-firewall-parses-connections&#39;&gt;Section 4.3&lt;/a&gt;, as well as the injection behaviors and fingerprints we observed
        in &lt;a href=&#39;#sec:4.4-how-the-henan-firewall-blocks-traffic&#39;&gt;Section 4.4&lt;/a&gt;, we introduce simple but effective strategies to bypass the Henan Firewall. All strategies require only changes from
        the client-side, without cooperation from the server side, making them easy to employ and adopt. These strategies have already been
        implemented in various popular circumvention tools, including but not limited to Xray &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Xray&#39;&gt;76&lt;/a&gt;]&lt;/span&gt;, GoodbyeDPI &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:GoodbyeDPI&#39;&gt;77&lt;/a&gt;]&lt;/span&gt;, and
        Shadowrocket &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:shadowrocket&#39;&gt;78&lt;/a&gt;]&lt;/span&gt;.
        &lt;/p&gt;
        &lt;!-- l. 2118 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Enable any TCP option field.   &lt;/span&gt;As detailed in &lt;a href=&#39;#sec:4.3-how-the-henan-firewall-parses-connections&#39;&gt;Section 4.3&lt;/a&gt;, the Henan Firewall can only parse and block TCP packets with a
        20-byte header. Enabling any TCP option on an operating system will result in a TCP header longer than 20 bytes. While this
        circumvention  solution  relies  on  the  unusual  implementations  of  the  Henan  Firewall,  it  is  nonetheless  a  feature
        that users or circumvention tools could easily employ to evade censorship. For instance, enabling TCP Timestamps
        (disabled by default on some versions of Windows) would prevent the Henan Firewall from blocking connections &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:net4people442&#39;&gt;56&lt;/a&gt;, &lt;a href=&#39;#cite:tsinbei_tcp_timestamps&#39;&gt;59&lt;/a&gt;]&lt;/span&gt;.
        &lt;/p&gt;
        &lt;!-- l. 2149 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Discard TCP &lt;/span&gt;&lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; &lt;span class=&#39;ptmb8t-&#39;&gt;packets with specific payload.   &lt;/span&gt;As shown in &lt;a href=&#39;#sec:4.4-how-the-henan-firewall-blocks-traffic&#39;&gt;Section 4.4&lt;/a&gt;, the Henan Firewall injects a TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packet with an
        unusual 10-byte payload &lt;span class=&#39;colorbox&#39; id=&#39;colorbox33&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;01&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox34&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;02&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox35&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox36&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;04&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox37&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;05&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox38&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;06&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox39&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;07&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox40&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;08&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox41&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;09&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox42&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;. Its uniqueness allows the client drop only the &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packets injected by the Henan Firewall, while keeping
        the &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packets sent by the server. Typically, dropping TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packets sent to the client is not enough to evade TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt;
        censorship by the GFW, as the GFW also injects &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packets to the server. However, as explained in &lt;a href=&#39;#sec:4.4-how-the-henan-firewall-blocks-traffic&#39;&gt;Section 4.4&lt;/a&gt;, the Henan
        Firewall only injects &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packets to the client, and thus dropping the &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; packets sent to the client is sufficient to evade censorship.
        This circumvention strategy can be easily applied via &lt;span class=&#39;cmtt-10&#39;&gt;iptables &lt;/span&gt;rules, similar to the ones introduced by Clayton et al. &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Clayton2006a&#39;&gt;6&lt;/a&gt; §5]&lt;/span&gt;.
        &lt;/p&gt;
        &lt;!-- l. 2169 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Segment or fragment TLS ClientHello into multiple packets.   &lt;/span&gt;As explained in &lt;a href=&#39;#sec:4.3-how-the-henan-firewall-parses-connections&#39;&gt;Section 4.3&lt;/a&gt;, the Henan Firewall does not perform
        TCP reassembly, and neither the Henan Firewall nor the GFW performs TLS reassembly &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Niere2023a&#39;&gt;65&lt;/a&gt;]&lt;/span&gt;. Thus, clients can segment TCP
        packets or fragment TLS ClientHello messages over multiple TLS records to evade the Henan firewall &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Niere2023a&#39;&gt;65&lt;/a&gt;]&lt;/span&gt;. As long as the TCP
        packets carrying the beginning part of ClientHello messages does not contain a complete SNI extension, one can bypass the Henan
        Firewall. Performing this fragmentation may require TLS libraries such as uTLS &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Frolov2019a&#39;&gt;79&lt;/a&gt;]&lt;/span&gt; that provide fine-grained control over the
        messages sent, or purposely built circumvention tools like DPYProxy &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:GoodbyeDPI&#39;&gt;77&lt;/a&gt;]&lt;/span&gt; that can fragment records made by a browser. Popular
        circumvention tools such as Xray &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Xray&#39;&gt;76&lt;/a&gt;]&lt;/span&gt; and Shadowrocket &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:shadowrocket&#39;&gt;78&lt;/a&gt;]&lt;/span&gt; have also implemented this TCP segmentation strategy &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:xraypullrrequest&#39;&gt;80&lt;/a&gt;]&lt;/span&gt;.
        &lt;/p&gt;
        &lt;!-- l. 2206 --&gt;&lt;h2 class=&#34;sectionHead&#34; id=&#34;7&#34;&gt;&lt;a id=&#34;sec:7-ethics&#34; href=&#34;#sec:7-ethics&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;7.&lt;/span&gt; Ethics&lt;/a&gt;&lt;/h2&gt;
        &lt;!-- l. 2209 --&gt;&lt;p class=&#39;indent&#39;&gt;   Censorship measurement studies, especially in authoritarian regimes, require careful ethical considerations and continuous
        evaluation of the potential risks involved throughout the entire research process. In this work, we conducted all of our censorship
        measurements from machines we controlled, with network traffic generated automatically by our programs. This approach is a
        common practice in censorship measurement studies to mitigate the risk of overwhelming other hosts on the Internet and imposing
        any risks on users &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;3&lt;/a&gt;, &lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;4&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;, &lt;a href=&#39;#cite:Alice2020a&#39;&gt;14&lt;/a&gt;, &lt;a href=&#39;#cite:Wu2023a&#39;&gt;15&lt;/a&gt;]&lt;/span&gt;. When analyzing the real-world traffic on the university network tap, we only collected the
        TCP header length fields of the packets without capturing any human identifiable or sensitive information. Since IRB approval is
        thus not applicable for this study (as it does not involve human subjects), we followed the ethical guidelines outlined in the
        Menlo Report &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:menlo-report&#39;&gt;81&lt;/a&gt;]&lt;/span&gt;. Our research team also consulted experts with a deep understanding of Chinese censorship
        and its legal concerns. Below, we discuss the potential risks we identified and the steps we took to mitigate them &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:menlo-report&#39;&gt;81&lt;/a&gt; §C.3.2]&lt;/span&gt;.
        &lt;/p&gt;
        &lt;!-- l. 2234 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Traffic analysis.   &lt;/span&gt;To evaluate the effectiveness of the Henan Firewall, we measured the TCP header length fields of all TCP packets
        on the university network tap. The use of this network tap was approved by the university’s privacy and security office. We also
        worked closely with the campus networking and security teams who have experience managing similar projects. This approval and
        collaboration ensured that we followed standard security procedures, complied with network use policy, respected user privacy, and
        minimized the network’s attack surface. Additionally, we designed the tap to only receive a copy of traffic, ensuring no impact on
        network users in case of system failure.
        &lt;/p&gt;
        &lt;!-- l. 2248 --&gt;&lt;p class=&#39;indent&#39;&gt;   We designed our experiment to avoid collecting any potentially sensitive information, such as IP addresses, which could be
        linked to individuals. Specifically, we only collected the 4-bit Data Offset fields from all TCP headers in an aggregated manner. We
        never inspected or logged any raw traffic data. We practiced the principle of least privilege by restricting access to the network tap
        to a limited, authorized subset of our team.
        &lt;/p&gt;
        &lt;!-- l. 2259 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Vantage points.   &lt;/span&gt;Obtaining vantage points within censored areas has become increasingly challenging. However, two key research
        questions we aim to answer require diverse vantage point coverage in China: 1) Is the Henan Firewall also deployed in other
        provinces in China? 2) Do other provinces deploy their regional censorship apparatus as well? We took extra care
        to find the right balance between finding as diverse vantage points as possible and the potential risks it carries &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:menlo-report&#39;&gt;81&lt;/a&gt; §C.3.2]&lt;/span&gt;. For example, while using residential vantage points would have allowed us to observe censorship in
        China from more network locations, we decided not to use them due to the potential risks to the uninformed users &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Mi2019-resident-evil&#39;&gt;61&lt;/a&gt;]&lt;/span&gt;.
        &lt;/p&gt;
        &lt;!-- l. 2276 --&gt;&lt;p class=&#39;indent&#39;&gt;   We also explored the possibility of measuring the Henan Firewall remotely from outside the province or China, which will
        further reduce the risks of initiating connections from within the region; however, as introduce in &lt;a href=&#39;#sec:4.2-what-traffic-is-targeted&#39;&gt;Section 4.2&lt;/a&gt;, the Henan Firewall
        could not be triggered that way.
        &lt;/p&gt;
        &lt;!-- l. 2281 --&gt;&lt;p class=&#39;indent&#39;&gt;   We thus, following the rationale and common practices outlined in prior work &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Alice2020a&#39;&gt;14&lt;/a&gt;, &lt;a href=&#39;#cite:Wu2023a&#39;&gt;15&lt;/a&gt;]&lt;/span&gt;, strategically selected vantage points
        provided by large commercial cloud providers to mitigate potential legal risks for individuals. We registered our VPS
        accounts with the accurate identity and contact information of one of our researchers who is neither a citizen nor a
        resident of China. Throughout our research, we received no complaints from the providers. To avoid the possibility
        of getting other cloud users’ resources blocked by the censor, we assigned dedicated IP addresses to each of our
        machines.
        &lt;/p&gt;
        &lt;!-- l. 2293 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Probing  rate  and  design.   &lt;/span&gt;To avoid overwhelming our vantage points and the network paths our probes traversed, we
        restricted the transmission speed directed to our sink servers. For experiments in &lt;a href=&#39;#sec:3-detecting-regional-censorship&#39;&gt;Section 3&lt;/a&gt; and &lt;a href=&#39;#sec:4-characterizing-the-censorship-devices&#39;&gt;Section 4&lt;/a&gt;, we
        limited the probing rate to no more than one connection per second; for experiments in &lt;a href=&#39;#sec:5-understanding-the-blocklists&#39;&gt;Section 5&lt;/a&gt;, we set a hard
        limit on each client to send no more than 1 Mbps of traffic.  While the risks and potential harms of our probes
        being logged by the censor is minimal, we also designed our experiments with plausible deniability in mind. That
        is, since our sink servers never replied with any ServerHello messages or HTTP responses, and no full TLS or
        HTTP connections were ever established, our measurement behaviors do not resemble users accessing censored
        websites.
        &lt;/p&gt;
        &lt;!-- l. 2357 --&gt;&lt;h2 class=&#34;sectionHead&#34; id=&#34;8&#34;&gt;&lt;a id=&#34;sec:8-conclusion&#34; href=&#34;#sec:8-conclusion&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;8.&lt;/span&gt; Conclusion&lt;/a&gt;&lt;/h2&gt;
        &lt;!-- l. 2373 --&gt;&lt;p class=&#39;indent&#39;&gt;   In this paper, we expose and document an alarming sign in China’s Internet censorship strategy: our measurements from seven
        different cities and provinces in China reveal a new regional firewall in Henan province. This Henan Firewall conducts HTTP
        Host-based and TLS SNI-based censorship for traffic going out of the province. It exhibits distinct characteristics compared to the
        GFW, including unique packet injection behaviors and fingerprints, different logic in tracking, parsing, and blocking connections, a
        once ten-times larger and more dynamic blocklist, and closer network location to the client. This localized censorship suggests a
        departure from China’s centralized censorship apparatus, enabling local authorities to exert a greater degree of control within their
        respective regions. We propose simple but effective circumvention techniques to get around this emerging system in Henan,
        which have been implemented in various popular circumvention tools. We hope our study sounds the alarm to the
        broader censorship research community to be aware of and further study emerging regional censorship in China, and
        elsewhere.
        &lt;/p&gt;
        &lt;!-- l. 2411 --&gt;&lt;h2 class=&#34;sectionHead&#34; id=&#34;availability&#34;&gt;
            &lt;a id=&#34;sec:availability&#34; href=&#34;#sec:availability&#34;&gt;
                Availability&lt;/a&gt;
        &lt;/h2&gt;
        &lt;!-- l. 2412 --&gt;&lt;p class=&#39;indent&#39;&gt;   To encourage future research and promote transparency and reproducibility, we have made the code, anonymized data, and
        constantly updated blocklists available. For improved accessibility, this paper is also available in HTML format in both English and
        Chinese. The project homepage is at: &lt;a class=&#39;url&#39; href=&#39;https://gfw.report/publications/sp25/en&#39;&gt;https://gfw.report/publications/sp25/en&lt;/a&gt;.
        &lt;/p&gt;
        &lt;!-- l. 2420 --&gt;&lt;h2 class=&#34;sectionHead&#34; id=&#34;acknowledgments&#34;&gt;
            &lt;a id=&#34;sec:acknowledgments&#34; href=&#34;#sec:acknowledgments&#34;&gt;
                Acknowledgments&lt;/a&gt;
        &lt;/h2&gt;
        &lt;!-- l. 2421 --&gt;&lt;p class=&#39;indent&#39;&gt;   We thank our shepherd and other anonymous reviewers for their valuable comments and feedback. We also thank the brave users
        in China for immediately reporting and actively studying the blocking incidents, including, but not limited to, 5e2t, Hsukqi,
        ThEWiZaRd0fBsoD, louiesun, and lemon99ee. We are grateful to ValdikSS, radioactiveAHM, RPRX, Fangliding, GFW-knocker,
        sambali9, rrouzbeh, nekohasekai, znlihk, the V2Ray developers, the Hysteria developers, the Shadowrocket developers, and many
        other developers for their helpful discussions and/or for integrating TCP segmentation and/or TLS fragmentation
        features into their respective circumvention tools. We also thank Jackson Sippe, Jade Sheffey, Paul Flammarion, the
        Stanford Empirical Security Research Group, the Stanford University security and networking teams, and many others
        who prefer to remain anonymous for their helpful discussions and support. We thank Net4People BBS, NTC Party
        forum, Xray community, V2Ray community, and sing-box community for providing online space for censorship
        discussions. We are grateful to David Fifield for providing feedback, support, and guidance throughout the entire
        project.
        &lt;/p&gt;
        &lt;!-- l. 2465 --&gt;&lt;p class=&#39;indent&#39;&gt;   The work was supported in part by the National Science Foundation (NSF) under grant numbers CNS-2145783, CNS-2319080,
        and CNS-2333965, by a Sloan Research Fellowship, and by the Young Faculty Award program of the Defense Advanced Research
        Projects Agency (DARPA) under the grant DARPA-RA-21-03-09-YFA9-FP-003. The views, opinions, and/or findings expressed are
        those of the authors and should not be interpreted as representing the official views or policies of the Department of Defense or the
        U.S. Government.
        &lt;/p&gt;
        &lt;!-- l. 2 --&gt;&lt;h2 class=&#34;sectionHead&#34; id=&#34;references&#34;&gt;
            &lt;a id=&#34;sec:references&#34; href=&#34;#sec:references&#34;&gt;References&lt;/a&gt;
        &lt;/h2&gt;
        &lt;div class=&#34;bibliography&#34;&gt;
            &lt;ol class=&#34;citation-numbering&#34;&gt;
                &lt;!-- 1 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Duan2012a&#34;&gt;&lt;/a&gt; H. Duan, N. Weaver, Z. Zhao, M. Hu, J. Liang, J. Jiang, K. Li, and V. Paxson, “Hold-On: Protecting against on-path DNS poisoning,” in Securing and Trusting Internet Names. National Physical Laboratory, 2012. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.icir.org/vern/papers/hold-on.satin12.pdf&#34;&gt;https://www.icir.org/vern/papers/hold-on.satin12.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 2 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Chai2019a&#34;&gt;&lt;/a&gt; Z. Chai, A. Ghafari, and A. Houmansadr, “On the importance of encrypted-SNI (ESNI) to censorship circumvention,” in Free and Open Communications on the Internet. USENIX, 2019. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/foci19-paper_chai_update.pdf&#34;&gt;https://www.usenix.org/system/files/foci19-paper_chai_update.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 3 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Hoang2021a&#34;&gt;&lt;/a&gt; N. P. Hoang, A. A. Niaki, J. Dalek, J. Knockel, P. Lin, B. Marczak, M. Crete-Nishihata, P. Gill, and M. Polychronakis, “How great is the Great Firewall? Measuring China’s DNS censorship,” in USENIX Security Symposium. USENIX, 2021. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/sec21-hoang.pdf&#34;&gt;https://www.usenix.org/system/files/sec21-hoang.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 4 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Anonymous2020a&#34;&gt;&lt;/a&gt; Anonymous, A. A. Niaki, N. P. Hoang, P. Gill, and A. Houmansadr, “Triplet censors: Demystifying Great Firewall’s DNS censorship behavior,” in Free and Open Communications on the Internet. USENIX, 2020. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/foci20-paper-anonymous_0.pdf&#34;&gt;https://www.usenix.org/system/files/foci20-paper-anonymous_0.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 5 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Fan2025a&#34;&gt;&lt;/a&gt; S. Fan, J. Sippe, S. San, J. Sheffey, D. Fifield, A. Houmansadr, E. Wedwards, and E. Wustrow, “Wallbleed: A memory disclosure vulnerability in the Great Firewall of China,” in Network and Distributed System Security. The Internet Society, 2025. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://gfw.report/publications/ndss25/data/paper/wallbleed.pdf&#34;&gt;https://gfw.report/publications/ndss25/data/paper/wallbleed.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 6 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Clayton2006a&#34;&gt;&lt;/a&gt; R. Clayton, S. J. Murdoch, and R. N. M. Watson, “Ignoring the Great Firewall of China,” in Privacy Enhancing Technologies. Springer, 2006, pp. 20–35. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.cl.cam.ac.uk/~rnc1/ignoring.pdf&#34;&gt;https://www.cl.cam.ac.uk/~rnc1/ignoring.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 7 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Wang2017a&#34;&gt;&lt;/a&gt; Z. Wang, Y. Cao, Z. Qian, C. Song, and S. V. Krishnamurthy, “Your state is not mine: A closer look at evading stateful Internet censorship,” in Internet Measurement Conference. ACM, 2017. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.cs.ucr.edu/~krish/imc17.pdf&#34;&gt;https://www.cs.ucr.edu/~krish/imc17.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 8 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Rambert2021a&#34;&gt;&lt;/a&gt; R. Rambert, Z. Weinberg, D. Barradas, and N. Christin, “Chinese wall or Swiss cheese? keyword filtering in the Great Firewall of China,” in WWW. ACM, 2021. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://censorbib.nymity.ch/pdf/Rambert2021a.pdf&#34;&gt;https://censorbib.nymity.ch/pdf/Rambert2021a.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 9 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Hoang2024a&#34;&gt;&lt;/a&gt; N. P. Hoang, J. Dalek, M. Crete-Nishihata, N. Christin, V. Yegneswaran, M. Polychronakis, and N. Feamster, “GFWeb: Measuring the Great Firewall’s Web censorship at scale,” in USENIX Security Symposium. USENIX, 2024. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/sec24fall-prepub-310-hoang.pdf&#34;&gt;https://www.usenix.org/system/files/sec24fall-prepub-310-hoang.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 10 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Bock2020ESNI&#34;&gt;&lt;/a&gt; K. Bock, iyouport, Anonymous, L.-H. Merino, D. Fifield, A. Houmansadr, and D. Levin. (2020, Aug.) Exposing and circumventing China’s censorship of ESNI. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/43#issuecomment-673322409&#34;&gt;https://github.com/net4people/bbs/issues/43#issuecomment-673322409&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 11 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Bock2021c&#34;&gt;&lt;/a&gt; K. Bock,  G. Naval,  K. Reese,  and  D. Levin,  “Even  censors  have  a  backup:  Examining  China’s  double  HTTPS  censorship  middleboxes,”  in  Free and Open Communications on the Internet.    ACM,  2021.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://doi.org/10.1145/3473604.3474559&#34;&gt;https://doi.org/10.1145/3473604.3474559&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 12 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Ensafi2015b&#34;&gt;&lt;/a&gt; R. Ensafi,  D. Fifield,  P. Winter,  N. Feamster,  N. Weaver,  and  V. Paxson,  “Examining how the Great Firewall discovers hidden circumvention servers,”  in  Internet Measurement Conference.    ACM,  2015.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://conferences2.sigcomm.org/imc/2015/papers/p445.pdf&#34;&gt;https://conferences2.sigcomm.org/imc/2015/papers/p445.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 13 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Dunna2018a&#34;&gt;&lt;/a&gt; A. Dunna,  C. O’Brien,  and  P. Gill,  “Analyzing  China’s  blocking  of  unpublished  Tor  bridges,”  in  Free  and  Open  Communications  on  the Internet.    USENIX,  2018.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci18/foci18-paper-dunna.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci18/foci18-paper-dunna.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 14 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Alice2020a&#34;&gt;&lt;/a&gt; Alice,  Bob,  Carol,  J. Beznazwy,  and  A. Houmansadr,  “How  China  detects  and  blocks  Shadowsocks,”  in  Internet Measurement Conference.    ACM,  2020.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://censorbib.nymity.ch/pdf/Alice2020a.pdf&#34;&gt;https://censorbib.nymity.ch/pdf/Alice2020a.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 15 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Wu2023a&#34;&gt;&lt;/a&gt; M. Wu,  J. Sippe,  D. Sivakumar,  J. Burg,  P. Anderson,  X. Wang,  K. Bock,  A. Houmansadr,  D. Levin,  and  E. Wustrow,  “How  the  Great Firewall  of  China  detects  and  blocks  fully  encrypted  traffic,”  in  USENIX Security Symposium.    USENIX,  2023.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/sec23fall-prepub-234-wu-mingshi.pdf&#34;&gt;https://www.usenix.org/system/files/sec23fall-prepub-234-wu-mingshi.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 16 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Sakamoto2024a&#34;&gt;&lt;/a&gt; Sakamoto  and  E. Wedwards,  “Bleeding  wall:  A  hematologic  examination  on  the  Great  Firewall,”  in  Free  and  Open  Communications  on  the Internet,  2024.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://www.petsymposium.org/foci/2024/foci-2024-0002.pdf&#34;&gt;https://www.petsymposium.org/foci/2024/foci-2024-0002.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 17 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Xu2011a&#34;&gt;&lt;/a&gt; X. Xu,  Z. M. Mao,  and  J. A. Halderman,  “Internet censorship in China: Where does the filtering occur?”  in  Passive and Active Measurement Conference.    Springer,  2011, pp. 133–142.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://web.eecs.umich.edu/~zmao/Papers/china-censorship-pam11.pdf&#34;&gt;https://web.eecs.umich.edu/~zmao/Papers/china-censorship-pam11.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 18 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Wright2012a&#34;&gt;&lt;/a&gt; J. Wright,  “Regional  variation  in  Chinese  Internet  filtering,”  University  of  Oxford,  Tech.  Rep.,  2012.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://papers.ssrn.com/sol3/Delivery.cfm/SSRN_ID2265775_code1448244.pdf?abstractid=2265775&amp;amp;mirid=3&#34;&gt;https://papers.ssrn.com/sol3/Delivery.cfm/SSRN_ID2265775_code1448244.pdf?abstractid=2265775&amp;amp;mirid=3&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 19 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Henan-user-report&#34;&gt;&lt;/a&gt; Anonymous,  “Issue 2426 | XTLS/Xray-core,”  &lt;a class=&#34;url&#34; href=&#34;https://github.com/XTLS/Xray-core/issues/2426&#34;&gt;https://github.com/XTLS/Xray-core/issues/2426&lt;/a&gt;,  2023,  (Accessed on 02/06/2024).
                &lt;/li&gt;
                &lt;!-- 20 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:2022-tls-blocking&#34;&gt;&lt;/a&gt; G. Report.  (2022, Oct.)  Large  scale  blocking  of  TLS-based  censorship  circumvention  tools  in  China.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/129&#34;&gt;https://github.com/net4people/bbs/issues/129&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 21 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Farnan2016a&#34;&gt;&lt;/a&gt; O. Farnan,  A. Darer,  and  J. Wright,  “Poisoning  the  well  –  exploring  the  Great  Firewall’s  poisoned  DNS  responses,”  in  Workshop  on  Privacy in the Electronic Society.    ACM,  2016.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://dl.acm.org/authorize?N25517&#34;&gt;https://dl.acm.org/authorize?N25517&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 22 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Anonymous2014a&#34;&gt;&lt;/a&gt; Anonymous,  “Towards  a  comprehensive  picture  of  the  Great  Firewall’s  DNS  censorship,”  in  Free  and  Open  Communications  on  the  Internet.  USENIX,  2014.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci14/foci14-anonymous.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci14/foci14-anonymous.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 23 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Dong2002a&#34;&gt;&lt;/a&gt; B. Dong,  “A  report  about  national  DNS  spoofing  in  China  on  Sept. 28th,”  Dynamic Internet Technology, Inc.,  Tech.  Rep.,  Oct. 2002.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://web.archive.org/web/20021015121616/http://www.dit-inc.us/hj-09-02.html&#34;&gt;https://web.archive.org/web/20021015121616/http://www.dit-inc.us/hj-09-02.html&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 24 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Zittrain2003a&#34;&gt;&lt;/a&gt; J. Zittrain  and  B. G. Edelman,  “Internet  filtering  in  China,”  IEEE Internet Computing,  vol. 7, no. 2, pp. 70–77, Mar. 2003.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://nrs.harvard.edu/urn-3:HUL.InstRepos:9696319&#34;&gt;https://nrs.harvard.edu/urn-3:HUL.InstRepos:9696319&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 25 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Lowe2007a&#34;&gt;&lt;/a&gt; G. Lowe,  P. Winters,  and  M. L. Marcus,  “The  great  DNS  wall  of  China,”  New  York  University,  Tech.  Rep.,  2007.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://censorbib.nymity.ch/pdf/Lowe2007a.pdf&#34;&gt;https://censorbib.nymity.ch/pdf/Lowe2007a.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 26 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:gfw-looking-glass-post&#34;&gt;&lt;/a&gt; Anonymous.  (2020, Mar.)  GFW  archaeology:  gfw-looking-glass.sh.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/25&#34;&gt;https://github.com/net4people/bbs/issues/25&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 27 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:tang2016depth&#34;&gt;&lt;/a&gt; C. Tang,  “In-depth analysis of the Great Firewall of China,”  &lt;a class=&#34;url&#34; href=&#34;http://www.cs.tufts.edu/comp/116/archive/fall2016/ctang.pdf&#34;&gt;http://www.cs.tufts.edu/comp/116/archive/fall2016/ctang.pdf&lt;/a&gt;,  2016.
                &lt;/li&gt;
                &lt;!-- 28 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Bock2021b&#34;&gt;&lt;/a&gt; K. Bock,  A. Alaraj,  Y. Fax,  K. Hurley,  E. Wustrow,  and  D. Levin,  “Weaponizing  middleboxes  for  TCP  reflected  amplification,”  in  USENIX Security Symposium.    USENIX,  2021.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/sec21-bock.pdf&#34;&gt;https://www.usenix.org/system/files/sec21-bock.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 29 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Sparks2012a&#34;&gt;&lt;/a&gt; Sparks,  Neo,  Tank,  Smith,  and  Dozer,  “The  collateral  damage  of  Internet  censorship  by  DNS  injection,”  SIGCOMM Computer Communication Review,  vol. 42, no. 3, pp. 21–27, 2012.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://conferences.sigcomm.org/sigcomm/2012/paper/ccr-paper266.pdf&#34;&gt;https://conferences.sigcomm.org/sigcomm/2012/paper/ccr-paper266.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 30 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Marczak2015a&#34;&gt;&lt;/a&gt; B. Marczak,  N. Weaver,  J. Dalek,  R. Ensafi,  D. Fifield,  S. McKune,  A. Rey,  J. Scott-Railton,  R. Deibert,  and  V. Paxson,  “An  analysis of China’s “Great Cannon”,”  in  Free and Open Communications on the Internet.     USENIX,  2015.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci15/foci15-paper-marczak.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci15/foci15-paper-marczak.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 31 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Pearce2017b&#34;&gt;&lt;/a&gt; P. Pearce,  B. Jones,  F. Li,  R. Ensafi,  N. Feamster,  N. Weaver,  and  V. Paxson,  “Global  measurement  of  DNS  manipulation,”  in  USENIX Security Symposium.    USENIX,  2017.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/usenixsecurity17/sec17-pearce.pdf&#34;&gt;https://www.usenix.org/system/files/conference/usenixsecurity17/sec17-pearce.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 32 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Filasto2012a&#34;&gt;&lt;/a&gt; A. Filastò  and  J. Appelbaum,  “OONI:  Open observatory of network interference,”  in  Free and Open Communications on the Internet.    USENIX,  2012.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci12/foci12-final12.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci12/foci12-final12.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 33 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Raman2020c&#34;&gt;&lt;/a&gt; R. S. Raman,  P. Shenoy,  K. Kohls,  and  R. Ensafi,  “Censored Planet: An Internet-wide, longitudinal censorship observatory,”  in  Computer and Communications Security.    ACM,  2020.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://www.ramakrishnansr.com/assets/censoredplanet.pdf&#34;&gt;https://www.ramakrishnansr.com/assets/censoredplanet.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 34 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Niaki2020a&#34;&gt;&lt;/a&gt; A. A. Niaki,  S. Cho,  Z. Weinberg,  N. P. Hoang,  A. Razaghpanah,  N. Christin,  and  P. Gill,  “ICLab:  A  global,  longitudinal internet  censorship  measurement  platform,”  in  Symposium on Security &amp; Privacy.    IEEE,  2020.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://people.cs.umass.edu/~phillipa/papers/oakland2020.pdf&#34;&gt;https://people.cs.umass.edu/~phillipa/papers/oakland2020.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 35 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:greatfire_analyzer&#34;&gt;&lt;/a&gt; GreatFire,  “GreatFire Analyzer,”  &lt;a class=&#34;url&#34; href=&#34;https://en.greatfire.org/analyzer&#34;&gt;https://en.greatfire.org/analyzer&lt;/a&gt;,  n.d.,  accessed:  2025-04-18.
                &lt;/li&gt;
                &lt;!-- 36 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:greatfire_blocky&#34;&gt;&lt;/a&gt; GreatFire,  “Blocky,”  &lt;a class=&#34;url&#34; href=&#34;https://blocky.greatfire.org/&#34;&gt;https://blocky.greatfire.org/&lt;/a&gt;,  accessed:  2025-04-18.
                &lt;/li&gt;
                &lt;!-- 37 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:cat-and-mouse&#34;&gt;&lt;/a&gt; Anonymous  and  Amonymous.  (2022, Oct.)  Sharing a modified Shadowsocks as well as our thoughts on the cat-and-mouse game.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/136&#34;&gt;https://github.com/net4people/bbs/issues/136&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 38 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Winter-obfs2-probe&#34;&gt;&lt;/a&gt; P. Winter.  (2013, Mar.)  GFW actively probes obfs2bridges.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://bugs.torproject.org/8591&#34;&gt;https://bugs.torproject.org/8591&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 39 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Winter2012a&#34;&gt;&lt;/a&gt; P. Winter  and  S. Lindskog,  “How the Great Firewall of China is blocking Tor,”  in  Free and Open Communications on the Internet.    USENIX,  2012.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci12/foci12-final2.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci12/foci12-final2.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 40 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                &lt;a id=&#34;cite:knock-knock-tor&#34;&gt;&lt;/a&gt; T. Wilde.  (2012)  Knock knock knockin’ on bridges’ doors.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://blog.torproject.org/blog/knock-knock-knockin-bridges-doors&#34;&gt;https://blog.torproject.org/blog/knock-knock-knockin-bridges-doors&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 41 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Anonymous2021ShadowsocksAdvise&#34;&gt;&lt;/a&gt; Anonymous, Anonymous, Anonymous, D. Fifield, and A. Houmansadr. (2021, Jan.) A practical guide to defend against the GFW’s latest active
                    probing. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/58&#34;&gt;https://github.com/net4people/bbs/issues/58&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 42 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Anonymous2021ShadowsocksTutorial&#34;&gt;&lt;/a&gt; Anonymous.     (2021,     Jan.)     How     to     Deploy     a     Censorship     Resistant     Shadowsocks-libev     Server.     [Online].     Available:     &lt;a class=&#34;url&#34; href=&#34;https://gfw.report/blog/ss_tutorial/en/&#34;&gt;https://gfw.report/blog/ss_tutorial/en/&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 43 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Frolov2020a&#34;&gt;&lt;/a&gt; S. Frolov, J. Wampler, and E. Wustrow, “Detecting probe-resistant proxies,” in &lt;em&gt;Network and Distributed System Security&lt;/em&gt;. The Internet Society, 2020. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.ndss-symposium.org/wp-content/uploads/2020/02/23087.pdf&#34;&gt;https://www.ndss-symposium.org/wp-content/uploads/2020/02/23087.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 44 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Frolov2020b&#34;&gt;&lt;/a&gt; S. Frolov and E. Wustrow, “HTTPT: A probe-resistant proxy,” in &lt;em&gt;Free and Open Communications on the Internet&lt;/em&gt;. USENIX, 2020. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/foci20-paper-frolov.pdf&#34;&gt;https://www.usenix.org/system/files/foci20-paper-frolov.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 45 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Xue2022b&#34;&gt;&lt;/a&gt; D. Xue, B. Mixon-Baca, ValdikSS, A. Ablove, B. Kujath, J. R. Crandall, and R. Ensafi, “TSPU: Russia’s decentralized censorship system,” in &lt;em&gt;Internet Measurement Conference&lt;/em&gt;. ACM, 2022. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://dl.acm.org/doi/pdf/10.1145/3517745.3561461&#34;&gt;https://dl.acm.org/doi/pdf/10.1145/3517745.3561461&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 46 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Ortwein2023a&#34;&gt;&lt;/a&gt; A. Ortwein, K. Bock, and D. Levin, “Towards a comprehensive understanding of Russian transit censorship,” in &lt;em&gt;Free and Open Communications on the Internet&lt;/em&gt;, 2023. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.petsymposium.org/foci/2023/foci-2023-0012.pdf&#34;&gt;https://www.petsymposium.org/foci/2023/foci-2023-0012.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 47 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Ramesh2020a&#34;&gt;&lt;/a&gt; R. Ramesh, R. S. Raman, M. Bernhard, V. Ongkowijaya, L. Evdokimov, A. Edmundson, S. Sprecher, M. Ikram, and R. Ensafi, “Decentralized control:   A   case   study   of   Russia,”   in   &lt;em&gt;Network   and   Distributed   System   Security&lt;/em&gt;. The Internet Society, 2020. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.ndss-symposium.org/wp-content/uploads/2020/02/23098.pdf&#34;&gt;https://www.ndss-symposium.org/wp-content/uploads/2020/02/23098.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 48 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Yadav2018a&#34;&gt;&lt;/a&gt; T. K. Yadav, A. Sinha, D. Gosain, P. K. Sharma, and S. Chakravarty, “Where the light gets in: Analyzing web censorship mechanisms in India,” in &lt;em&gt;Internet Measurement Conference&lt;/em&gt;. ACM, 2018. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://delivery.acm.org/10.1145/3280000/3278555/p252-Yadav.pdf&#34;&gt;https://delivery.acm.org/10.1145/3280000/3278555/p252-Yadav.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 49 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Bao2018a&#34;&gt;&lt;/a&gt; B. Liu, C. Lu, H. Duan, Y. Liu, Z. Li, S. Hao, and M. Yang, “Who is answering my queries: Understanding and characterizing interception of the DNS resolution path,” in &lt;em&gt;USENIX Security Symposium&lt;/em&gt;, Aug. 2018. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/usenixsecurity18/sec18-liu_0.pdf&#34;&gt;https://www.usenix.org/system/files/conference/usenixsecurity18/sec18-liu_0.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 50 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:net4people_bbs_issues&#34;&gt;&lt;/a&gt; Net4People, “Net4People BBS Issues.” [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues&#34;&gt;https://github.com/net4people/bbs/issues&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 51 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:ntc_party_forum&#34;&gt;&lt;/a&gt; NTC Community, “NTC Party: “No Thought is a Crime” — Internet Censorship Circumvention Forum.” [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://ntc.party/&#34;&gt;https://ntc.party/&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 52 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:xtls_xray_core_issues&#34;&gt;&lt;/a&gt; XTLS, “Xray-core Project Issue Tracker.” [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://github.com/XTLS/Xray-core/issues&#34;&gt;https://github.com/XTLS/Xray-core/issues&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 53 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:v2fly_v2ray_core_issues&#34;&gt;&lt;/a&gt; V2Fly, “V2Ray Core Project Issue Tracker.” [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://github.com/v2fly/v2ray-core/issues&#34;&gt;https://github.com/v2fly/v2ray-core/issues&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 54 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:sagernet_sing_box_issues&#34;&gt;&lt;/a&gt; SagerNet, “sing-box Project Issue Tracker.” [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://github.com/SagerNet/sing-box/issues&#34;&gt;https://github.com/SagerNet/sing-box/issues&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 55 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:apernet_hysteria_issues&#34;&gt;&lt;/a&gt; Hysteria, “Hysteria Proxy Project Issue Tracker.” [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://github.com/apernet/hysteria/issues&#34;&gt;https://github.com/apernet/hysteria/issues&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 56 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:net4people442&#34;&gt;&lt;/a&gt; ThEWiZaRd0fBsoD, “在启用 TCP Timestamp（TCP 时间戳）后 GFW 对 obfs4 的审查无效 / After enabling TCP Timestamp, GFW’s censorship of obfs4 is rendered ineffective,” &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/442&#34;&gt;https://github.com/net4people/bbs/issues/442&lt;/a&gt;, Jan 2025, (Accessed on April 18, 2025).
                &lt;/li&gt;
                &lt;!-- 57 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:net4people416&#34;&gt;&lt;/a&gt; ——, “The operators in Henan Province, China, seem to have less stringent censorship regarding IPV6,” &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/416&#34;&gt;https://github.com/net4people/bbs/issues/416&lt;/a&gt;, Nov 2024, (Accessed on April 18, 2025).
                &lt;/li&gt;
                &lt;!-- 58 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:ghostcomment&#34;&gt;&lt;/a&gt; ghost, ““河南新上的 SNI/HOST 黑名单墙” (GitHub Discussion #3601),” &lt;a class=&#34;url&#34; href=&#34;https://github.com/XTLS/Xray-core/discussions/3601#discussioncomment-10293992&#34;&gt;https://github.com/XTLS/Xray-core/discussions/3601#discussioncomment-10293992&lt;/a&gt;, Aug 2024, (Accessed on April 18, 2025).
                &lt;/li&gt;
                &lt;!-- 59 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:tsinbei_tcp_timestamps&#34;&gt;&lt;/a&gt; H. Lee, “启用 TCP Timestamps 解决 SNI 阻断,” &lt;a class=&#34;url&#34; href=&#34;https://blog.tsinbei.com/archives/1361/&#34;&gt;https://blog.tsinbei.com/archives/1361/&lt;/a&gt;, Sep 2023, (Accessed on April 18, 2025).
                &lt;/li&gt;
                &lt;!-- 60 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:LePochat2019tranco&#34;&gt;&lt;/a&gt; V. L. Pochat, T. Van Goethem, S. Tajalizadehkhoob, M. Korczyński, and W. Joosen, “Tranco: A research-oriented top sites ranking hardened against manipulation,” in &lt;em&gt;Network and Distributed System Security Symposium 2019&lt;/em&gt;, ser. NDSS ’19, 2019.
                &lt;/li&gt;
                &lt;!-- 61 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Mi2019-resident-evil&#34;&gt;&lt;/a&gt; X. Mi, X. Feng, X. Liao, B. Liu, X. Wang, F. Qian, Z. Li, S. Alrwais, L. Sun, and Y. Liu, “Resident Evil: Understanding residential IP proxy as a dark service,” in &lt;em&gt;2019 IEEE Symposium on Security and Privacy (SP)&lt;/em&gt;, 2019, pp. 1185–1201. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://ieeexplore.ieee.org/document/8835239&#34;&gt;https://ieeexplore.ieee.org/document/8835239&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 62 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:ip2location&#34;&gt;&lt;/a&gt; “IP2Location LITE IP address geolocation database.” [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.ip2location.com/database/ip2location&#34;&gt;https://www.ip2location.com/database/ip2location&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 63 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Bock2020b&#34;&gt;&lt;/a&gt; K. Bock, G. Hughey, L.-H. Merino, T. Arya, D. Liscinsky, R. Pogosian, and D. Levin, “Come as you are: Helping unmodified clients bypass censorship with server-side evasion,” in &lt;em&gt;SIGCOMM&lt;/em&gt;. ACM, 2020. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://geneva.cs.umd.edu/papers/come-as-you-are.pdf&#34;&gt;https://geneva.cs.umd.edu/papers/come-as-you-are.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 64 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Henan-user-report-1&#34;&gt;&lt;/a&gt; 5e2t, “After enabling TCP timestamp, GFW’s censorship of obfs4 is rendered ineffective,” &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/442#issuecomment-2566913190&#34;&gt;https://github.com/net4people/bbs/issues/442#issuecomment-2566913190&lt;/a&gt;, Jan 2025, (Accessed on April 7, 2025).
                &lt;/li&gt;
                &lt;!-- 65 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Niere2023a&#34;&gt;&lt;/a&gt; N. Niere, S. Hebrok, J. Somorovsky, and R. Merget, “Poster: Circumventing the GFW with TLS record fragmentation,” in &lt;em&gt;Computer and Communications Security&lt;/em&gt;. ACM, 2023. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://nerd2.nrw/wp-content/uploads/2024/05/3576915.3624372.pdf&#34;&gt;https://nerd2.nrw/wp-content/uploads/2024/05/3576915.3624372.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 66 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:wan2022retina&#34;&gt;&lt;/a&gt; G. Wan, F. Gong, T. Barbette, and Z. Durumeric, “Retina: analyzing 100GbE traffic on commodity hardware,” in &lt;em&gt;ACM SIGCOMM&lt;/em&gt;, 2022. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://zakird.com/papers/retina.pdf&#34;&gt;https://zakird.com/papers/retina.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 67 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Bock2021a&#34;&gt;&lt;/a&gt; K. Bock, P. Bharadwaj, J. Singh, and D. Levin, “Your censor is my censor: Weaponizing censorship infrastructure for availability attacks,” in &lt;em&gt;Workshop on Offensive Technologies&lt;/em&gt;. IEEE, 2021. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.cs.umd.edu/~dml/papers/weaponizing_woot21.pdf&#34;&gt;https://www.cs.umd.edu/~dml/papers/weaponizing_woot21.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 68 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:klzgrad2009gfw&#34;&gt;&lt;/a&gt; klzgrad, “GFW技术报告：入侵防御系统的评测和问题,” &lt;a class=&#34;url&#34; href=&#34;https://www.chinagfw.org/2009/09/gfw_21.html&#34;&gt;https://www.chinagfw.org/2009/09/gfw_21.html&lt;/a&gt;, Aug 2009, accessed: 2025-04-11.
                &lt;/li&gt;
                &lt;!-- 69 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:gfwrev2010http&#34;&gt;&lt;/a&gt; gfwrev, “HTTP URL/深度关键词检测,” &lt;a class=&#34;url&#34; href=&#34;https://gfwrev.blogspot.com/2010/03/http-url.html&#34;&gt;https://gfwrev.blogspot.com/2010/03/http-url.html&lt;/a&gt;, Mar 2010, accessed: 2025-04-07.
                &lt;/li&gt;
                &lt;!-- 70 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Weaver2009a&#34;&gt;&lt;/a&gt; N. Weaver, R. Sommer, and V. Paxson, “Detecting forged TCP reset packets,” in &lt;em&gt;Network and Distributed System Security&lt;/em&gt;. The Internet Society, 2009. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.ndss-symposium.org/wp-content/uploads/2017/09/weav.pdf&#34;&gt;https://www.ndss-symposium.org/wp-content/uploads/2017/09/weav.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 71 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:rfc9293&#34;&gt;&lt;/a&gt; W. Eddy, “Transmission Control Protocol (TCP),” RFC 9293, Aug. 2022. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.rfc-editor.org/info/rfc9293&#34;&gt;https://www.rfc-editor.org/info/rfc9293&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 72 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Raman2022a&#34;&gt;&lt;/a&gt; R. S. Raman, M. Wang, J. Dalek, J. Mayer, and R. Ensafi, “Network measurement methods for locating and examining censorship devices,” in &lt;em&gt;Emerging Networking Experiments and Technologies&lt;/em&gt;. ACM, 2022. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://dl.acm.org/doi/pdf/10.1145/3555050.3569133&#34;&gt;https://dl.acm.org/doi/pdf/10.1145/3555050.3569133&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 73 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:SignInCe67:online&#34;&gt;&lt;/a&gt; “Centralized Zone Data Service,” &lt;a class=&#34;url&#34; href=&#34;https://czds.icann.org/home&#34;&gt;https://czds.icann.org/home&lt;/a&gt;, (Accessed on 01/31/2024).
                &lt;/li&gt;
                &lt;!-- 74 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:WebsiteC13:online&#34;&gt;&lt;/a&gt; “Website categorization api | domain category check | whoisxml api,” &lt;a class=&#34;url&#34; href=&#34;https://website-categorization.whoisxmlapi.com/api&#34;&gt;https://website-categorization.whoisxmlapi.com/api&lt;/a&gt;, (Accessed on 04/25/2024).
                &lt;/li&gt;
                &lt;!-- 75 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Security88:online&#34;&gt;&lt;/a&gt; “Security forces in china attack protesters seeking frozen funds - the new york times,” &lt;a class=&#34;url&#34; href=&#34;https://www.nytimes.com/2022/07/11/business/china-bank-protest.html&#34;&gt;https://www.nytimes.com/2022/07/11/business/china-bank-protest.html&lt;/a&gt;, (Accessed on 04/25/2024).
                &lt;/li&gt;
                &lt;!-- 76 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Xray&#34;&gt;&lt;/a&gt; XRay developers. XRay. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://github.com/XTLS/Xray-core&#34;&gt;https://github.com/XTLS/Xray-core&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 77 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:GoodbyeDPI&#34;&gt;&lt;/a&gt; GoodbyeDPI developers. GoodbyeDPI. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://github.com/ValdikSS/GoodbyeDPI&#34;&gt;https://github.com/ValdikSS/GoodbyeDPI&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 78 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:shadowrocket&#34;&gt;&lt;/a&gt; ShadowRocket developers. ShadowRocket. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://apps.apple.com/us/app/shadowrocket/id932747118&#34;&gt;https://apps.apple.com/us/app/shadowrocket/id932747118&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 79 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Frolov2019a&#34;&gt;&lt;/a&gt; S. Frolov and E. Wustrow, “The use of TLS in censorship circumvention,” in &lt;em&gt;Network and Distributed System Security&lt;/em&gt;. The Internet Society, 2019. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://tlsfingerprint.io/static/frolov2019.pdf&#34;&gt;https://tlsfingerprint.io/static/frolov2019.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 80 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:xraypullrrequest&#34;&gt;&lt;/a&gt; XRay developers. XRay pull request. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://github.com/XTLS/Xray-core/pull/3660&#34;&gt;https://github.com/XTLS/Xray-core/pull/3660&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 81 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:menlo-report&#34;&gt;&lt;/a&gt; M. Bailey, D. Dittrich, E. Kenneally, and D. Maughan, “The menlo report,” &lt;em&gt;IEEE Security and Privacy&lt;/em&gt;, vol. 10, no. 2, p. 71–75, Mar 2012. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://doi.org/10.1109/MSP.2012.52&#34;&gt;https://doi.org/10.1109/MSP.2012.52&lt;/a&gt;
                &lt;/li&gt;
    &lt;/ol&gt;
&lt;/div&gt;
        &lt;!-- l. 2489 --&gt;
        &lt;h2 class=&#34;sectionHead&#34; id=&#34;app:appendix-a&#34;&gt;
          &lt;a id=&#34;app:appendix-a&#34; href=&#34;#app:appendix-a&#34;&gt;Appendix A. Meta-Review&lt;/a&gt;
        &lt;/h2&gt;
        &lt;!-- l. 2491 --&gt;&lt;p class=&#39;indent&#39;&gt;   The following meta-review was prepared by the program committee for the 2025 IEEE Symposium on Security and Privacy
        (S&amp;amp;P) as part of the review process as detailed in the call for papers.
        &lt;/p&gt;
        &lt;!-- l. 2495 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;areasons-for-acceptance&#34;&gt; &lt;a id=&#34;sec:areasons-for-acceptance-summary&#34; href=&#34;#sec:areasons-for-acceptance-summary&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;A.1.&lt;/span&gt; Summary&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 2497 --&gt;&lt;p class=&#39;indent&#39;&gt;   This paper empirically confirms anecdotal evidence that the Henan province in China had started to deploy regional censorship
        mechanisms, purposely more stringent than those employed by the great firewall itself. The paper delivers a comprehensive analysis
        of censorship carried out by the Henan Firewall, both on in/out and out/in directions, shedding light on its functioning, blocking
        policies, and residual censorship mechanisms. In addition, the paper inspects whether similar regional censorship
        is  occurring  in  other  Chinese  provinces,  finding  no  evidence  of  additional  interference  beyond  that  of  the  great
        firewall.
        &lt;/p&gt;
        &lt;!-- l. 2499 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;areasons-for-acceptance&#34;&gt; &lt;a id=&#34;sec:areasons-for-acceptance-scientific-contributions&#34; href=&#34;#sec:areasons-for-acceptance-scientific-contributions&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;A.2.&lt;/span&gt; Scientific Contributions&lt;/a&gt;
        &lt;/h3&gt;
            &lt;ul class=&#39;itemize1&#39;&gt;
            &lt;li class=&#39;itemize&#39;&gt;Independent Confirmation of Important Results with Limited Prior Research
            &lt;/li&gt;
            &lt;li class=&#39;itemize&#39;&gt;Provides a Valuable Step Forward in an Established Field&lt;/li&gt;&lt;/ul&gt;

        &lt;!-- l. 2507 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;areasons-for-acceptance&#34;&gt; &lt;a id=&#34;sec:areasons-for-acceptance-reasons-for-acceptance&#34; href=&#34;#sec:areasons-for-acceptance-reasons-for-acceptance&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;A.3.&lt;/span&gt; Reasons for Acceptance&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 2509 --&gt;&lt;p class=&#39;indent&#39;&gt;
            &lt;/p&gt;&lt;dl class=&#39;enumerate-enumitem&#39;&gt;&lt;dt class=&#39;enumerate-enumitem&#39;&gt;
         1) &lt;/dt&gt;&lt;dd class=&#39;enumerate-enumitem&#39;&gt;This paper provides an independent confirmation of important results with limited prior research. The paper builds a
            measurement apparatus to confirm (and expand on the information provided by) anecdotal reports of regional censorship
            within  the  Henan  province  in  China.  Besides  providing  a  systematic  understanding  of  the  existence  and  blocking
            behavior  of  this  new  type  of  regional  censorship,  the  paper  also  independently  confirms  the  asymmetry  in  blocking
            behavior of the great firewall.
            &lt;/dd&gt;&lt;dt class=&#39;enumerate-enumitem&#39;&gt;
         2) &lt;/dt&gt;&lt;dd class=&#39;enumerate-enumitem&#39;&gt;The  paper  provides  a  valuable  step  forward  in  an  established  field  by  applying  different  known  methodologies  to
            exhaustively study a new phenomenon of censorship in a part of China. The measurements carried out in the presented
            study are sound and rely on true-and-tested measurement methodologies, providing insights into a form of censorship
            that had not been further analyzed.&lt;/dd&gt;&lt;/dl&gt;</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>墙中之墙：中国地区性审查的兴起</title>
        <link>https://gfw.report/publications/sp25/zh/</link>
        <pubDate>Sun, 11 May 2025 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/publications/sp25/zh/</guid>
        
        <description>&lt;!-- use CSS file --&gt;
&lt;!-- use paper-specific CSS --&gt;
&lt;link rel=&#34;stylesheet&#34; href=&#34;../sp25.css&#34;&gt;

&lt;!-- Used to render latex syntax --&gt;
&lt;script type=&#34;text/javascript&#34; async
  src=&#34;https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML&#34;&gt;
&lt;/script&gt;

&lt;!-- Used to render Table of Content --&gt;
&lt;link href=&#34;./css/tocbot.css&#34; rel=&#39;stylesheet&#39; type=&#39;text/css&#39; /&gt;
&lt;script src=&#34;./js/tocbot.min.js&#34;&gt;&lt;/script&gt;
&lt;script&gt;
    document.addEventListener(&#39;DOMContentLoaded&#39;, function() {
    tocbot.init({
        tocSelector: &#39;.js-toc&#39;,
        contentSelector: &#39;.js-toc-content&#39;,
        headingSelector: &#39;h2, h3&#39;,
        collapseDepth: 3,
        activeLinkClass: &#39;&#39;
    });
    });
&lt;/script&gt;
&lt;h1 class=&#34;titleHead&#34;&gt;墙中之墙：中国地区性审查的兴起&lt;/h1&gt;
&lt;div class=&#34;authors&#34;&gt;
  &lt;div class=&#34;author&#34;&gt;
      &lt;p class=&#34;author-name&#34;&gt;
          Mingshi Wu&lt;span class=&#34;footnote-mark&#34;&gt;&lt;a href=&#34;#fn:equal-contribution&#34;&gt;&lt;sup class=&#34;textsuperscript cmsy-8&#34;&gt;∗&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;
      &lt;/p&gt;
      &lt;p class=&#34;author-affiliation&#34;&gt;GFW Report&lt;/p&gt;
      &lt;p class=&#34;author-email&#34;&gt;gfw.report@protonmail.com&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&#34;author&#34;&gt;
      &lt;p class=&#34;author-name&#34;&gt;
          Ali Zohaib&lt;span class=&#34;footnote-mark&#34;&gt;&lt;a href=&#34;#fn:equal-contribution&#34;&gt;&lt;sup class=&#34;textsuperscript cmsy-8&#34;&gt;∗&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;
      &lt;/p&gt;
      &lt;p class=&#34;author-affiliation&#34;&gt;University of Massachusetts Amherst&lt;/p&gt;
      &lt;p class=&#34;author-email&#34;&gt;azohaib@umass.edu&lt;/p&gt;
  &lt;/div&gt;
  &lt;/div&gt;
&lt;div class=&#34;authors&#34;&gt;
  &lt;div class=&#34;author&#34;&gt;
      &lt;p class=&#34;author-name&#34;&gt;Zakir Durumeric&lt;/p&gt;
      &lt;p class=&#34;author-affiliation&#34;&gt;Stanford University&lt;/p&gt;
      &lt;p class=&#34;author-email&#34;&gt;zakir@cs.stanford.edu&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&#34;author&#34;&gt;
      &lt;p class=&#34;author-name&#34;&gt;Amir Houmansadr&lt;/p&gt;
      &lt;p class=&#34;author-affiliation&#34;&gt;University of Massachusetts Amherst&lt;/p&gt;
      &lt;p class=&#34;author-email&#34;&gt;amir@cs.umass.edu&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&#34;author&#34;&gt;
      &lt;p class=&#34;author-name&#34;&gt;Eric Wustrow&lt;/p&gt;
      &lt;p class=&#34;author-affiliation&#34;&gt;University of Colorado Boulder&lt;/p&gt;
      &lt;p class=&#34;author-email&#34;&gt;ewust@colorado.edu&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- l. 143 --&gt;
&lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
  &lt;ol&gt;
      &lt;li class=&#34;footnote-text&#34;&gt;
          &lt;a id=&#34;fn:equal-contribution&#34;&gt;&lt;/a&gt;
          &lt;span class=&#34;footnote-mark&#34;&gt;&lt;sup class=&#34;textsuperscript&#34;&gt;*&lt;/sup&gt;&lt;/span&gt;
          &lt;span class=&#34;footnotes-text&#34;&gt;Mingshi Wu 和 Ali Zohaib 对这项工作贡献相当。&lt;/span&gt;
      &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;

&lt;br&gt;

&lt;div class=&#34;js-toc&#34;&gt;&lt;/div&gt;

&lt;/p&gt;
&lt;h2 class=&#34;sectionHead&#34; id=&#34;abstract&#34;&gt;&lt;a id=&#34;sec:abstract&#34; href=&#34;#sec:abstract&#34;&gt;摘要&lt;/a&gt;&lt;/h2&gt;
&lt;!-- l. 148 --&gt;&lt;p class=&#39;noindent&#39;&gt;
    长期以来，中国的互联网审查有着相对集中的政策和统一的实现，这套系统被称为中国防火长城（GFW）。然而，自2023年8月以来，有传闻称河南省部署了自己的地区性审查系统。在这项工作中，我们对河南省的省级审查进行描述和分析，并将其与国家级的GFW进行了比较。我们发现，河南建立了基于TLS SNI和HTTP Host的审查机制，用于检测和封锁离开该省的流量。虽然河南防火墙在复杂性和应对网络流量多样性方面有所欠缺，但其不稳定且激进的二级域名封锁策略，一度使其封锁的网站数量达到GFW的十倍之多。我们基于对河南防火墙的流量解析缺陷和注入行为的观察，提出了一些简单的仅需客户端实现的办法来绕过河南省的审查。我们的工作记录了一种值得警惕的现象，即中国的地区性审查正在抬头。
&lt;/p&gt;
&lt;!-- l. 167 --&gt;&lt;h2 class=&#34;sectionHead&#34; id=&#34;1&#34;&gt;&lt;a id=&#34;sec:1-introduction&#34; href=&#34;#sec:1-introduction&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;1.&lt;/span&gt; 引言&lt;/a&gt;&lt;/h2&gt;

&lt;!-- l. 169 --&gt;&lt;p class=&#39;indent&#39;&gt;中华人民共和国开发并维护着世界上最复杂的互联网审查系统之一，通常被称作中国防火长城（GFW）。通过DNS投毒 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Duan2012a&#39;&gt;1&lt;/a&gt;, &lt;a href=&#39;#cite:Chai2019a&#39;&gt;2&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2021a&#39;&gt;3&lt;/a&gt;, &lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;4&lt;/a&gt;, &lt;a href=&#39;#cite:Fan2025a&#39;&gt;5&lt;/a&gt;]&lt;/span&gt;、HTTP Host头部过滤 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Clayton2006a&#39;&gt;6&lt;/a&gt;, &lt;a href=&#39;#cite:Wang2017a&#39;&gt;7&lt;/a&gt;, &lt;a href=&#39;#cite:Rambert2021a&#39;&gt;8&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;]&lt;/span&gt;、TLS SNI/ESNI过滤 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Chai2019a&#39;&gt;2&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;, &lt;a href=&#39;#cite:Bock2020ESNI&#39;&gt;10&lt;/a&gt;, &lt;a href=&#39;#cite:Bock2021c&#39;&gt;11&lt;/a&gt; §3]&lt;/span&gt;、IP地址封锁 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Chai2019a&#39;&gt;2&lt;/a&gt; §4]&lt;/span&gt;、主动探测 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Ensafi2015b&#39;&gt;12&lt;/a&gt;, &lt;a href=&#39;#cite:Dunna2018a&#39;&gt;13&lt;/a&gt;, &lt;a href=&#39;#cite:Alice2020a&#39;&gt;14&lt;/a&gt;, &lt;a href=&#39;#cite:Wu2023a&#39;&gt;15&lt;/a&gt; §5]&lt;/span&gt; 以及代理流量检测 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Wu2023a&#39;&gt;15&lt;/a&gt; §4]&lt;/span&gt; 等手段，中国阻止其公民访问大量的互联网内容和服务。
&lt;/p&gt;
&lt;!-- l. 180 --&gt;&lt;p class=&#39;indent&#39;&gt;长期以来，中国的审查系统一直被认为在&lt;span class=&#39;ptmri8t-&#39;&gt;政策&lt;/span&gt;和&lt;span class=&#39;ptmri8t-&#39;&gt;实现&lt;/span&gt;两方面都相对集中化。实证测量揭示了中国对审查策略 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;3&lt;/a&gt;, &lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;4&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;, &lt;a href=&#39;#cite:Wu2023a&#39;&gt;15&lt;/a&gt;]&lt;/span&gt;、软件更新 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Sakamoto2024a&#39;&gt;16&lt;/a&gt; §4.5]&lt;/span&gt; &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Fan2025a&#39;&gt;5&lt;/a&gt; §VII]&lt;/span&gt; 和基础设施 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Alice2020a&#39;&gt;14&lt;/a&gt; §3.4]&lt;/span&gt; &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;4&lt;/a&gt; §5]&lt;/span&gt; 进行统一的协调与管理。审查设备部署在国家网络边界 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;4&lt;/a&gt;, &lt;a href=&#39;#cite:Xu2011a&#39;&gt;17&lt;/a&gt;, &lt;a href=&#39;#cite:Wright2012a&#39;&gt;18&lt;/a&gt;]&lt;/span&gt;，检测并过滤进出国家的流量。因此，在中国国内交换的流量不会受到GFW的检测或封锁。
&lt;/p&gt;
&lt;!-- l. 191 --&gt;&lt;p class=&#39;indent&#39;&gt;然而，近期的传闻表明，这种集中统一的审查模式可能已不再是中国互联网审查的全貌。2023年8月，在中国人口第三大省、重要的劳务中心——河南省的用户开始报告，一些在中国其他地区可以访问的网站，在当地却无法访问 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Henan-user-report&#39;&gt;19&lt;/a&gt;]&lt;/span&gt;。
&lt;/p&gt;
&lt;!-- l. 197 --&gt;&lt;p class=&#39;indent&#39;&gt;在本研究中&lt;span class=&#39;footnote-mark&#39;&gt;&lt;a href=&#39;#fn:project-homepage&#39;&gt;&lt;sup class=&#39;textsuperscript&#39;&gt;1&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;，我们首先探讨了在发现河南地区性审查后自然提出的一个问题（&lt;a href=&#39;#sec:3-detecting-regional-censorship&#39;&gt;第3节&lt;/a&gt;）：中国的其他省份是否也部署了相同或类似的地区性审查？我们在中国的七个省市进行了测量研究，包括北京、上海、广东、浙江、江苏、四川和河南，以识别潜在的地区性审查。
可能由于我们在中国所能使用的测量点有限，我们没有在除河南以外的六个省份发现地区性审查的证据。
        &lt;/p&gt;
        &lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
            &lt;ol&gt;
                &lt;li class=&#39;footnote-text&#39;&gt;
                    &lt;a id=&#39;fn:project-homepage&#39;&gt;&lt;/a&gt;
                    &lt;span class=&#39;footnote-mark&#39;&gt;
                        &lt;sup class=&#39;textsuperscript&#39;&gt;1&lt;/sup&gt;
                    &lt;/span&gt;
            &lt;span class=&#39;footnotes-text&#39;&gt;项目主页： &lt;a href=&#34;https://gfw.report/publications/sp25/en&#34;&gt;https://gfw.report/publications/sp25/en&lt;/a&gt;。&lt;/span&gt;
                &lt;/li&gt;
            &lt;/ol&gt;
          &lt;/div&gt;
&lt;!-- l. 207 --&gt;&lt;p class=&#39;indent&#39;&gt;随后，我们分析了河南省新兴的地区性审查，将其封锁策略和实现与国家级GFW进行了比较。如&lt;a href=&#39;#fig:1-two-firewalls&#39;&gt;图1&lt;/a&gt;所示，我们的调查显示，河南的省级中间设备通过基于HTTP Host和基于TLS服务器名称指示（SNI）的过滤来封锁对特定HTTP和HTTPS网站的访问（&lt;a href=&#39;#sec:4.1-methodology&#39;&gt;第4.1节&lt;/a&gt;）。与监控并封锁进出境流量的GFW不同，这个地区性防火墙仅审查离开该省的流量（&lt;a href=&#39;#sec:4.2-what-traffic-is-targeted&#39;&gt;第4.2节&lt;/a&gt;）。它在连接追踪和解析逻辑（&lt;a href=&#39;#sec:4.3-how-the-henan-firewall-parses-connections&#39;&gt;第4.3节&lt;/a&gt;）、注入行为和指纹（&lt;a href=&#39;#sec:4.4-how-the-henan-firewall-blocks-traffic&#39;&gt;第4.4节&lt;/a&gt;）以及网络位置（&lt;a href=&#39;#sec:4.5-where-are-the-censorship-devices-deployed&#39;&gt;第4.5节&lt;/a&gt;）方面也不同于GFW。
        &lt;/p&gt;
        &lt;div class=&#39;figure&#39;&gt;
            &lt;p class=&#39;noindent&#39; id=&#39;fig:1-two-firewalls&#39;&gt;
                &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/two-firewalls-.png&#39; /&gt;
        &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:1-two-firewalls&#34;&gt;图1&lt;/a&gt;：河南省部署了基于TLS SNI和HTTP Host的审查中间设备，用于检测和封锁离开该省的流量。
                &lt;/p&gt;
            &lt;/p&gt;
        &lt;/div&gt;
        &lt;!-- l. 263 --&gt;&lt;p class=&#39;indent&#39;&gt;   我们进行了一项长期研究，以了解河南防火墙所封锁的内容及其与 GFW 所封锁内容的差异（&lt;a href=&#39;#sec:5-understanding-the-blocklists&#39;&gt;第5节&lt;/a&gt;）。在 2023 年 11 月至 2025 年 3 月期间（2024 年 3 月至 10 月之间没有测量），我们每天测试 Tranco 排名前一百万的域名，并每周测试 CZDS 的 2.27 亿个域名。我们发现河南防火墙采用了比 GFW 更激进且不稳定的封锁策略。河南防火墙累计封锁了 420 万个域名，是 GFW 累计封锁列表规模的五倍多。造成这种情况的一个关键原因是其封锁了许多通用二级域名（如 &lt;span class=&#39;cmtt-10&#39;&gt;*.com.au&lt;/span&gt;）。我们的测试还揭示，在一些时期，其封锁的域名数量是 GFW 的十倍之多。
        &lt;/p&gt;
        &lt;!-- l. 288 --&gt;&lt;p class=&#39;indent&#39;&gt;   基于观察到的解析缺陷和注入行为，我们介绍规避技术来绕过这种地区性审查（&lt;a href=&#39;#sec:6-circumvention-strategies&#39;&gt;第6节&lt;/a&gt;），这些技术已被许多流行的反审查工具使用。河南的地区性审查标志着中国首个被正式记录的省级自主运作防火墙案例。我们希望这项研究能向更广泛的审查研究社区发出警报，以识别、调查和应对中国及其他地区出现的地区性审查。
        &lt;/p&gt;
        &lt;!-- l. 332 --&gt;&lt;h2 class=&#34;sectionHead&#34; id=&#34;2&#34;&gt;&lt;a id=&#34;sec:2-background-and-related-work&#34; href=&#34;#sec:2-background-and-related-work&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;2.&lt;/span&gt; 背景与相关工作&lt;/a&gt;&lt;/h2&gt;
        &lt;!-- l. 337 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;2.1&#34;&gt; &lt;a id=&#34;sec:2.1-the-great-firewall-of-china-gfw&#34; href=&#34;#sec:2.1-the-great-firewall-of-china-gfw&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;2.1.&lt;/span&gt; 中国防火长城 (GFW)&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 340 --&gt;&lt;p class=&#39;indent&#39;&gt;   中国防火长城 (GFW) 是部署在中国的一系列不同的审查设备和机制。GFW利用部署在中国边界自治系统 (AS) 的网络中间设备来检测和封锁互联网流量 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Xu2011a&#39;&gt;17&lt;/a&gt;]&lt;/span&gt;。GFW 不仅封锁特定网站和网络服务，而且试图识别和封锁翻墙行为。
        &lt;/p&gt;
        &lt;!-- l. 347 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;网站审查。   &lt;/span&gt;为了封锁对特定网站和服务的访问，GFW 通常同时使用多种技术手段，包括 DNS 污染 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Duan2012a&#39;&gt;1&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2021a&#39;&gt;3&lt;/a&gt;]&lt;/span&gt;、基于 HTTP Host 的过滤 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Rambert2021a&#39;&gt;8&lt;/a&gt;]&lt;/span&gt;、基于 TLS SNI/ESNI 的过滤 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Chai2019a&#39;&gt;2&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;, &lt;a href=&#39;#cite:Bock2020ESNI&#39;&gt;10&lt;/a&gt;, &lt;a href=&#39;#cite:2022-tls-blocking&#39;&gt;20&lt;/a&gt;]&lt;/span&gt; 以及 IP 地址封锁 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Chai2019a&#39;&gt;2&lt;/a&gt; §4]&lt;/span&gt;。
        &lt;/p&gt;
        &lt;!-- l. 361 --&gt;&lt;p class=&#39;indent&#39;&gt;   为了审查 DNS 流量，GFW设备&lt;span class=&#39;ptmri8t-&#39;&gt;并联（旁路分光部署）&lt;/span&gt;于网络，注入带有错误 IP 地址的伪造 DNS 响应，以阻止对特定域名的访问 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;3&lt;/a&gt;, &lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;4&lt;/a&gt;, &lt;a href=&#39;#cite:Fan2025a&#39;&gt;5&lt;/a&gt;, &lt;a href=&#39;#cite:Farnan2016a&#39;&gt;21&lt;/a&gt;, &lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;22&lt;/a&gt;]&lt;/span&gt;。2002 年的早期报告记录了 GFW 在其伪造响应中使用单一错误 IP 地址 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Dong2002a&#39;&gt;23&lt;/a&gt;, &lt;a href=&#39;#cite:Zittrain2003a&#39;&gt;24&lt;/a&gt;]&lt;/span&gt;。随着时间的推移，其演变成了一个更复杂的系统，使用了越来越多的虚假地址，并扩大了其域名封锁列表 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;3&lt;/a&gt;, &lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;4&lt;/a&gt;, &lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;22&lt;/a&gt;, &lt;a href=&#39;#cite:Lowe2007a&#39;&gt;25&lt;/a&gt;]&lt;/span&gt;。研究人员还发现过 GFW DNS注入系统中的内存数据泄露漏洞 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Fan2025a&#39;&gt;5&lt;/a&gt;, &lt;a href=&#39;#cite:Sakamoto2024a&#39;&gt;16&lt;/a&gt;, &lt;a href=&#39;#cite:gfw-looking-glass-post&#39;&gt;26&lt;/a&gt;]&lt;/span&gt;。
        &lt;/p&gt;
        &lt;!-- l. 369 --&gt;&lt;p class=&#39;indent&#39;&gt;   为了审查 HTTP 和 TLS 流量，GFW 有状态地检查连接中未加密的文本。一旦在 HTTP 请求的 Host 字段或 TLS ClientHello 的服务器名称指示 (SNI) 扩展中检测到被审查的域名，GFW 会向连接两端的主机注入 TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包以终止连接 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Clayton2006a&#39;&gt;6&lt;/a&gt;, &lt;a href=&#39;#cite:Wang2017a&#39;&gt;7&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;, &lt;a href=&#39;#cite:tang2016depth&#39;&gt;27&lt;/a&gt;, &lt;a href=&#39;#cite:Bock2021b&#39;&gt;28&lt;/a&gt;]&lt;/span&gt;。&lt;a href=&#39;#fig:2-waterfall-diag&#39;&gt;图2&lt;/a&gt; 展示了 GFW 对包含禁止域名的 TLS Client Hello 的 SNI 的连接的审查。
        &lt;/p&gt;
        &lt;div class=&#39;figure&#39;&gt;
            &lt;p class=&#39;noindent&#39; id=&#39;fig:2-waterfall-diag&#39;&gt;
                &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/waterfall-diag-.png&#39; /&gt;
                &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:2-waterfall-diag&#34;&gt;图2&lt;/a&gt;：河南防火墙和三种不同类型 GFW 的概述。我们在数据包的 SNI 或 HTTP Host 字段中使用仅被某一种墙审查的域名，以单独触发和研究每种墙的审查机制。例如，在 2024 年 4 月，&lt;span class=&#39;cmtt-10&#39;&gt;011.com&lt;/span&gt; 仅被河南防火墙封锁，而 &lt;span class=&#39;cmtt-10&#39;&gt;youtube.com&lt;/span&gt; 仅被 GFW 封锁。
                &lt;/p&gt;
            &lt;/p&gt;
        &lt;/div&gt;
        &lt;!-- l. 382 --&gt;&lt;p class=&#39;indent&#39;&gt;   GFW 通常是双向审查的，这意味着进入和离开中国的流量都可能触发其审查 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;4&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;, &lt;a href=&#39;#cite:Sparks2012a&#39;&gt;29&lt;/a&gt;]&lt;/span&gt;。审查中间设备的双向审查使得研究人员能够从国家外部测量审查 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;3&lt;/a&gt;, &lt;a href=&#39;#cite:Marczak2015a&#39;&gt;30&lt;/a&gt;, &lt;a href=&#39;#cite:Pearce2017b&#39;&gt;31&lt;/a&gt;]&lt;/span&gt;。
        &lt;/p&gt;
        &lt;!-- l. 390 --&gt;&lt;p class=&#39;indent&#39;&gt;   诸如 OONI &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Filasto2012a&#39;&gt;32&lt;/a&gt;]&lt;/span&gt;、Censored Planet &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Raman2020c&#39;&gt;33&lt;/a&gt;]&lt;/span&gt; 和 ICLab &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Niaki2020a&#39;&gt;34&lt;/a&gt;]&lt;/span&gt; 等项目多年来一直在全球范围内测量审查。也已经有几个大型项目专为监控中国的网站审查，包括 GreatFire Analyzer &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:greatfire_analyzer&#39;&gt;35&lt;/a&gt;]&lt;/span&gt;、Blocky &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:greatfire_blocky&#39;&gt;36&lt;/a&gt;]&lt;/span&gt;、GFWatch &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;3&lt;/a&gt;]&lt;/span&gt; 和 GFWeb &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;]&lt;/span&gt;。虽然长期的、大规模研究在跟踪和理解 GFW 封锁列表变化方面表现出色，但有时重新审视现有的审查机制仍然可以揭示审查者的新更新。例如，Bock 等人 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Bock2021c&#39;&gt;11&lt;/a&gt;]&lt;/span&gt; 发现了中国次级的 TLS 审查中间设备，这些设备在被深入分析之前一直未被注意到。
        &lt;/p&gt;
        &lt;!-- l. 413 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;代理审查。   &lt;/span&gt;仅仅对网站进行封锁并不足以阻止用户访问被禁止的内容，因为用户可以使用翻墙工具来绕过封锁。因此，GFW 与中国的互联网用户之间展开了一场看似永无止境的猫鼠游戏 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:cat-and-mouse&#39;&gt;37&lt;/a&gt;]&lt;/span&gt;。例如，GFW 采用主动探测技术来识别和封锁翻墙工具，如 Tor &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Ensafi2015b&#39;&gt;12&lt;/a&gt;, &lt;a href=&#39;#cite:Dunna2018a&#39;&gt;13&lt;/a&gt;, &lt;a href=&#39;#cite:Winter-obfs2-probe&#39;&gt;38&lt;/a&gt;, &lt;a href=&#39;#cite:Winter2012a&#39;&gt;39&lt;/a&gt;, &lt;a href=&#39;#cite:knock-knock-tor&#39;&gt;40&lt;/a&gt;]&lt;/span&gt; 和 Shadowsocks &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Alice2020a&#39;&gt;14&lt;/a&gt;, &lt;a href=&#39;#cite:Wu2023a&#39;&gt;15&lt;/a&gt; §5]&lt;/span&gt;，现在这些工具已可以成功抵御主动探测 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2021ShadowsocksAdvise&#39;&gt;41&lt;/a&gt;, &lt;a href=&#39;#cite:Anonymous2021ShadowsocksTutorial&#39;&gt;42&lt;/a&gt;, &lt;a href=&#39;#cite:Frolov2020a&#39;&gt;43&lt;/a&gt;, &lt;a href=&#39;#cite:Frolov2020b&#39;&gt;44&lt;/a&gt;]&lt;/span&gt;。GFW 还使用流量分析以识别和封锁完全加密的代理 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Wu2023a&#39;&gt;15&lt;/a&gt;]&lt;/span&gt;。
        &lt;/p&gt;
        &lt;!-- l. 427 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;其他审查机制。   &lt;/span&gt;中国还存在一些独特的审查组件，似乎区别于 GFW 针对网站和代理的审查。其中值得注意的是，在 2015 年，研究人员发现了中国的“大炮”(Great Cannon)，它向 HTTP 流量中注入 Javascript，以利用受害者的浏览器发动对特定主机的拒绝服务攻击 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Marczak2015a&#39;&gt;30&lt;/a&gt;]&lt;/span&gt;。
        &lt;/p&gt;
        &lt;!-- l. 439 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;2.2&#34;&gt; &lt;a id=&#34;sec:2.2-regional-variation-in-censorship&#34; href=&#34;#sec:2.2-regional-variation-in-censorship&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;2.2.&lt;/span&gt; 审查的地区性差异&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 441 --&gt;&lt;p class=&#39;indent&#39;&gt;   在审查政策严格的国家，本地化或分散化的审查机制很常见。在俄罗斯，数千家私营互联网服务提供商 (ISP) 各自实施自己的过滤机制，导致审查环境多样化 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Xue2022b&#39;&gt;45&lt;/a&gt;, &lt;a href=&#39;#cite:Ortwein2023a&#39;&gt;46&lt;/a&gt;, &lt;a href=&#39;#cite:Ramesh2020a&#39;&gt;47&lt;/a&gt;]&lt;/span&gt;。类似地，在印度，研究人员表明 ISP 在执行政府审查令方面存在显著差异，导致全国范围内的审查碎片化 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Yadav2018a&#39;&gt;48&lt;/a&gt;]&lt;/span&gt;。
        &lt;/p&gt;
        &lt;!-- l. 448 --&gt;&lt;p class=&#39;indent&#39;&gt;   然而，先前的研究表明，中国的审查系统和政策在全国范围内基本是统一和集中化的。2011 年，Xu 等人 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Xu2011a&#39;&gt;17&lt;/a&gt;]&lt;/span&gt; 测量了中国审查设备的位置。他们发现，中国的关键词审查中间设备主要位于网络边缘，并采用符合当时全国性封锁策略的规则。2012 年，Wright &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Wright2012a&#39;&gt;18&lt;/a&gt;]&lt;/span&gt; 对中国的 DNS 审查进行了一项小规模研究，发现DNS 响应在全国各地有所不同。然而，这项工作没有考虑 DNS 响应变化的其​​他可能原因（例如基于地理位置的负载均衡，或 DNS 配置的变化）。2018 年，Bao 等人 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Bao2018a&#39;&gt;49&lt;/a&gt;]&lt;/span&gt; 从住宅和移动 IP 地址测量了中国的 DNS 投毒差异。全网地持续性测量揭示了中国在审查策略 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;4&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2021a&#39;&gt;3&lt;/a&gt;, &lt;a href=&#39;#cite:Wu2023a&#39;&gt;15&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;]&lt;/span&gt;、审查软件更新 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Sakamoto2024a&#39;&gt;16&lt;/a&gt; §4.5]&lt;/span&gt; &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Fan2025a&#39;&gt;5&lt;/a&gt; §VII]&lt;/span&gt; 和审查基础设施 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Alice2020a&#39;&gt;14&lt;/a&gt; §3.4]&lt;/span&gt; &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;4&lt;/a&gt; §5]&lt;/span&gt; 方面，进行了统一的协调和管理。
        &lt;/p&gt;
        &lt;!-- l. 546 --&gt;&lt;h2 class=&#34;sectionHead&#34; id=&#34;3&#34;&gt;&lt;a id=&#34;sec:3-detecting-regional-censorship&#34; href=&#34;#sec:3-detecting-regional-censorship&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;3.&lt;/span&gt; 检测地区性审查&lt;/a&gt;&lt;/h2&gt;
        &lt;!-- l. 569 --&gt;&lt;p class=&#39;indent&#39;&gt;   中国境外的反审查研究人员通常依赖境内用户的报告来了解中国审查策略的新变化和升级。部分原因是研究人员难以在中国境内获得多样化的测量服务器，并持续监测各种互联网服务和协议的可访问情况。令人鼓舞的是，在线论坛——例如 Net4People BBS &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:net4people_bbs_issues&#39;&gt;50&lt;/a&gt;]&lt;/span&gt;、NTC Party 论坛 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:ntc_party_forum&#39;&gt;51&lt;/a&gt;]&lt;/span&gt;，以及 Xray &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:xtls_xray_core_issues&#39;&gt;52&lt;/a&gt;]&lt;/span&gt;、V2Ray &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:v2fly_v2ray_core_issues&#39;&gt;53&lt;/a&gt;]&lt;/span&gt;、sing-box &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:sagernet_sing_box_issues&#39;&gt;54&lt;/a&gt;]&lt;/span&gt; 和 Hysteria &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:apernet_hysteria_issues&#39;&gt;55&lt;/a&gt;]&lt;/span&gt; 等流行反审查工具的 GitHub 问题汇报页面——为用户在遇到新的审查事件时立即报告遭遇提供了平台。这也使得研究人员能够迅速调查这些报告 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:cat-and-mouse&#39;&gt;37&lt;/a&gt;]&lt;/span&gt;。
        &lt;/p&gt;
        &lt;!-- l. 584 --&gt;&lt;p class=&#39;indent&#39;&gt;   这种众包协作的方式在识别和对抗河南省的省级审查方面也很有效。具体来说，我们的研究始于一群河南用户报告他们无法访问某些网站 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Henan-user-report&#39;&gt;19&lt;/a&gt;, &lt;a href=&#39;#cite:net4people442&#39;&gt;56&lt;/a&gt;, &lt;a href=&#39;#cite:net4people416&#39;&gt;57&lt;/a&gt;, &lt;a href=&#39;#cite:ghostcomment&#39;&gt;58&lt;/a&gt;, &lt;a href=&#39;#cite:tsinbei_tcp_timestamps&#39;&gt;59&lt;/a&gt;]&lt;/span&gt;。然后，我们在河南省获得了一台服务器，并确认了地区性防火墙的存在。特别是，如&lt;a href=&#39;#fig:2-waterfall-diag&#39;&gt;图2&lt;/a&gt;所示，我们发现河南地区性防火墙会针对某些服务器名称指示（SNI）和 HTTP Host 值封锁 TLS 和 HTTP 连接，但其运作方式与 GFW 不同。最显著的区别是，河南的地区性防火墙通过向客户端注入一个包含固定 10 字节载荷的 TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST+ACK&lt;/span&gt; 数据包来封锁 TCP 连接。这种独特的 TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包载荷将河南防火墙与 GFW 注入的所有三种类型的数据包区分开来。
        &lt;/p&gt;
        &lt;!-- l. 601 --&gt;&lt;p class=&#39;indent&#39;&gt;   在河南省发现地区性审查自然地引出了一个的问题：中国的其他省份是否也部署了相同或类似的地区性审查？下面，我们将通过全国范围的测量来探讨这个问题。
        &lt;/p&gt;
        &lt;!-- l. 606 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3.1&#34;&gt; &lt;a id=&#34;sec:3.1-experiment&#34; href=&#34;#sec:3.1-experiment&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;3.1.&lt;/span&gt; 实验&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 619 --&gt;&lt;p class=&#39;indent&#39;&gt;   我们的目标是通过比较中国境内外每对主机之间被封锁的域名数量，来量化中国各地 TLS 审查的地区性差异。如&lt;a href=&#39;#tbl:1-experiment-timeline-and-vantage-points&#39;&gt;表1&lt;/a&gt;第二行所总结的，我们在中国的七个城市各获得了两个测量点，包括上海、北京、重庆、广州（广东省）、南京（江苏省）、成都（四川省）和郑州（河南省）。我们还在中国境外的三个地点各设置了两个 VPS：西雅图（美国）、旧金山（美国）和新加坡。我们选择测量点的依据详见&lt;a href=&#39;#sec:7-ethics&#39;&gt;第7节&lt;/a&gt;中的一系列伦理考量。
        &lt;/p&gt;
        &lt;div class=&#39;table-container&#39; id=&#39;tbl:1-experiment-timeline-and-vantage-points&#39;&gt;
        &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:1-experiment-timeline-and-vantage-points&#34;&gt;表1&lt;/a&gt;：实验时间线和测量点。我们总共使用了位于河南省郑州市的China VPS（CVC, AS4837）的14台虚拟主机，位于旧金山（SF）、新加坡（SG）和西雅图（SE）的Akamai Linode（LD, AS63949）的6台虚拟主机，位于北京（BJ）、上海（SH）、重庆（CQ）、广东省广州市（GZ）、四川省成都市（CD）、江苏省南京市（NJ）的腾讯云（TC, AS45090）的12台虚拟主机，以及一台位于美国某大学的裸金属网络流量捕获服务器（TAP）。&lt;/p&gt;
          &lt;div class=&#39;tabular&#39;&gt;
              &lt;table class=&#39;tabular&#39; id=&#39;TBL-1&#39;&gt;
                  &lt;colgroup id=&#39;TBL-1-1g&#39;&gt;
                      &lt;col id=&#39;TBL-1-1&#39; /&gt;
                      &lt;col id=&#39;TBL-1-2&#39; /&gt;
                      &lt;col id=&#39;TBL-1-3&#39; /&gt;
                      &lt;col id=&#39;TBL-1-4&#39; /&gt;
                      &lt;col id=&#39;TBL-1-5&#39; /&gt;
                      &lt;col id=&#39;TBL-1-6&#39; /&gt;
                      &lt;col id=&#39;TBL-1-7&#39; /&gt;
                  &lt;/colgroup&gt;
                  &lt;tr id=&#39;TBL-1-1-&#39;&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-1-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 实验名称 &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-1-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 实验时间 &lt;/td&gt;
                      &lt;td class=&#39;td10&#39; colspan=&#39;2&#39; id=&#39;TBL-1-1-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 实验时长 &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-1-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 中国测量点 &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-1-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 境外测量点 &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-1-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 章节 &lt;/td&gt;
                  &lt;/tr&gt;
                  &lt;tr id=&#39;TBL-1-2-&#39;&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-2-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 识别 &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-2-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 24年7月10日 &lt;/td&gt;
                      &lt;td class=&#39;td10&#39; id=&#39;TBL-1-2-3&#39; style=&#39;white-space:nowrap; text-align:right; border-right: none;&#39;&gt; 1 &lt;/td&gt;
                      &lt;td class=&#39;td01&#39; id=&#39;TBL-1-2-4&#39; style=&#39;white-space:nowrap; text-align:left; border-left: none;&#39;&gt; &amp;nbsp;天 &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-2-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 12 (TC), 2 (CVC: HN) &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-2-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 4 (LD: SG,SE) &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-2-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; §&lt;a href=&#39;#sec:3-detecting-regional-censorship&#39;&gt;3&lt;/a&gt; &lt;/td&gt;
                  &lt;/tr&gt;
                  &lt;tr id=&#39;TBL-1-3-&#39;&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-3-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 特征分析 &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-3-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 23年10月2日 – 24年11月12日 &lt;/td&gt;
                      &lt;td class=&#39;td10&#39; id=&#39;TBL-1-3-3&#39; style=&#39;white-space:nowrap; text-align:right; border-right: none;&#39;&gt; 13 &lt;/td&gt;
                      &lt;td class=&#39;td01&#39; id=&#39;TBL-1-3-4&#39; style=&#39;white-space:nowrap; text-align:left; border-left: none;&#39;&gt; &amp;nbsp;个月 &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-3-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 2 (CVC: HN) &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-3-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 1 (LD: SF), 3 (TC: GZ,BJ,SH) &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-3-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; §&lt;a href=&#39;#sec:4-characterizing-the-censorship-devices&#39;&gt;4&lt;/a&gt; &lt;/td&gt;
                  &lt;/tr&gt;
                  &lt;tr id=&#39;TBL-1-4-&#39;&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-4-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 流量分析 &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-4-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 24年10月31日 &lt;/td&gt;
                      &lt;td class=&#39;td10&#39; id=&#39;TBL-1-4-3&#39; style=&#39;white-space:nowrap; text-align:right; border-right: none;&#39;&gt; 1 &lt;/td&gt;
                      &lt;td class=&#39;td01&#39; id=&#39;TBL-1-4-4&#39; style=&#39;white-space:nowrap; text-align:left; border-left: none;&#39;&gt; &amp;nbsp;小时 &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-4-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; – &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-4-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 1 (TAP: US) &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-4-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; §&lt;a href=&#39;#sec:4.3-how-the-henan-firewall-parses-connections&#39;&gt;4.3&lt;/a&gt; &lt;/td&gt;
                  &lt;/tr&gt;
                  &lt;tr id=&#39;TBL-1-5-&#39;&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-5-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 定位 &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-5-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 23年10月2日 – 23年12月8日 &lt;/td&gt;
                      &lt;td class=&#39;td10&#39; id=&#39;TBL-1-5-3&#39; style=&#39;white-space:nowrap; text-align:right; border-right: none;&#39;&gt; 2 &lt;/td&gt;
                      &lt;td class=&#39;td01&#39; id=&#39;TBL-1-5-4&#39; style=&#39;white-space:nowrap; text-align:left; border-left: none;&#39;&gt; &amp;nbsp;个月 &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-5-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 1 (CVC: HN), 1 (TC: GZ) &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-5-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 1 (LD: SF) &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-5-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; §&lt;a href=&#39;#sec:4.5-where-are-the-censorship-devices-deployed&#39;&gt;4.5&lt;/a&gt; &lt;/td&gt;
                  &lt;/tr&gt;
                  &lt;tr id=&#39;TBL-1-6-&#39;&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-6-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 封锁列表 &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-6-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 23年11月5日 – 24年3月5日 &amp;amp;&lt;br/&gt;24年10月7日 – 25年3月31日 &lt;/td&gt;
                      &lt;td class=&#39;td10&#39; id=&#39;TBL-1-6-3&#39; style=&#39;white-space:nowrap; text-align:right; border-right: none;&#39;&gt; 9 &lt;/td&gt;
                      &lt;td class=&#39;td01&#39; id=&#39;TBL-1-6-4&#39; style=&#39;white-space:nowrap; text-align:left; border-left: none;&#39;&gt; &amp;nbsp;个月 &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-6-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 14 (CVC: HN), 2 (TC: GZ) &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-6-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 2 (LD: SF) &lt;/td&gt;
                      &lt;td class=&#39;td11&#39; id=&#39;TBL-1-6-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; §&lt;a href=&#39;#sec:5-understanding-the-blocklists&#39;&gt;5&lt;/a&gt; &lt;/td&gt;
                  &lt;/tr&gt;
              &lt;/table&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;!-- l. 636 --&gt;&lt;p class=&#39;indent&#39;&gt;   对于中国境内或境外的每个地点的两个 虚拟主机（VPS），我们把其中一个作为客户端，把另一个作为&lt;span class=&#39;ptmri8t-&#39;&gt;水槽服务器&lt;/span&gt;。水槽服务器被配置为接受端口 1 到 65535 上的 TCP 握手。它们会发送&lt;span class=&#39;cmtt-10&#39;&gt;ACK&lt;/span&gt;来确认发送给它们的 TCP 数据，但绝不会向客户端发回任何 TCP 载荷。我们在客户端和水槽服务器上都配置了 &lt;span class=&#39;cmtt-10&#39;&gt;iptables&lt;/span&gt; 规则来丢弃任何传出的 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包。这样，任何一端收到的 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包都一定是由网络路径上的某些中间设备注入的伪造包。因此，我们可以通过检查 TCP 连接是否被重置来确认审查的存在。
        &lt;/p&gt;
        &lt;!-- l. 647 --&gt;&lt;p class=&#39;indent&#39;&gt;   我们在 2024 年 7 月 10 日，在每对客户端和水槽服务器之间发送了包含各种不同 SNI 值的 TLS 流量。具体来说，我们使用了 Tranco 列表 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:LePochat2019tranco&#39;&gt;60&lt;/a&gt;]&lt;/span&gt; 5YZ7N 中排名前 10,000 的域名进行测试。&lt;span class=&#39;footnote-mark&#39;&gt;&lt;a href=&#39;#fn:tranco-list-5YZ7N&#39;&gt;&lt;sup class=&#39;textsuperscript&#39;&gt;2&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt; 为了减少因丢包导致的假阴性概率，我们在同一天重复测试了三次，并在每次测试中，让操作系统控制数据包的重传。
        &lt;/p&gt;
        &lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
            &lt;ol&gt;
              &lt;li class=&#34;footnote-text&#34;&gt;
                &lt;a id=&#34;fn:tranco-list-5YZ7N&#34;&gt;&lt;/a&gt;
                &lt;span class=&#34;footnote-mark&#34;&gt;
                  &lt;sup class=&#34;textsuperscript&#34;&gt;2&lt;/sup&gt;
                &lt;/span&gt;
                &lt;span class=&#34;footnotes-text&#34;&gt;
                  Tranco 列表 ID 5YZ7N，获取于 2023 年 8 月 15 日：
                  &lt;a href=&#34;https://tranco-list.eu/list/5YZ7N/1000000&#34;&gt;https://tranco-list.eu/list/5YZ7N/1000000&lt;/a&gt;。
                &lt;/span&gt;
              &lt;/li&gt;
            &lt;/ol&gt;
          &lt;/div&gt;

        &lt;!-- l. 665 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;局限性。   &lt;/span&gt;理想情况下，我们希望使用多样化的测量点来识别中国潜在的地区性审查。然而，由于获取中国的VPS很困难，我们只能在有限数量的地点和自治系统（AS） 中获取测量点。虽然使用住宅测量点可以让我们从中国更多的网络位置观察到潜在的审查中间设备，但这可能会给不知情的用户和住宅代理提供商带来潜在风险&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Mi2019-resident-evil&#39;&gt;61&lt;/a&gt;]&lt;/span&gt;。出于这个原因，我们专注于使用中国的两家大型 VPS 提供商——China VPS和腾讯云，以避免给个人带来风险或迫害。我们利用了这两家 VPS 提供商提供的所有可用地点，以最大化我们的覆盖范围。我们承认我们的结果仅限于测量 TLS 审查，这可能会遗漏针对其他协议的地区性审查。此外，由于配置错误，我们没能使用新加坡的客户端进行测试，因此错过了从该视角进行的审查测量。
        &lt;/p&gt;
        &lt;!-- l. 742 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3.2&#34;&gt; &lt;a id=&#34;sec:3.2-results&#34; href=&#34;#sec:3.2-results&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;3.2.&lt;/span&gt; 结果&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 745 --&gt;&lt;p class=&#39;indent&#39;&gt;   &lt;a href=&#39;#fig:3-client-to-sink-server-data-matrix&#39;&gt;图3&lt;/a&gt; 显示了不同地区之间被封锁域名的数量。我们首先观察到，从中国发往我们位于新加坡和美国的水槽服务器的连接，受到国家级中国防火长城（GFW）的影响几乎相同，在大约 10,000 个域名中约有 479 个被封锁。最显著的封锁发生在河南省，省级（河南防火墙）和国家级（GFW）审查机制共同拦截，导致了较高的封锁数量。
        &lt;/p&gt;
        &lt;div class=&#39;figure&#39;&gt;
            &lt;p class=&#39;noindent&#39; id=&#39;fig:3-client-to-sink-server-data-matrix&#39;&gt;
                &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/client-to-sink-server-data-matrix-.png&#39; /&gt;
                &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:3-client-to-sink-server-data-matrix&#34;&gt;图3&lt;/a&gt;：该矩阵显示了在不同区域的每对主机之间被封锁的域名数量。对于每对主机，我们发送了包含 Tranco 列表 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:LePochat2019tranco&#39;&gt;60&lt;/a&gt;]&lt;/span&gt; 5YZ7N（生成于 2023 年 8 月 15 日）中排名前 10,000 个域名的 SNI 值的 TLS ClientHello 消息。结果表明：1）河南省存在地区性审查，证据是从河南郑州向中国其他地区的水槽服务器发起连接时，被封锁域名的数量不为零；2）河南的审查不是双向的，因为从外部向河南发起 TLS 连接并未触发任何封锁；3）GFW 维护着一个仅在中国境内访问时才会被审查的封锁列表，证据是由内向外和由外向内测试时被封锁域名数量有差异。
                &lt;/p&gt;
            &lt;/p&gt;
        &lt;/div&gt;
        &lt;!-- l. 756 --&gt;&lt;p class=&#39;indent&#39;&gt;   离开河南的流量受到地区性防火墙的审查，无论水槽服务器的位置如何，即使是发往中国境内其他地区的连接也会受到审查。平均而言，有 122 个域名被河南防火墙封锁。我们没有观察到在河南省内交换的 TLS 连接被封锁；然而，由于我们的客户端和水槽服务器都位于同一个数据中心，我们只能谨慎地得出结论，即河南防火墙不影响该数据中心内部的流量。
        &lt;/p&gt;
        &lt;!-- l. 765 --&gt;&lt;p class=&#39;indent&#39;&gt;   当从河南省郑州连接到中国境外地点（新加坡和西雅图）时，总共有 594 个域名被封锁。这表明两个具有独立封锁列表的防火墙在同时运作，河南防火墙在流量到达 GFW 之前对其进行审查，从而增加了被封锁域名的总数。然而，我们没有观察到从中国其他区域连接到河南或中国境内其他水槽服务器区域时存在任何封锁。这一发现表明，&lt;span class=&#39;ptmri8t-&#39;&gt;河南防火墙是中国已知的第一个部署地区性防火墙的案例。&lt;/span&gt;
        &lt;/p&gt;
        &lt;!-- l. 778 --&gt;&lt;p class=&#39;indent&#39;&gt;   此外，如&lt;a href=&#39;#fig:3-client-to-sink-server-data-matrix&#39;&gt;图3&lt;/a&gt;最后一行所示，从美国到中国不同地点的测试一致地识别出相同的 411 个被 GFW 封锁的域名，只有一个例外：从美国到江苏省的测试检测到 440 个被封锁的域名。进一步分析表明，在江苏省由外向内方向额外被封锁的 29 个域名是 GFW 在由内向外方向封锁的 479 个域名的一个子集。这一发现表明，这 29 个域名的额外审查很可能并不反映江苏省特有的地区性审查。相反，它表明江苏省内的 GFW 被配置为对这29个域名进行双向封锁。
        &lt;/p&gt;
        &lt;!-- l. 790 --&gt;&lt;p class=&#39;indent&#39;&gt;   这些结果尤其值得注意，因为它们显示了远程测量无法触发地区性防火墙，更重要的是，揭示了 GFW 的不对称行为。虽然从中国境内发起的连接平均有 479 个域名被封锁，但从中国境外发起的连接只有 411 个域名被封锁。这种差异表明 GFW 对源自中国境内的流量执行不同的封锁列表。直到最近，人们仍普遍认为 GFW 是对称运作的，无论流量方向如何，都会触发相同的封锁列表。然而，最近的研究表明这种假设是不正确的 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;]&lt;/span&gt;，我们在此的发现与其观测结果一致。
        &lt;/p&gt;
        &lt;!-- l. 836 --&gt;&lt;p class=&#39;indent&#39;&gt;   我们注意到 GFW 和河南防火墙都在不同程度上表现出不对称的封锁。如&lt;a href=&#39;#fig:4a-henan-inside-outside&#39;&gt;图4(a)&lt;/a&gt;所示，虽然离开河南的流量受到地区性防火墙（由内向外）的影响，但进入河南的入站流量（由外向内）完全不会触发地区性防火墙。这与 GFW 形成对比，GFW 是双向的（但其行为根据查询的域名而表现出不对称性）。
        &lt;/p&gt;
        &lt;!-- l. 839 --&gt;&lt;p class=&#39;indent&#39;&gt;   &lt;a href=&#39;#fig:4b-gfw-inside-outside&#39;&gt;图4(b)&lt;/a&gt; 提供了一个清晰的例子来说明这种行为。在我们的案例中，当一个 SNI 值为 &lt;span class=&#39;cmtt-10&#39;&gt;docker.com&lt;/span&gt; 的 TLS ClientHello 从中国境内发送时（由内向外），GFW 会通过三个 TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包触发封锁。然而，当相同的 TLS ClientHello 从中国境外发送时（由外向内），GFW 不会触发任何封锁。另一方面，当发送带有 SNI 值 &lt;span class=&#39;cmtt-10&#39;&gt;youtube.com&lt;/span&gt; 的 TLS ClientHello 数据包时（在此示例中），无论数据包是从中国境内还是境外发送，GFW 都会在两种情况下触发封锁。这种行为表明存在一个明显的域名封锁列表，这些域名仅在从中国境内访问时才会被 GFW 审查。
        &lt;/p&gt;
        &lt;div class=&#34;row&#34;&gt;
            &lt;div class=&#34;col-12 col-md-6&#34;&gt;
              &lt;div class=&#34;figure d-flex flex-column h-100&#34;&gt;
                &lt;p class=&#34;noindent&#34; id=&#34;fig:4a-henan-inside-outside&#34;&gt;
                  &lt;img
                    alt=&#34;PIC&#34;
                    class=&#34;figure-img img-fluid img-full-in-row&#34;
                    src=&#34;../figures/henan-inside-outside-.png&#34;
                  /&gt;
                &lt;/p&gt;
                &lt;div class=&#34;text-center mt-auto mb-2&#34;&gt;
                  &lt;p class=&#34;caption w-100&#34;&gt;&lt;a href=&#34;#fig:4a-henan-inside-outside&#34;&gt;(a)&lt;/a&gt; 河南防火墙&lt;/p&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&#34;col-12 col-md-6&#34;&gt;
              &lt;div class=&#34;figure d-flex flex-column h-100&#34;&gt;
                &lt;p class=&#34;noindent&#34; id=&#34;fig:4b-gfw-inside-outside&#34;&gt;
                  &lt;img
                    alt=&#34;PIC&#34;
                    class=&#34;figure-img img-fluid img-full-in-row&#34;
                    src=&#34;../figures/gfw-inside-outside-.png&#34;
                  /&gt;
                &lt;/p&gt;
                &lt;div class=&#34;text-center mt-auto mb-2&#34;&gt;
                  &lt;p class=&#34;caption w-100&#34;&gt;&lt;a href=&#34;#fig:4b-gfw-inside-outside&#34;&gt;(b)&lt;/a&gt; GFW&lt;/p&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;
          &lt;/div&gt;
          &lt;p class=&#34;caption&#34;&gt;
            &lt;a href=&#34;#fig:4-demo-two-firewalls&#34;&gt;图4&lt;/a&gt;:
            &lt;a href=&#34;#fig:4a-henan-inside-outside&#34;&gt;(a)&lt;/a&gt; 河南防火墙不审查进入河南的入站 TLS 或 HTTP 流量，这与 GFW 采用的双向审查形成对比。
            &lt;a href=&#34;#fig:4b-gfw-inside-outside&#34;&gt;(b)&lt;/a&gt; GFW 的 TLS 和 HTTP 审查机器检查进出中国的双向流量；然而，某些域名仅在从中国境内访问时才被审查。在此示例中，虽然从中国境内发送带有 SNI 值 &lt;span class=&#34;cmtt-10&#34;&gt;docker.com&lt;/span&gt; 的 TLS ClientHello 可以触发 GFW 发送三个 TCP &lt;span class=&#34;cmtt-10&#34;&gt;RST&lt;/span&gt; 数据包，但从中国境外发送时则不会触发任何封锁。
          &lt;/p&gt;
        &lt;!-- l. 841 --&gt;&lt;p class=&#39;indent&#39;&gt;   在我们检测地区性审查的实验中，我们无意中发现了 GFW 运作机制的一个重要方面，而这直到最近才被记录下来 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;]&lt;/span&gt;。新观察到的 GFW 和地区性防火墙共有的不对称性，表明审查测量需要由内向外的测量，以全面捕捉审查的范围和细微差别。仅仅依赖由外向内的远程测量，正如其他许多研究中常见的那样，则无法提供此类审查机制的全面情况。
        &lt;/p&gt;
        &lt;!-- l. 843 --&gt;&lt;p class=&#39;indent&#39;&gt;   为了进一步证实 GFW 的不对称行为，我们提供了一个域名列表，这些域名仅在从中国境内发送 TLS ClientHello 消息时被封锁，如&lt;a href=&#39;#tbl:2-gfw-blocked-domains&#39;&gt;表2&lt;/a&gt;所示。在我们的实验中，10,000 个域名中有 68 个在从中国境外测试时未触发任何审查，仅在从中国境内探测时才被封锁。这些域名包括流行的网站，如 &lt;span class=&#39;cmtt-10&#39;&gt;google.com&lt;/span&gt;、&lt;span class=&#39;cmtt-10&#39;&gt;nyt.com&lt;/span&gt; 和 &lt;span class=&#39;cmtt-10&#39;&gt;docker.com&lt;/span&gt;。该列表提供了具体的证据，证明 GFW 根据流量来源和相关域名选择性地执行其封锁列表。
        &lt;/p&gt;
        &lt;div class=&#39;table-container&#39; id=&#39;tbl:2-gfw-blocked-domains&#39;&gt;
            &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:2-gfw-blocked-domains&#34;&gt;表2&lt;/a&gt;：仅能从中国境内发送 TLS ClientHello 消息时触发 GFW 封锁的部分域名示例。截至 2024 年 7 月 10 日，这些域名在从中国境外向境内发送时未触发审查。在我们测试的 10,000 个 Tranco 热门域名中，有 68 个域名仅在由内向外发送时触发封锁，没有域名仅在由外向内发送时触发封锁。&lt;/p&gt;
            &lt;div class=&#39;tabular&#39;&gt;
              &lt;table class=&#39;tabular&#39; id=&#39;TBL-2&#39;&gt;
                &lt;colgroup id=&#39;TBL-2-1g&#39;&gt;
                  &lt;col id=&#39;TBL-2-1&#39;/&gt;
                &lt;/colgroup&gt;
                &lt;colgroup id=&#39;TBL-2-2g&#39;&gt;
                  &lt;col id=&#39;TBL-2-2&#39;/&gt;
                &lt;/colgroup&gt;
                &lt;colgroup id=&#39;TBL-2-3g&#39;&gt;
                  &lt;col id=&#39;TBL-2-3&#39;/&gt;
                &lt;/colgroup&gt;
                &lt;tr id=&#39;TBL-2-1-&#39;&gt;
                  &lt;td class=&#39;td11 text-nowrap text-left&#39; id=&#39;TBL-2-1-1&#39;&gt;binance.com&lt;/td&gt;
                  &lt;td class=&#39;td11 text-nowrap text-left&#39; id=&#39;TBL-2-1-2&#39;&gt;godaddy.com&lt;/td&gt;
                  &lt;td class=&#39;td11 text-nowrap text-left&#39; id=&#39;TBL-2-1-3&#39;&gt;note.com&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-2-&#39;&gt;
                  &lt;td class=&#39;td11 text-nowrap text-left&#39; id=&#39;TBL-2-2-1&#39;&gt;cdninstagram.com&lt;/td&gt;
                  &lt;td class=&#39;td11 text-nowrap text-left&#39; id=&#39;TBL-2-2-2&#39;&gt;google.com&lt;/td&gt;
                  &lt;td class=&#39;td11 text-nowrap text-left&#39; id=&#39;TBL-2-2-3&#39;&gt;nyt.com&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-3-&#39;&gt;
                  &lt;td class=&#39;td11 text-nowrap text-left&#39; id=&#39;TBL-2-3-1&#39;&gt;docker.com&lt;/td&gt;
                  &lt;td class=&#39;td11 text-nowrap text-left&#39; id=&#39;TBL-2-3-2&#39;&gt;google.com.hk&lt;/td&gt;
                  &lt;td class=&#39;td11 text-nowrap text-left&#39; id=&#39;TBL-2-3-3&#39;&gt;tiktokcdn.com&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-4-&#39;&gt;
                  &lt;td class=&#39;td11 text-nowrap text-left&#39; id=&#39;TBL-2-4-1&#39;&gt;gmail.com&lt;/td&gt;
                  &lt;td class=&#39;td11 text-nowrap text-left&#39; id=&#39;TBL-2-4-2&#39;&gt;linktr.ee&lt;/td&gt;
                  &lt;td class=&#39;td11 text-nowrap text-left&#39; id=&#39;TBL-2-4-3&#39;&gt;torproject.org&lt;/td&gt;
                &lt;/tr&gt;
              &lt;/table&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;!-- l. 878 --&gt;&lt;h2 class=&#34;sectionHead&#34; id=&#34;4&#34;&gt;&lt;a id=&#34;sec:4-characterizing-the-censorship-devices&#34; href=&#34;#sec:4-characterizing-the-censorship-devices&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;4.&lt;/span&gt; 审查设备特征分析&lt;/a&gt;&lt;/h2&gt;
        &lt;!-- l. 881 --&gt;&lt;p class=&#39;indent&#39;&gt;   自 2023 年 10 月以来，我们进行了一系列实验来分析审查设备的特征，并理解中国防火长城（GFW）与河南地区性审查设备之间的差异。在本节中，我们将回答几个研究问题：地区性审查设备位于何处？哪些数据包可以触发河南 SNI 防火墙？河南防火墙监控哪些端口？注入的TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 包是否具有特定的指纹？河南防火墙是否会引发残余审查？
        &lt;/p&gt;
        &lt;!-- l. 892 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4.1&#34;&gt; &lt;a id=&#34;sec:4.1-methodology&#34; href=&#34;#sec:4.1-methodology&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;4.1.&lt;/span&gt; 方法&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 897 --&gt;&lt;p class=&#39;indent&#39;&gt;   如前所述，我们针对地区性和国家级两种防火墙的具体特征制定了一套测量方法。为了精确评估每种防火墙的影响，我们的方法单独隔离并分析这两个系统。这种基于我们初步观察设计的测量方法，是我们进行全面测量实验的基础。我们的测量方法概述如下。
        &lt;/p&gt;
        &lt;!-- l. 899 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;获取测量点。   &lt;/span&gt;我们总共在中国郑州（河南）通过China VPS（AS 4837）获取了 10 个测量点，在广州、北京和上海通过腾讯云（AS 45090）获取了两台 VPS，以及在美国旧金山通过 Akamai 的 Linode（AS 63949）获取了两台 VPS。位于广州、北京、上海和旧金山的 VPS 作为水槽服务器，被设置为监听在从 1 到 65535 的所有端口以接受 TCP 连接，但不向发送方发回任何TCP载荷数据。我们所有的机器都运行 Ubuntu 22.04，并使用 IP2Location &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:ip2location&#39;&gt;62&lt;/a&gt;]&lt;/span&gt; 数据库验证了它们宣称的位置。我们在&lt;a href=&#39;#tbl:1-experiment-timeline-and-vantage-points&#39;&gt;表1&lt;/a&gt;中总结了我们实验的时间线和每个实验使用的测量点。
        &lt;/p&gt;
        &lt;!-- l. 908 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;在 VPS 上丢弃传出的 RST 数据包。   &lt;/span&gt;我们在客户端和水槽服务器上都配置了 &lt;span class=&#39;cmtt-10&#39;&gt;iptables &lt;/span&gt;规则来丢弃所有传出的 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包。这种配置确保客户端收到的任何 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包都一定是由中间设备伪造的。
        &lt;/p&gt;
        &lt;!-- l. 912 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;触发基于 TLS SNI 的审查。   &lt;/span&gt;我们通过发送在 SNI 字段中包含可能被审查域名的 TLS ClientHello 来触发审查。由于水槽服务器被配置为不发送任何带有载荷的数据包，并且在观察到 &lt;span class=&#39;cmtt-10&#39;&gt;FIN&lt;/span&gt; 或 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包之前不切断连接，我们预期收到的任何 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包都一定是防火墙注入的伪造包。如果包含该域名的 TLS 连接收到了 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包，我们就将该域名标记为被审查。
        &lt;/p&gt;
        &lt;!-- l. 919 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;触发基于 HTTP Host 的审查。   &lt;/span&gt;为了触发 HTTP 审查，我们发送了 HTTP GET 请求，请求的 Host 头部包含被禁止的域名：
        &lt;div style=&#34;text-align: center;&#34;&gt;
          &lt;code id=&#34;verbatim-1&#34; style=&#34;background: none;&#34;&gt;
            GET / HTTP/1.1\r\nHost: example.com\r\n
          &lt;/code&gt;
        &lt;/div&gt;
        &lt;/p&gt;

        &lt;!-- l. 925 --&gt;&lt;p class=&#39;nopar&#39;&gt; 虽然我们后来发现河南防火墙不需要完整的 TCP 握手来触发封锁，但在发送 HTTP 请求之前，我们仍然完成了 TCP 握手，这使得我们对于河南防火墙的测试方法与对 GFW 的测试方法一致。如果包含该域名的 HTTP GET 请求收到了 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包，我们就将该域名标记为被审查。
        &lt;/p&gt;
        &lt;!-- l. 940 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;隔离河南防火墙。   &lt;/span&gt;为了区分河南防火墙和 GFW 的响应，我们识别了每种防火墙的独特指纹。先前的工作记录了 GFW 在观察到包含禁止的SNI的 TLS ClientHello 消息时，会向连接的两端注入最多三个 &lt;span class=&#39;cmtt-10&#39;&gt;RST+ACK&lt;/span&gt; 数据包来中断连接 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Chai2019a&#39;&gt;2&lt;/a&gt;, &lt;a href=&#39;#cite:Bock2020b&#39;&gt;63&lt;/a&gt;]&lt;/span&gt;。相比之下，河南防火墙仅向连接的客户端注入单个 &lt;span class=&#39;cmtt-10&#39;&gt;RST+ACK&lt;/span&gt; 数据包。此外，河南防火墙的 &lt;span class=&#39;cmtt-10&#39;&gt;RST+ACK&lt;/span&gt; 数据包包含载荷，使其易于与 GFW 的响应区分开来。我们将在&lt;a href=&#39;#sec:4.4-how-the-henan-firewall-blocks-traffic&#39;&gt;第4.4节&lt;/a&gt;中对此进行更详细的介绍。
        &lt;/p&gt;
        &lt;!-- l. 952 --&gt;&lt;p class=&#39;indent&#39;&gt;   最后，我们从河南的测量点向广州、北京和上海的服务器发送探测包，以确保我们的流量不会路由到中国境外（在边境可能会遇到 GFW），但仍然受到河南地区性防火墙的影响。
        &lt;/p&gt;
        &lt;!-- l. 972 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;局限性。   &lt;/span&gt;我们在河南省的测量仅限于单个自治系统（AS），即中国联通（AS 4837），这是因为在中国获取可用于审查测量的测量点存在困难，并且需要考虑伦理问题。因此，我们的实证结果仅限于这家互联网服务提供商（ISP）的网络环境。节点的缺乏限制了我们确认或描述河南其他 ISP 或 AS 审查的能力。
        &lt;/p&gt;
        &lt;!-- l. 989 --&gt;&lt;p class=&#39;indent&#39;&gt;   虽然用户报告表明河南的 ISP 采用了地区特定的审查，但据报告审查的实施方式有所不同 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Henan-user-report-1&#39;&gt;64&lt;/a&gt;]&lt;/span&gt;。例如，Github 用户 5e2t 报告称，中国移动河南公司审查其在蜂窝数据网络上的流量，并且能够重组间隔很近的 TCP 数据包 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Henan-user-report-1&#39;&gt;64&lt;/a&gt;]&lt;/span&gt;，这与我们在&lt;a href=&#39;#sec:4.3-how-the-henan-firewall-parses-connections&#39;&gt;第4.3节&lt;/a&gt;中观察到的中国联通河南的行为不同。因此，我们的结果应被理解为仅反映了中国联通河南的审查情况，而不一定代表全省所有 ISP 的审查情况。
        &lt;/p&gt;
        &lt;!-- l. 1013 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4.2&#34;&gt; &lt;a id=&#34;sec:4.2-what-traffic-is-targeted&#34; href=&#34;#sec:4.2-what-traffic-is-targeted&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;4.2.&lt;/span&gt; 河南防火墙针对哪些流量&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 1016 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;河南防火墙是否对流量进行抽样监控和审查？   &lt;/span&gt;据观察，一些审查者有时仅监控和审查一部分流量，这可能是为了减少其审查设备的计算负载 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Wu2023a&#39;&gt;15&lt;/a&gt; §6.3]&lt;/span&gt;。然而，我们没有观察到河南防火墙有任何流量采样或概率性封锁行为。我们观察到河南防火墙持续封锁其封锁列表上的域名。我们连续发送了 1,000 个包含被禁止域名的 ClientHello 消息，每个请求都使用一对不同的端口进行发送，并带有微小的间隔。我们建立的每个连接都收到了 TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包，这表明河南防火墙对被禁域名的封锁触发率为 100%。
        &lt;/p&gt;
        &lt;!-- l. 1027 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;河南防火墙监控哪些端口？   &lt;/span&gt;先前的工作表明，GFW 的 TLS ESNI 审查中间设备监控所有端口，即 1-65535 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Bock2020ESNI&#39;&gt;10&lt;/a&gt;]&lt;/span&gt;。为了测量河南防火墙，我们向位于中国广州的水槽服务器的所有端口发送了带有已知被禁 SNI 的 TLS ClientHello 消息。我们发现，与 GFW 类似，河南防火墙监控流向任何 TCP 端口号（范围在 1 到 65535 之间）的 TLS 流量。
        &lt;/p&gt;
        &lt;!-- l. 1034 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;河南防火墙是双向的吗？   &lt;/span&gt;由于在受审查区域获取测量点存在难度和限制，研究人员通常选择从外部向内进行测量，而不是从内部向外测量。特别是在中国，研究 GFW 的工作 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;3&lt;/a&gt;, &lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;4&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;]&lt;/span&gt; 使用了中国境外的测量点，因为 GFW 具有双向性。然而，正如&lt;a href=&#39;#sec:3-detecting-regional-censorship&#39;&gt;第3节&lt;/a&gt;所述，从中国境外发送探测不会触发河南防火墙，因为河南的防火墙只审查离开河南的流量。如&lt;a href=&#39;#fig:3-client-to-sink-server-data-matrix&#39;&gt;图3&lt;/a&gt;所示，我们通过在河南节点和中国其他地区的节点之间发送包含 Tranco 列表 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:LePochat2019tranco&#39;&gt;60&lt;/a&gt;]&lt;/span&gt; 5YZ7N 中不同 SNI 值的 TLS ClientHello 消息来测试这一点。我们发现只有离开河南的流量被河南防火墙封锁。先前的工作也观察到 GFW 存在类似的不对称封锁行为 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;, &lt;a href=&#39;#cite:Bock2020ESNI&#39;&gt;10&lt;/a&gt;]&lt;/span&gt;。
        &lt;/p&gt;
        &lt;!-- l. 1064 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4.3&#34;&gt; &lt;a id=&#34;sec:4.3-how-the-henan-firewall-parses-connections&#34; href=&#34;#sec:4.3-how-the-henan-firewall-parses-connections&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;4.3.&lt;/span&gt; 河南防火墙如何解析连接&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 1067 --&gt;&lt;p class=&#39;indent&#39;&gt;   在本节中，我们研究河南防火墙和 GFW 的流量解析逻辑。我们进行实验以检查触发河南防火墙和 GFW 审查的 TCP 握手要求。我们还使用 DPYProxy &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Niere2023a&#39;&gt;65&lt;/a&gt;]&lt;/span&gt; 来测试这两种防火墙的 TCP 和 TLS 重组能力，以及是否存在残余审查。我们在&lt;a href=&#39;#tbl:3-parsing-logic-of-the-gfw-and-the-henan-firewall&#39;&gt;表3&lt;/a&gt;中总结了我们的发现。
        &lt;/p&gt;
        &lt;div class=&#34;table-container&#34; id=&#34;tbl:3-parsing-logic-of-the-gfw-and-the-henan-firewall&#34;&gt;
          &lt;p class=&#34;caption&#34;&gt;
            &lt;a href=&#34;#tbl:3-parsing-logic-of-the-gfw-and-the-henan-firewall&#34;&gt;表3&lt;/a&gt;：GFW 和河南防火墙的流量解析逻辑。河南防火墙似乎是无状态的，并且在应对不同网络流量时不如 GFW 健壮。
          &lt;/p&gt;

          &lt;div class=&#34;tabular&#34;&gt;
            &lt;table class=&#34;tabular&#34; id=&#34;TBL-3&#34;&gt;
              &lt;colgroup id=&#34;TBL-3-1g&#34;&gt;
                &lt;col id=&#34;TBL-3-1&#34; /&gt;
                &lt;col id=&#34;TBL-3-2&#34; /&gt;
                &lt;col id=&#34;TBL-3-3&#34; /&gt;
              &lt;/colgroup&gt;

              &lt;tr id=&#34;TBL-3-1-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-3-1-1&#34;&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-3-1-2&#34;&gt;
                  &lt;span class=&#34;ptmb8t-x-x-90&#34;&gt;GFW     &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-3-1-3&#34;&gt;
                  &lt;span class=&#34;ptmb8t-x-x-90&#34;&gt;河南防火墙   &lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-3-2-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-3-2-1&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;需要看到 SYN              &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-3-2-2&#34;&gt;
                  &lt;span class=&#34;pzdr-x-x-90&#34;&gt;✓        &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-3-2-3&#34;&gt;
                  &lt;span class=&#34;pzdr-x-x-90&#34;&gt;✗             &lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-3-3-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-3-3-1&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;需要看到 SYN+ACK   &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-3-3-2&#34;&gt;
                  &lt;span class=&#34;pzdr-x-x-90&#34;&gt;✗        &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-3-3-3&#34;&gt;
                  &lt;span class=&#34;pzdr-x-x-90&#34;&gt;✗             &lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-3-4-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-3-4-1&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;支持TCP重组        &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-3-4-2&#34;&gt;
                  &lt;span class=&#34;pzdr-x-x-90&#34;&gt;✓        &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-3-4-3&#34;&gt;
                  &lt;span class=&#34;pzdr-x-x-90&#34;&gt;✗             &lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-3-5-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-3-5-1&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;支持TLS重组        &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-3-5-2&#34;&gt;
                  &lt;span class=&#34;pzdr-x-x-90&#34;&gt;✗        &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-3-5-3&#34;&gt;
                  &lt;span class=&#34;pzdr-x-x-90&#34;&gt;✗             &lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-3-6-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-3-6-1&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;TCP 头部长度要求   &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-3-6-2&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;任意   &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-3-6-3&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;仅 20 字节    &lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;
            &lt;/table&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;!-- l. 1097 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;TCP 握手完整性要求。   &lt;/span&gt;网络中间设备的设计者通常需要在流量解析逻辑的健壮性和效率之间进行权衡。例如，由于互联网的非对称路由特性，以及河南防火墙和 GFW 并非总是客户端或服务器的直接邻居（如&lt;a href=&#39;#tbl:5-results-from-our-ttl-limited-probing-experiment&#39;&gt;表5&lt;/a&gt;所示），网络中间设备可能只能观察到单向的流量。这种特性常常使得中间设备的设计者放弃使用完整的 TCP 三次握手来追踪 TCP 连接并进行审查。在 2024 年 10 月 10 日，我们从河南的测量点测试了河南防火墙和 GFW 对 TCP 握手完整性的要求。我们发送了一个 TCP 数据包，其载荷是一个包含被禁止域名 &lt;span class=&#39;cmtt-10&#39;&gt;011.com&lt;/span&gt; 作为 SNI 的 TLS ClientHello 消息，发送该数据包之前：1) 我们发送了来自客户端的 SYN 数据包，或 2) 我们发送了来自客户端的 SYN 数据包和来自服务器的 SYN+ACK 数据包，或 3) 我们根本没有发送任何其他数据包。
        &lt;/p&gt;
        &lt;!-- l. 1112 --&gt;&lt;p class=&#39;indent&#39;&gt;   如&lt;a href=&#39;#tbl:3-parsing-logic-of-the-gfw-and-the-henan-firewall&#39;&gt;表3&lt;/a&gt;所总结的，虽然 GFW 需要观察到来自客户端的 SYN 数据包（但不需要来自服务器的 SYN+ACK 数据包）才能触发审查 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;]&lt;/span&gt;，但河南防火墙不需要观察到任何 TCP 握手数据包即可被触发。
        &lt;/p&gt;
        &lt;!-- l. 1117 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;。   &lt;/span&gt;TCP分段能够将较大的 TCP 载荷分割成较小的载荷。在规避审查的背景下，将 TLS ClientHello 消息分割成多个 TCP 分段已被用于绕过不对数据包进行重组的无状态审查者。然而，我们确认 GFW 执行 TCP 重组，因此是有状态的。另一方面，我们发现河南防火墙不进行 TCP 重组，因此可以通过将 ClientHello 的 TCP 载荷分割成多个 TCP 分段（SNI 分布在这些分段之间）来绕过它。我们通过从河南的测量点向广州的 VPS 发起一个带有被禁止 SNI 的 TLS 连接，并将 ClientHello 分割成两个分段（第二个分段包含被禁止的域名）来测试这一点。我们观察到，虽然完整的 ClientHello 消息被河南防火墙封锁，但如果第一个分段中不包含完整的 SNI 扩展，则可以绕过河南防火墙。
        &lt;/p&gt;
        &lt;!-- l. 1132 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;TLS 分片。   &lt;/span&gt;虽然 TCP分段长期以来被用来绕过无状态审查者，但 TLS 分片的使用直到最近才由 Niere 等人 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Niere2023a&#39;&gt;65&lt;/a&gt;]&lt;/span&gt; 分析并在他们的 DPYProxy 工具中实现。在 TLS 消息被封装到 TCP 分段之前，它首先被包含在一个称为 TLS 记录的结构中。鉴于 TLS 消息的最大大小超过了 TLS 记录的最大允许大小，TLS 标准允许将 TLS 消息分割到多个 TLS 记录中。Niere 等人 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Niere2023a&#39;&gt;65&lt;/a&gt;]&lt;/span&gt; 发现 GFW 不执行 TLS 重组，因此可以通过将 TLS ClientHello 消息分片到多个 TLS 记录中（其中 SNI 被分割到同一 TCP 载荷内的多个 TLS 分片中）来绕过它。我们确认，截至 2024 年 4 月 4 日，河南防火墙和 GFW 都不执行 TLS 重组，因此可以通过 TLS ClientHello 分片来绕过它们。
        &lt;/p&gt;

        &lt;!-- l. 1183 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;TCP 头部长度必须为 20 字节。   &lt;/span&gt;TCP 头部的第 13 个字节的前四个有效位表示 TCP 数据偏移量，它指定了 TCP 头部的长度（以 32 位字为单位）。当没有 TCP 选项存在时，TCP 数据偏移字段的最小值为 &lt;span class=&#39;cmr-10&#39;&gt;5&lt;/span&gt; 个字（20 字节），最大值为 &lt;span class=&#39;cmr-10&#39;&gt;15&lt;/span&gt; 个字（60 字节）。
        &lt;/p&gt;
        &lt;!-- l. 1190 --&gt;&lt;p class=&#39;indent&#39;&gt;   我们发现河南防火墙要求 TCP 头部长度必须正好是 20 字节才能正确解析和封锁 TLS ClientHello 或 HTTP 请求消息。我们在 2024 年 10 月 17 日，通过从河南的测量点向广州的水槽服务器发送包含被禁止消息（例如，带有被禁止 SNI &lt;span class=&#39;cmtt-10&#39;&gt;011.com&lt;/span&gt; 的 TLS ClientHello 消息）并设置不同的 TCP 选项来进行测试。在改变 TCP 头部长度的同时，我们确保 TCP 选项始终是四字节的倍数，以符合 TCP 头部的 32 位字对齐要求。我们测试的 TCP 选项包括常见的选项，如最大分段大小（MSS）、窗口缩放、时间戳、选择性确认许可（SAckOk）、无操作（NOP）、选项列表结束（EOL），以及不常用的自定义 TCP 选项。我们发现，只要设置了任何 TCP 选项，河南防火墙就不会封锁连接。
        &lt;/p&gt;
        &lt;!-- l. 1211 --&gt;&lt;p class=&#39;indent&#39;&gt;   一个自然提出的假设是，河南防火墙不解析 TCP 头部中的 TCP 头部长度字段，并错误地假设 TCP 头部长度始终为 20 字节。这样，当 TCP 头部因 TCP 选项而超过 20 字节时，它会将 TCP 选项视为 TCP 载荷的一部分，从而无法识别完整的 TLS ClientHello 或 HTTP 请求消息。然而，我们证伪了这一假设，并确认河南防火墙确实解析了 TCP 头部长度字段。具体来说，我们首先发送了带有被禁止 SNI &lt;span class=&#39;cmtt-10&#39;&gt;011.com&lt;/span&gt; 且 TCP 头部未设置任何 TCP 选项的 TLS ClientHello 消息，并确认该消息被河南防火墙封锁。如果河南防火墙不解析 TCP 头部长度字段，那么无论我们在 TCP 头部中放入什么 TCP 头部长度值，该消息都应该被封锁。我们将 TCP 头部中的 4 位 TCP 头部长度字段更改为所有 &lt;span class=&#39;cmr-10&#39;&gt;2&lt;/span&gt;&lt;sup&gt;&lt;span class=&#39;cmr-7&#39;&gt;4&lt;/span&gt;&lt;/sup&gt; 种可能的值（从 0 到 15），并为每个 TCP 数据包重新计算了正确的 TCP 校验和，发现河南防火墙仅在 TCP 头部长度值为 &lt;span class=&#39;cmr-10&#39;&gt;5&lt;/span&gt; 个字（20 字节）时才封锁连接。该实验表明&lt;span class=&#39;ptmri8t-&#39;&gt;河南防火墙确实解析了 TCP 头部中的 TCP 头部长度字段，但有一个条件，即仅在 TCP 头部长度为 20 字节时才封锁连接。&lt;/span&gt;
        &lt;/p&gt;
        &lt;!-- l. 1231 --&gt;&lt;p class=&#39;indent&#39;&gt;   虽然我们无法确定此条件背后的意图——也许是审查者的疏忽——但这引出了一个重要问题：由于此条件的存在，有多少真实世界的流量避免了被检测？我们在美国的一所大学网络进行了测试。具体来说，我们使用 Retina &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:wan2022retina&#39;&gt;66&lt;/a&gt;]&lt;/span&gt; 在 2024 年 10 月 31 日下午 3:56:14 到 4:56:14（UTC–7）的一个小时内捕获了校园网络上所有流量的 TCP 头部长度字段。总共，我们收集了 231 亿个 TCP 数据包和 50 亿个 TLS 数据包。如&lt;a href=&#39;#fig:5-header-length&#39;&gt;图5&lt;/a&gt;所示，只有 22% 的 TCP 数据包头部长度为 20 字节，只有 19% 的 TLS 数据包头部长度为 20 字节。这一结果表明，河南防火墙可能只能审查大约 20% 的目标连接。
        &lt;/p&gt;
        &lt;div class=&#39;figure&#39;&gt;
            &lt;p class=&#39;noindent&#39; id=&#39;fig:5-header-length&#39;&gt;
                &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/header-length-.png&#39; /&gt;
                &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:5-header-length&#34;&gt;图5&lt;/a&gt;：2024 年 10 月 31 日在一所大学网络上捕获的一小时内所有 TCP 和 TLS 数据包的 TCP 头部长度字段分布。总共捕获了约 231 亿个 TCP 数据包和 50 亿个 TLS 数据包。只有 22% 的 TCP 数据包头部长度为 20 字节，而只有 19% 的 TLS 数据包头部长度为 20 字节。这一评估结果表明，河南防火墙可能只能审查大约 20% 的目标连接。
            &lt;/p&gt;
        &lt;/div&gt;
        &lt;!-- l. 1255 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4.4&#34;&gt; &lt;a id=&#34;sec:4.4-how-the-henan-firewall-blocks-traffic&#34; href=&#34;#sec:4.4-how-the-henan-firewall-blocks-traffic&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;4.4.&lt;/span&gt; 河南防火墙如何封锁流量&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 1258 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;河南防火墙是否采用残余审查？   &lt;/span&gt;残余审查是审查者经常使用的一种手段，即在检测并打断两台主机之间的通讯后，在一定时间内（通常是 90 秒或 180 秒）继续封锁这两个主机（源IP、目的IP、目的端口 - 三元组）之间的所有后续连接。这种现象已被多项研究 GFW 的先前工作记录在案 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Clayton2006a&#39;&gt;6&lt;/a&gt;, &lt;a href=&#39;#cite:Rambert2021a&#39;&gt;8&lt;/a&gt;, &lt;a href=&#39;#cite:Bock2021a&#39;&gt;67&lt;/a&gt;]&lt;/span&gt;。我们发现河南防火墙不执行任何残余审查。在河南防火墙进行任何重置注入后，我们仍然能够使用相同的三元组建立连接。
        &lt;/p&gt;
        &lt;!-- l. 1277 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;注入行为指纹分析。   &lt;/span&gt;延续前人对 GFW 不断演变的注入行为进行指纹分析的工作 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Wang2017a&#39;&gt;7&lt;/a&gt; §2.1, &lt;a href=&#39;#cite:Niere2023a&#39;&gt;65&lt;/a&gt; §3.1, &lt;a href=&#39;#cite:klzgrad2009gfw&#39;&gt;68&lt;/a&gt;, &lt;a href=&#39;#cite:gfwrev2010http&#39;&gt;69&lt;/a&gt;, &lt;a href=&#39;#cite:Weaver2009a&#39;&gt;70&lt;/a&gt; §7.1.6]&lt;/span&gt;，我们对 GFW 和河南防火墙注入的 TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包进行了指纹分析。利用&lt;a href=&#39;#sec:4.5-where-are-the-censorship-devices-deployed&#39;&gt;第4.5节&lt;/a&gt;中收集的 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包，我们分析了它们的数据包特征，例如 IP 标识符（IP ID）、IP 生存时间（IP TTL）、TCP 标志、TCP 载荷和载荷长度。
        &lt;/p&gt;
        &lt;!-- l. 1287 --&gt;&lt;div class=&#34;table-container&#34; id=&#34;tbl:4-injection-behaviors-packet-fingerprints&#34;&gt;
          &lt;p class=&#34;caption&#34;&gt;
            &lt;a href=&#34;#tbl:4-injection-behaviors-packet-fingerprints&#34;&gt;表4&lt;/a&gt;：河南防火墙与三种类型的 GFW TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 注入器的注入行为和数据包指纹比较。所有注入均由基于 TLS SNI 的审查触发。显示的 IP TTL 是观测值；它们的初始值应该更高。&#39;C&#39; 和 &#39;S&#39; 分别指客户端和服务器。
          &lt;/p&gt;

          &lt;div class=&#34;tabular&#34;&gt;
            &lt;table class=&#34;tabular&#34; id=&#34;TBL-4&#34;&gt;
              &lt;colgroup id=&#34;TBL-4-1g&#34;&gt;
                &lt;col id=&#34;TBL-4-1&#34; /&gt;
                &lt;col id=&#34;TBL-4-2&#34; /&gt;
                &lt;col id=&#34;TBL-4-3&#34; /&gt;
                &lt;col id=&#34;TBL-4-4&#34; /&gt;
                &lt;col id=&#34;TBL-4-5&#34; /&gt;
              &lt;/colgroup&gt;

              &lt;tr id=&#34;TBL-4-1-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-4-1-1&#34;&gt;              &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-1-2&#34;&gt;&lt;span class=&#39;ptmb8t-x-x-70&#39;&gt;GFW (I) &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-1-3&#34;&gt;&lt;span class=&#39;ptmb8t-x-x-70&#39;&gt;GFW (II) &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-1-4&#34;&gt;&lt;span class=&#39;ptmb8t-x-x-70&#39;&gt;GFW (III) &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-1-5&#34;&gt;&lt;span class=&#39;ptmb8t-x-x-70&#39;&gt;河南防火墙 &lt;/span&gt;&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-4-2-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-4-2-1&#34;&gt;&lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;观测到的 IP TTL &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-2-2&#34;&gt; &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;55–118  &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-2-3&#34;&gt; &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;39–238   &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-2-4&#34;&gt;   &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;248       &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-2-5&#34;&gt;      &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;58            &lt;/span&gt;&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-4-3-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-4-3-1&#34;&gt;&lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;IP ID                     &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-3-2&#34;&gt;    &lt;span class=&#39;colorbox&#39; id=&#39;colorbox1&#39;&gt;&lt;span class=&#39;cmtt-8x-x-87&#39;&gt;00&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox2&#39;&gt;&lt;span class=&#39;cmtt-8x-x-87&#39;&gt;00&lt;/span&gt; &lt;/span&gt;  &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-3-3&#34;&gt;   &lt;span class=&#39;colorbox&#39; id=&#39;colorbox3&#39;&gt;&lt;span class=&#39;cmtt-8x-x-87&#39;&gt;00&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox4&#39;&gt;&lt;span class=&#39;cmtt-8x-x-87&#39;&gt;A3&lt;/span&gt; &lt;/span&gt; &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;– &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox5&#39;&gt;&lt;span class=&#39;cmtt-8x-x-87&#39;&gt;FE&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox6&#39;&gt;&lt;span class=&#39;cmtt-8x-x-87&#39;&gt;5F&lt;/span&gt; &lt;/span&gt; &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-3-4&#34;&gt;    &lt;span class=&#39;colorbox&#39; id=&#39;colorbox7&#39;&gt;&lt;span class=&#39;cmtt-8x-x-87&#39;&gt;99&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox8&#39;&gt;&lt;span class=&#39;cmtt-8x-x-87&#39;&gt;16&lt;/span&gt; &lt;/span&gt; &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;– &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox9&#39;&gt;&lt;span class=&#39;cmtt-8x-x-87&#39;&gt;99&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox10&#39;&gt;&lt;span class=&#39;cmtt-8x-x-87&#39;&gt;33&lt;/span&gt; &lt;/span&gt; &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-3-5&#34;&gt;       &lt;span class=&#39;colorbox&#39; id=&#39;colorbox11&#39;&gt;&lt;span class=&#39;cmtt-8x-x-87&#39;&gt;00&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox12&#39;&gt;&lt;span class=&#39;cmtt-8x-x-87&#39;&gt;01&lt;/span&gt; &lt;/span&gt;    &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-4-4-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-4-4-1&#34;&gt;&lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;IP 标志 (DF)         &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-4-2&#34;&gt;   &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;0       &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-4-3&#34;&gt;    &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;1        &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-4-4&#34;&gt;    &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;0         &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-4-5&#34;&gt;      &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;0             &lt;/span&gt;&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-4-5-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-4-5-1&#34;&gt;&lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;TCP 载荷长度 &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-5-2&#34;&gt; &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;0 字节   &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-5-3&#34;&gt;  &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;0 字节    &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-5-4&#34;&gt;  &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;0 字节     &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-5-5&#34;&gt;   &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;10 字节       &lt;/span&gt;&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-4-6-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-4-6-1&#34;&gt;&lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;TCP 载荷         &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-6-2&#34;&gt;    &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;-        &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-6-3&#34;&gt;    &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;-        &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-6-4&#34;&gt;    &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;-         &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-6-5&#34;&gt;       &lt;span class=&#39;colorbox&#39; id=&#39;colorbox13&#39;&gt;&lt;span class=&#39;cmtt-8x-x-62&#39;&gt;01&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox14&#39;&gt;&lt;span class=&#39;cmtt-8x-x-62&#39;&gt;02&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox15&#39;&gt;&lt;span class=&#39;cmtt-8x-x-62&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox16&#39;&gt;&lt;span class=&#39;cmtt-8x-x-62&#39;&gt;04&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox17&#39;&gt;&lt;span class=&#39;cmtt-8x-x-62&#39;&gt;05&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox18&#39;&gt;&lt;span class=&#39;cmtt-8x-x-62&#39;&gt;06&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox19&#39;&gt;&lt;span class=&#39;cmtt-8x-x-62&#39;&gt;07&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox20&#39;&gt;&lt;span class=&#39;cmtt-8x-x-62&#39;&gt;08&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox21&#39;&gt;&lt;span class=&#39;cmtt-8x-x-62&#39;&gt;09&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox22&#39;&gt;&lt;span class=&#39;cmtt-8x-x-62&#39;&gt;00&lt;/span&gt; &lt;/span&gt;      &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-4-7-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-4-7-1&#34;&gt;&lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;TCP 标志             &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-7-2&#34;&gt;  &lt;span class=&#39;cmtt-8x-x-87&#39;&gt;RST&lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-7-3&#34;&gt; &lt;span class=&#39;cmtt-8x-x-87&#39;&gt;RST+ACK&lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-7-4&#34;&gt; &lt;span class=&#39;cmtt-8x-x-87&#39;&gt;RST+ACK&lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-7-5&#34;&gt;   &lt;span class=&#39;cmtt-8x-x-87&#39;&gt;RST+ACK&lt;/span&gt;&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-4-8-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-4-8-1&#34;&gt;&lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;数据包数量       &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-8-2&#34;&gt;   &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;x1      &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-8-3&#34;&gt;   &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;x3       &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-8-4&#34;&gt;    &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;x1        &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-8-5&#34;&gt;      &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;x1            &lt;/span&gt;&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-4-9-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-4-9-1&#34;&gt;&lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;目标主机      &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-9-2&#34;&gt;  &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;C&amp;amp;S    &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-9-3&#34;&gt;  &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;C&amp;amp;S     &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-9-4&#34;&gt;   &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;C&amp;amp;S      &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-9-5&#34;&gt;      &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;C             &lt;/span&gt;&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-4-10-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-4-10-1&#34;&gt;&lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;残余审查持续时间 &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-10-2&#34;&gt;  &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;180 秒   &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-10-3&#34;&gt;  &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;180 秒    &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-10-4&#34;&gt;  &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;180 秒     &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-4-10-5&#34;&gt;      &lt;span class=&#39;ptmr8t-x-x-70&#39;&gt;-             &lt;/span&gt;&lt;/td&gt;
              &lt;/tr&gt;
            &lt;/table&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;!-- l. 1330 --&gt;&lt;p class=&#39;indent&#39;&gt;   &lt;a href=&#39;#tbl:4-injection-behaviors-packet-fingerprints&#39;&gt;表4&lt;/a&gt; 比较了河南防火墙与 GFW 三种类型（I、II、III）的重置数据包注入行为。虽然 GFW 的注入机制同时针对客户端（C）和服务器（S），但河南防火墙仅向客户端注入重置数据包。
        &lt;/p&gt;
        &lt;!-- l. 1335 --&gt;&lt;p class=&#39;indent&#39;&gt;   检查防火墙 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包的 IP 和 TCP 标志，我们观察到河南防火墙发送单个 &lt;span class=&#39;cmtt-10&#39;&gt;RST+ACK&lt;/span&gt; 数据包，且 IP DF（不分片）标志未设置。在 GFW 注入器中，类型 I 发送单个不带 &lt;span class=&#39;cmtt-10&#39;&gt;ACK&lt;/span&gt; 的 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包，且 IP DF 标志未设置；类型 II 发送三个相同的 &lt;span class=&#39;cmtt-10&#39;&gt;RST+ACK&lt;/span&gt; 数据包，且 IP DF 标志已设置；类型 III 发送单个 &lt;span class=&#39;cmtt-10&#39;&gt;RST+ACK&lt;/span&gt; 数据包，且 IP DF 标志未设置。
        &lt;/p&gt;
        &lt;!-- l. 1341 --&gt;&lt;p class=&#39;indent&#39;&gt;   三种 GFW 注入器注入的 TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包的观测到的 IP TTL 值呈现一定的范围：类型 I 为 55–118，类型 II 为 39–238，类型 III 为固定的 248。我们观察到河南防火墙注入的 &lt;span class=&#39;cmtt-10&#39;&gt;RST+ACK&lt;/span&gt; 数据包具有固定的 IP TTL 值 58。需注意，这些是客户端观测到的 IP TTL 值；审查设备设置的初始 TTL 值会更高，随后会因审查设备到客户端的网络跳数而减少。
        &lt;/p&gt;
        &lt;!-- l. 1352 --&gt;&lt;p class=&#39;indent&#39;&gt;   关于 IP ID 值，我们观察到类型 I GFW 注入一个 IP ID 固定为 0x0000 的 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包，类型 II GFW 注入三个 IP ID 值范围从 0x00A3 到 0xFE5F（163–65119）的 &lt;span class=&#39;cmtt-10&#39;&gt;RST+ACK&lt;/span&gt; 数据包，类型 III GFW 注入 IP ID 值范围从 0x9916 到 0x9933（39190–39219）的 &lt;span class=&#39;cmtt-10&#39;&gt;RST+ACK&lt;/span&gt; 数据包。另一方面，河南防火墙的 TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包具有固定的 IP ID 值 0x0001。
        &lt;/p&gt;
        &lt;!-- l. 1360 --&gt;&lt;p class=&#39;indent&#39;&gt;   河南防火墙 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包最独特的指纹是其 10 字节的 TCP 载荷模式 &lt;span class=&#39;colorbox&#39; id=&#39;colorbox23&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;01&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox24&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;02&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox25&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox26&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;04&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox27&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;05&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox28&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;06&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox29&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;07&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox30&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;08&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox31&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;09&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox32&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;，这在任何 GFW 注入器中都未发现。虽然 RFC 9293 规定 “TCP 实现应允许接收到的 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 段包含数据（SHLD-2）”&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:rfc9293&#39;&gt;71&lt;/a&gt; §3.5.3]&lt;/span&gt;，但在现实世界中看到带有载荷的 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包仍然非常罕见。在&lt;a href=&#39;#sec:6-circumvention-strategies&#39;&gt;第6节&lt;/a&gt;中，我们介绍了一种利用这种独特指纹来绕过河南防火墙的翻墙技术。
        &lt;/p&gt;
        &lt;!-- l. 1391 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4.5&#34;&gt; &lt;a id=&#34;sec:4.5-where-are-the-censorship-devices-deployed&#34; href=&#34;#sec:4.5-where-are-the-censorship-devices-deployed&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;4.5.&lt;/span&gt; 审查设备部署在何处&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 1394 --&gt;&lt;p class=&#39;indent&#39;&gt;   为了找出河南防火墙设备在网络中的位置，我们测量审查设备距离我们河南客户端的网络延迟和 TTL 跳数距离。
        &lt;/p&gt;
        &lt;!-- l. 1396 --&gt;&lt;p class=&#39;indent&#39;&gt;   首先，我们从位于河南省郑州的测量点独立地向位于广州和旧金山的水槽服务器发送 ClientHello 数据包，并测量了我们的客户端从发送 ClientHello 到接收到 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt;包之间的时间差。我们利用了 Tranco 列表中的前一百万个域名，每天进行四次实验，并捕获收到的 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包。
        &lt;/p&gt;
        &lt;!-- l. 1413 --&gt;&lt;p class=&#39;indent&#39;&gt;   &lt;a href=&#39;#fig:6-cdf-response-time&#39;&gt;图6&lt;/a&gt; 显示了发送 ClientHello 消息与接收到河南审查设备和 GFW 发出的第一个 TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包之间时间差的累积分布。该分析基于 2023 年 10 月 2 日至 12 月 8 日期间从河南收到的 36,480 个 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包和从 GFW 收集的 16,649 个 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包。虽然 GFW 可以为一个被封锁的连接注入超过三个 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包，但我们只用收到第一个 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包的时间来计算，因为它是那个导致连接被打断的数据包。该图清楚地显示了延迟的差异：时间差表明河南审查设备距离客户端更近，而 GFW 则位于国家网关。具体而言，GFW 的时间差范围从 11.52 毫秒到 445.38 毫秒（平均值为 17.98 毫秒），而河南设备的时间差范围从 2.30 毫秒到 30.49 毫秒（平均值为 2.82 毫秒）。这一证据有力表明，河南的地区性审查是独立于GFW部署的，并且更接近我们的测量点，这意味着这些审查设备位于河南省境内。
        &lt;/p&gt;
        &lt;div class=&#39;figure&#39;&gt;
            &lt;p class=&#39;noindent&#39; id=&#39;fig:6-cdf-response-time&#39;&gt;
                &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/cdf-response-time-.png&#39; /&gt;
                &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:6-cdf-response-time&#34;&gt;图6&lt;/a&gt;：发送包含被禁止域名的 TLS ClientHello 数据包与接收到审查设备发出的第一个伪造 TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包之间时间差的累积分布。
            &lt;/p&gt;
        &lt;/div&gt;
        &lt;!-- l. 1449 --&gt;&lt;p class=&#39;indent&#39;&gt;   接着，为了确定审查发生的确切网络跳数，我们使用了基于 traceroute 的 TTL 操纵探测方法。具体来说，我们发送包含已知被审查域名的 TLS ClientHello 数据包，逐渐增加探测包的 IP TTL 值，直到观察到注入的 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包。触发 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 的探测的 TTL 反映了到审查设备的跳数。这种方法类似于先前工作（如 CenTrace &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Raman2022a&#39;&gt;72&lt;/a&gt;]&lt;/span&gt;）中使用的方法。
        &lt;/p&gt;
        &lt;div class=&#34;table-container&#34; id=&#34;tbl:5-results-from-our-ttl-limited-probing-experiment&#34;&gt;
            &lt;p class=&#34;caption&#34;&gt;
              &lt;a href=&#34;#tbl:5-results-from-our-ttl-limited-probing-experiment&#34;&gt;表5&lt;/a&gt;：基于TTL操纵的探测实验结果显示河南的中间设备比 GFW 更靠近我们的客户端两跳。我们从河南郑州向美国旧金山的水槽服务器发送 TLS ClientHello 探测，在不同的跳数触发了两个不同的中间设备。
            &lt;/p&gt;

            &lt;div class=&#34;tabular&#34;&gt;
              &lt;table class=&#34;tabular&#34; id=&#34;TBL-5&#34;&gt;
                &lt;colgroup id=&#34;TBL-5-1g&#34;&gt;
                  &lt;col id=&#34;TBL-5-1&#34; /&gt;
                  &lt;col id=&#34;TBL-5-2&#34; /&gt;
                  &lt;col id=&#34;TBL-5-3&#34; /&gt;
                  &lt;col id=&#34;TBL-5-4&#34; /&gt;
                &lt;/colgroup&gt;

                &lt;tr id=&#34;TBL-5-1-&#34;&gt;
                  &lt;td class=&#34;td01 text-nowrap text-left&#34; id=&#34;TBL-5-1-1&#34;&gt;&lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-5-1-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;跳数距离&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-5-1-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;ASN&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-left&#34; id=&#34;TBL-5-1-4&#34;&gt;
                    &lt;p class=&#34;noindent&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;ISP&lt;/span&gt;&lt;/p&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-5-2-&#34;&gt;
                  &lt;td class=&#34;td01 text-nowrap text-left&#34; id=&#34;TBL-5-2-1&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;河南&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-5-2-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;5&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-5-2-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;4837&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-left&#34; id=&#34;TBL-5-2-4&#34;&gt;
                    &lt;p class=&#34;noindent&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;中国联通河南省分公司网络&lt;/span&gt;&lt;/p&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-5-3-&#34;&gt;
                  &lt;td class=&#34;td01 text-nowrap text-left&#34; id=&#34;TBL-5-3-1&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;GFW&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-5-3-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;7&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-5-3-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;4837&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-left&#34; id=&#34;TBL-5-3-4&#34;&gt;
                    &lt;p class=&#34;noindent&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;骨干网 - 中国联通&lt;/span&gt;&lt;/p&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

              &lt;/table&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;!-- l. 1480 --&gt;&lt;p class=&#39;indent&#39;&gt;   &lt;a href=&#39;#tbl:5-results-from-our-ttl-limited-probing-experiment&#39;&gt;表5&lt;/a&gt; 显示了我们在郑州进行的、目标是美国水槽服务器的测量结果。我们使用 &lt;span class=&#39;cmtt-10&#39;&gt;011.com&lt;/span&gt; 来触发地区性审查（河南），并使用 &lt;span class=&#39;cmtt-10&#39;&gt;youtube.com&lt;/span&gt; 来触发国家级审查（GFW）。我们的发现表明，河南的中间设备位于第 5 跳（中国联通省级网络），而 GFW 出现在更深的第 7 跳（中国联通骨干网）。这些结果证实了两个审查实体都作为中间设备运行，其中河南设备距离客户端更近。
        &lt;/p&gt;

        &lt;!-- l. 1497 --&gt;&lt;h2 class=&#34;sectionHead&#34; id=&#34;5&#34;&gt;&lt;a id=&#34;sec:5-understanding-the-blocklists&#34; href=&#34;#sec:5-understanding-the-blocklists&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;5.&lt;/span&gt; 理解封锁列表&lt;/a&gt;&lt;/h2&gt;
        &lt;!-- l. 1500 --&gt;&lt;p class=&#39;indent&#39;&gt;   我们持续监测并分析了被河南防火墙和 GFW 封锁的网站。我们还推断了其采用的封锁规则。
        &lt;/p&gt;
        &lt;!-- l. 1503 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;5.1&#34;&gt; &lt;a id=&#34;sec:5.1-analyzing-the-blocked-domains&#34; href=&#34;#sec:5.1-analyzing-the-blocked-domains&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;5.1.&lt;/span&gt; 分析被封锁的域名&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 1506 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;实验设置。   &lt;/span&gt;由于很难在河南获取高带宽机器，我们将测量分为两部分。首先，我们每天测试 Tranco 列表 5YZ7N 中排名前一百万的网站。其次，我们每周测试2.27 亿个域名，它们是从互联网名称与数字地址分配机构（ICANN）的集中区域数据服务（CZDS）提供的超过 1,000 个顶级域名（TLD）的域文件中提取的 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:SignInCe67:online&#39;&gt;73&lt;/a&gt;]&lt;/span&gt;。
        &lt;/p&gt;
        &lt;!-- l. 1513 --&gt;&lt;p class=&#39;indent&#39;&gt;   对于 Tranco 前一百万域名的每日测试，我们通过向我们控制的位于中国的服务器发送相应的连接，来测试基于 TLS SNI 和 HTTP Host 的封锁。对于每个域名，针对基于 TLS SNI 的审查，我们每天发送四个连接；针对基于 HTTP Host 的审查，我们每天发送两个连接。在一天之中，如果某一测试中被测域名收到了 TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 响应，我们就将该域名标记为在该协议下被封锁。
        &lt;/p&gt;
        &lt;!-- l. 1522 --&gt;&lt;p class=&#39;indent&#39;&gt;   由于带宽限制，对于每周测试的 2.27 亿个域名，我们为每个域名向我们的服务器发送一个 TLS 连接，如果请求收到 TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt;，则将该域名标记为被封锁。
        &lt;/p&gt;
        &lt;!-- l. 1540 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;实验时间线。   &lt;/span&gt;&lt;a href=&#39;#tbl:1-experiment-timeline-and-vantage-points&#39;&gt;表1&lt;/a&gt; 总结了具体的实验时间线和测量点使用情况。需要特别指出的是，我们在 2024 年 3 月 5 日至 10 月 7 日期间未能运行监测实验。此外，我们在广州的 VPS 出现的意外中断，也导致了一些较小的数据缺口。这些缺口在&lt;a href=&#39;#fig:7-censored-domains-over-time-all&#39;&gt;图7&lt;/a&gt;中也有所体现。由于我们使用相同的机器来测量河南防火墙和 GFW，广州水槽服务器的中断同时影响了我们对两个防火墙的测量。因此，我们将这些小的测量缺口（总计额外 25 天）从分析中移除。
        &lt;/p&gt;
        &lt;div class=&#39;figure&#39;&gt;
            &lt;p class=&#39;noindent&#39; id=&#39;fig:7-censored-domains-over-time-all&#39;&gt;
                &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/censored-domains-over-time-all-.png&#39; /&gt;
                &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:7-censored-domains-over-time-all&#34;&gt;图7&lt;/a&gt;：河南防火墙和 GFW 封锁的域名数量随时间变化关系。我们在 2023 年 11 月 5 日至 2025 年 3 月 31 日期间，使用 Tranco 前一百万域名列表 ID 5YZ7N 进行了测试，其中 2024 年 3 月 5 日至 10 月 7 日没能测试。
            &lt;/p&gt;
        &lt;/div&gt;
        &lt;!-- l. 1554 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;河南防火墙对基于 HTTP Host 和基于 TLS SNI 的审查使用相同的封锁列表。   &lt;/span&gt;先前的工作表明，GFW 对不同的协议使用不同的域名封锁列表&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Chai2019a&#39;&gt;2&lt;/a&gt; §4.1]&lt;/span&gt;&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt; §5.2]&lt;/span&gt;。相比之下，我们发现河南防火墙对基于 HTTP Host 和基于 TLS SNI 的审查使用同一个封锁列表。具体来说，我们比较了在同一天（2024 年 11 月 14 日）被河南基于 HTTP Host 和 TLS SNI 的审查封锁的域名列表。两种协议封锁的域名数量相近：基于 HTTP Host 的审查封锁了 24,795 个域名，而基于 TLS SNI 的审查封锁了 24,974 个域名。这两个列表之间微小的 1% 差异可归因于测量误差：我们对两个名单中存在差异的域名进行了重复检测以减少假阴性，并发现列表之间的差异消失了。
        &lt;/p&gt;
        &lt;!-- l. 1601 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;比较封锁列表大小随时间的变化。   &lt;/span&gt;我们监控了河南防火墙和 GFW 封锁列表随时间的变化。&lt;a href=&#39;#fig:7-censored-domains-over-time-all&#39;&gt;图7&lt;/a&gt; 显示了各个时刻河南防火墙和 GFW 封锁的域名总数。在 2025 年 3 月 4 日之前，河南防火墙的封锁列表一直远大于 GFW 的封锁列表。
        &lt;/p&gt;
        &lt;!-- l. 1617 --&gt;&lt;p class=&#39;indent&#39;&gt;   河南防火墙频繁添加和删除通用二级域名封锁规则（例如 *.com.au、*.net.br、*.gov.co），导致被封锁域名数量发生剧烈变化。例如，&lt;a href=&#39;#fig:7-censored-domains-over-time-all&#39;&gt;图7&lt;/a&gt; 显示，在 2023 年 11 月 10 日至 12 月 8 日期间，河南防火墙封锁的域名数量持续大幅下降。这一下降主要是由于至少 112 条通用二级域名封锁规则被移除。特别是，在2023 年 11 月 22 日移除 *.com.au 这一条封锁规则，就解封了超过五千个域名。
        &lt;/p&gt;
        &lt;!-- l. 1668 --&gt;&lt;p class=&#39;indent&#39;&gt;   我们观察到河南防火墙使用的封锁列表也针对与其他国家相关的州或市政府网站。例如，美国的大多数州政府网站，如 &lt;span class=&#39;ptmri8t-&#39;&gt;texas.gov&lt;/span&gt;、&lt;span class=&#39;ptmri8t-&#39;&gt;seattle.gov&lt;/span&gt;、&lt;span class=&#39;ptmri8t-&#39;&gt;alabama.gov&lt;/span&gt;、&lt;span class=&#39;ptmri8t-&#39;&gt;nc.gov&lt;/span&gt; 都在河南被封锁，但未被 GFW 封锁。与 GFW 封锁列表中出现的 83 个 &lt;span class=&#39;ptmri8t-&#39;&gt;*.gov*&lt;/span&gt; 域名相比，我们发现河南防火墙封锁了 1,002 个 &lt;span class=&#39;ptmri8t-&#39;&gt;*.gov*&lt;/span&gt; 域名，这表明其倾向于封锁任何展示来自世界各地的治理数据或新闻内容。事实上，如&lt;a href=&#39;#tbl:6-top-ten-tlds-censored-by-gfw-henan-firewall&#39;&gt;表6&lt;/a&gt;所示，我们注意到河南防火墙比 GFW 更倾向于针对国家代码顶级域名（ccTLD）。其中一些封锁范围很广：2024 年，河南在 1月19日，和2月1日至2月2日封锁了我们测试的所有 5,334 个 &lt;span class=&#39;ptmri8t-&#39;&gt;*.com.au&lt;/span&gt; 域名，在 2 月 15 日至 3 月 4 日封锁了所有 2,075 个 &lt;span class=&#39;ptmri8t-&#39;&gt;*.co.za&lt;/span&gt; 域名，在 2 月 8 日至 3 月 4 日封锁了所有 1,547 个 &lt;span class=&#39;ptmri8t-&#39;&gt;*.org.uk&lt;/span&gt; 域名。这些可能是过度封锁的实际例子，即防火墙包含过于宽泛的规则。我们不清楚河南防火墙为何会重复封锁和解封这些国家代码二级域名。
        &lt;/p&gt;
        &lt;div class=&#34;table-container&#34; id=&#34;tbl:6-top-ten-tlds-censored-by-gfw-henan-firewall&#34;&gt;
            &lt;p class=&#34;caption&#34;&gt;
              &lt;a href=&#34;#tbl:6-top-ten-tlds-censored-by-gfw-henan-firewall&#34;&gt;表6&lt;/a&gt;：GFW 和河南防火墙在三个月内审查的前十大顶级域名（TLD）。河南防火墙封锁的国家代码顶级域名（ccTLD）多于 GFW。
            &lt;/p&gt;

            &lt;div class=&#34;tabular&#34;&gt;
              &lt;table class=&#34;tabular&#34; id=&#34;TBL-6&#34;&gt;
                &lt;colgroup id=&#34;TBL-6-1g&#34;&gt;
                  &lt;col id=&#34;TBL-6-1&#34; /&gt;
                  &lt;col id=&#34;TBL-6-2&#34; /&gt;
                &lt;/colgroup&gt;
                &lt;colgroup id=&#34;TBL-6-3g&#34;&gt;
                  &lt;col id=&#34;TBL-6-3&#34; /&gt;
                  &lt;col id=&#34;TBL-6-4&#34; /&gt;
                &lt;/colgroup&gt;

                &lt;tr id=&#34;TBL-6-1-&#34;&gt;
                  &lt;td class=&#34;td11 text-nowrap text-center&#34; colspan=&#34;2&#34; id=&#34;TBL-6-1-1&#34;&gt;
                    &lt;div class=&#34;multicolumn text-nowrap text-center&#34;&gt;
                      &lt;span class=&#34;ptmb8t-x-x-90&#34;&gt;GFW&lt;/span&gt;
                    &lt;/div&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-center&#34; colspan=&#34;2&#34; id=&#34;TBL-6-1-3&#34;&gt;
                    &lt;div class=&#34;multicolumn text-nowrap text-center&#34;&gt;
                      &lt;span class=&#34;ptmb8t-x-x-90&#34;&gt;河南&lt;/span&gt;
                    &lt;/div&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-6-2-&#34;&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-2-1&#34;&gt;
                    &lt;span class=&#34;ptmb8t-x-x-90&#34;&gt;TLD&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-2-2&#34;&gt;
                    &lt;span class=&#34;ptmb8t-x-x-90&#34;&gt;封锁列表 %&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-2-3&#34;&gt;
                    &lt;span class=&#34;ptmb8t-x-x-90&#34;&gt;TLD&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-2-4&#34;&gt;
                    &lt;span class=&#34;ptmb8t-x-x-90&#34;&gt;封锁列表 %&lt;/span&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-6-3-&#34;&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-3-1&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.com&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-3-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;45.8%&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-3-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.com&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-3-4&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;37.4%&lt;/span&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-6-4-&#34;&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-4-1&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.org&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-4-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;6.1%&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-4-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.au&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-4-4&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;11.4%&lt;/span&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-6-5-&#34;&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-5-1&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.net&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-5-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;5.6%&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-5-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.za&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-5-4&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;4.6%&lt;/span&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-6-6-&#34;&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-6-1&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.jp&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-6-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;2.4%&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-6-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.net&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-6-4&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;4.5%&lt;/span&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-6-7-&#34;&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-7-1&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.cc&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-7-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;2.1%&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-7-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.uk&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-7-4&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;4.1%&lt;/span&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-6-8-&#34;&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-8-1&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.de&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-8-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;1.7%&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-8-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.org&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-8-4&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;4.0%&lt;/span&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-6-9-&#34;&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-9-1&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.xyz&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-9-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;1.7%&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-9-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.in&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-9-4&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;2.9%&lt;/span&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-6-10-&#34;&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-10-1&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.in&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-10-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;1.7%&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-10-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.jp&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-10-4&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;2.4%&lt;/span&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-6-11-&#34;&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-11-1&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.tw&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-11-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;1.5%&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-11-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.tw&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-11-4&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;1.1%&lt;/span&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#34;TBL-6-12-&#34;&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-12-1&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.io&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-12-2&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;1.3%&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-12-3&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;.de&lt;/span&gt;
                  &lt;/td&gt;
                  &lt;td class=&#34;td11 text-nowrap text-end&#34; id=&#34;TBL-6-12-4&#34;&gt;
                    &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;1.0%&lt;/span&gt;
                  &lt;/td&gt;
                &lt;/tr&gt;
              &lt;/table&gt;
            &lt;/div&gt;
          &lt;/div&gt;

        &lt;!-- l. 1697 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;河南防火墙的封锁列表比 GFW 更不稳定。&lt;/span&gt;&lt;!-- l. 1716 --&gt; 如&lt;a href=&#39;#fig:8-cdf-censored-duration-both&#39;&gt;图8&lt;/a&gt;所示，河南防火墙的封锁列表比 GFW 的封锁列表更不稳定。75% 被封锁的域名被河南防火墙审查的时间少于 51 天，而超过 50% 曾被 GFW 审查的域名在整个测量期间（256 天）都被封锁。与河南防火墙封锁的域名（平均：35.7 天；中位数：21 天）相比，被 GFW 封锁的域名审查持续时间更长（平均：173.8 天；中位数：256 天）。
        &lt;/p&gt;
        &lt;div class=&#39;figure&#39;&gt;
          &lt;p class=&#39;noindent&#39; id=&#39;fig:8-cdf-censored-duration-both&#39;&gt;
              &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/cdf-censored-duration-both-.png&#39; /&gt;
              &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:8-cdf-censored-duration-both&#34;&gt;图8&lt;/a&gt;：2023 年 11 月 5 日至 2025 年 3 月 31 日期间（其中 2024 年 3 月 5 日至 10 月 7 日没有测量），所有曾被 GFW 和河南防火墙审查的域名的被封锁时长累积分布。与 GFW 相比，河南防火墙的封锁策略更不稳定，更大比例的域名被封锁的时间较短。
          &lt;/p&gt;
        &lt;/div&gt;
        &lt;!-- l. 1723 --&gt;&lt;p class=&#39;indent&#39;&gt;   如上所述，河南防火墙这种不稳定的封锁策略也主要是由于频繁添加和删除通用二级域名封锁规则所致。例如，&lt;a href=&#39;#fig:7-censored-domains-over-time-all&#39;&gt;图7&lt;/a&gt; 显示，在 2024 年 1 月 11 日至 1 月 12 日以及 2 月 1 日至 2 月 3 日期间，河南防火墙封锁的域名数量出现了两次峰值。这主要是由于添加和删除了 *.com.au 封锁规则。值得注意的是，即使在 *.com.au 规则被移除后，例如在 2024 年 1 月 12 日和 2 月 3 日，河南防火墙仍然分别封锁了 44 个和 26 个以 .com.au 结尾的域名。这一观察结果表明，封锁规则的粒度可以比二级域名更细。
        &lt;/p&gt;
        &lt;!-- l. 1750 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;两个防火墙是否针对相似的网站？   &lt;/span&gt;&lt;a href=&#39;#fig:9-cdf-ranking&#39;&gt;图9&lt;/a&gt; 显示了在我们九个月的测量期间，GFW 和河南地区性审查设备在 Tranco 前一百万域名中封锁的域名的累积分布。
        &lt;/p&gt;
        &lt;div class=&#39;figure&#39;&gt;
          &lt;p class=&#39;noindent&#39; id=&#39;fig:9-cdf-ranking&#39;&gt;
              &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/cdf-ranking-.png&#39; /&gt;
              &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:9-cdf-ranking&#34;&gt;图9&lt;/a&gt;：GFW 和河南防火墙在 Tranco 前一百万列表 5YZ7N 中封锁的域名的累积分布。数据收集于 2023 年 11 月 5 日至 2025 年 3 月 31 日，其中 2024 年 3 月 5 日至 10 月 7 日没有测量。
          &lt;/p&gt;
        &lt;/div&gt;
        &lt;!-- l. 1757 --&gt;&lt;p class=&#39;indent&#39;&gt;   对于 GFW，如果一个域名在我们的测量期间至少被封锁过一次，我们就将其归类为被封锁。由于河南防火墙封锁列表的不稳定性，我们将域名分为三类：曾被封锁的域名、被封锁时间少于 21 天的域名以及被封锁时间少于 51 天的域名。我们根据对两个防火墙平均封锁持续时间的观察（如 &lt;a href=&#39;#fig:8-cdf-censored-duration-both&#39;&gt;图8&lt;/a&gt; 所示）选择了这些阈值。
        &lt;/p&gt;
        &lt;!-- l. 1764 --&gt;&lt;p class=&#39;indent&#39;&gt;   在测量期间，我们累计观察到 25,441 个域名被 GFW 审查，而有 175,925 个域名至少被河南防火墙封锁过。在被河南防火墙审查的域名中，我们的分析确定了 104,100 个域名的封锁期少于 21 天，而 163,083 个域名的封锁持续时间短于 51 天。
        &lt;/p&gt;
        &lt;!-- l. 1769 --&gt;&lt;p class=&#39;indent&#39;&gt;   通过观察累积分布和域名排名，我们发现最流行的域名更有可能同时被 GFW 和河南防火墙封锁。河南防火墙在封锁域名方面，就其流行度而言，表现得更为同质化，而 GFW 的封锁列表则呈现出更异构的分布。从图中可以看出，虽然 GFW 防火墙针对更流行的网站，但河南防火墙更均匀地针对网站。然而，两个封锁列表的大小显示出两个防火墙之间的鲜明对比。
        &lt;/p&gt;
        &lt;!-- l. 1777 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;两个封锁列表之间的重叠。   &lt;/span&gt;为了了解两个封锁列表的大小和重叠情况，我们进行了一项长期实验，在 2023 年 12 月 26 日至 2025 年 3 月 31 日期间，每周测试 2.27 亿个域名。&lt;a href=&#39;#fig:10-venn-diagram-accumulated&#39;&gt;图10&lt;/a&gt; 显示了 GFW 和河南防火墙累积的封锁列表。在实验期间，河南防火墙封锁了 4,196,532 个域名——是 GFW 曾封锁的 741,542 个域名的五倍多。有 479,247 个域名同时被两个防火墙封锁。两个封锁列表之间的 Jaccard 指数约为 0.0885，表明它们的相似度低于 9%，因此在覆盖范围上很大程度上是独立的，但又互为补充。
        &lt;/p&gt;
        &lt;div class=&#39;figure&#39;&gt;
          &lt;p class=&#39;noindent&#39; id=&#39;fig:10-venn-diagram-accumulated&#39;&gt;
              &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/venn-diagram-accumulated-.png&#39; /&gt;
              &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:10-venn-diagram-accumulated&#34;&gt;图10&lt;/a&gt;：GFW 和河南防火墙曾封锁的累积域名的维恩图。我们在 2023 年 12 月 26 日至 2025 年 3 月 31 日期间（其中 2024 年 3 月 5 日至 10 月 7 日没有测量）每周测试 2.27 亿个域名。河南封锁列表的大小是 GFW 封锁列表的五倍多。
          &lt;/p&gt;
        &lt;/div&gt;
        &lt;!-- l. 1820 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;对被封锁域名进行分类。   &lt;/span&gt;我们使用了 &lt;span class=&#39;ptmri8t-&#39;&gt;whoisxmlapi.com&lt;/span&gt; &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:WebsiteC13:online&#39;&gt;74&lt;/a&gt;]&lt;/span&gt; 网站分类服务，对 2023 年 11 月 21 日至 2024 年 1 月 15 日期间获取的每个防火墙的封锁列表进行了分类。我们承认并非所有域名都能被分类，因为有些域名不活跃或不托管内容。&lt;a href=&#39;#tbl:7-top-categories-blocked-by-henan-and-gfw&#39;&gt;表7&lt;/a&gt; 显示了每个防火墙审查域名的前十个类别。
        &lt;/p&gt;
        &lt;div class=&#34;table-container&#34; id=&#34;tbl:7-top-categories-blocked-by-henan-and-gfw&#34;&gt;
          &lt;p class=&#34;caption&#34;&gt;
            &lt;a href=&#34;#tbl:7-top-categories-blocked-by-henan-and-gfw&#34;&gt;表7&lt;/a&gt;：河南防火墙和 GFW 在 Tranco 前一百万域名中封锁域名的主要类别。未进入各防火墙前十名的类别标记为“–”。
          &lt;/p&gt;

          &lt;div class=&#34;tabular&#34;&gt;
            &lt;table class=&#34;tabular&#34; id=&#34;TBL-7&#34;&gt;
              &lt;colgroup id=&#34;TBL-7-1g&#34;&gt;
                &lt;col id=&#34;TBL-7-1&#34; /&gt;
                &lt;col id=&#34;TBL-7-2&#34; /&gt;
                &lt;col id=&#34;TBL-7-3&#34; /&gt;
                &lt;col id=&#34;TBL-7-4&#34; /&gt;
                &lt;col id=&#34;TBL-7-5&#34; /&gt;
              &lt;/colgroup&gt;

              &lt;tr id=&#34;TBL-7-1-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-1-1&#34;&gt;
                  &lt;span class=&#34;ptmb8t-&#34;&gt;类别             &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; colspan=&#34;2&#34; id=&#34;TBL-7-1-2&#34;&gt;
                  &lt;div class=&#34;multicolumn text-nowrap text-center&#34;&gt;
                    &lt;span class=&#34;ptmb8t-&#34;&gt;河南&lt;/span&gt;
                  &lt;/div&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; colspan=&#34;2&#34; id=&#34;TBL-7-1-4&#34;&gt;
                  &lt;div class=&#34;multicolumn text-nowrap text-center&#34;&gt;
                    &lt;span class=&#34;ptmb8t-&#34;&gt;GFW&lt;/span&gt;
                  &lt;/div&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-2-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-2-1&#34;&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; colspan=&#34;2&#34; id=&#34;TBL-7-2-2&#34;&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; colspan=&#34;2&#34; id=&#34;TBL-7-3-4&#34;&gt;&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-4-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-4-1&#34;&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-4-2&#34;&gt;
                  &lt;span class=&#34;ptmb8t-&#34;&gt;数量&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-4-3&#34;&gt;
                  &lt;span class=&#34;ptmb8t-&#34;&gt;比例 (%)&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-4-4&#34;&gt;
                  &lt;span class=&#34;ptmb8t-&#34;&gt;数量&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-4-5&#34;&gt;
                  &lt;span class=&#34;ptmb8t-&#34;&gt;比例 (%)&lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-5-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-5-1&#34;&gt;商业&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-5-2&#34;&gt;4861&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-5-3&#34;&gt;26.9&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-5-4&#34;&gt;1183&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-5-5&#34;&gt;15.3&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-6-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-6-1&#34;&gt;计算机&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-6-2&#34;&gt;2517&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-6-3&#34;&gt;13.9&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-6-4&#34;&gt;642&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-6-5&#34;&gt;8.3&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-7-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-7-1&#34;&gt;色情&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-7-2&#34;&gt;2394&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-7-3&#34;&gt;13.2&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-7-4&#34;&gt;2207&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-7-5&#34;&gt;28.6&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-8-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-8-1&#34;&gt;赌博&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-8-2&#34;&gt;1276&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-8-3&#34;&gt;7.1&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-8-4&#34;&gt;–&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-8-5&#34;&gt;–&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-9-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-9-1&#34;&gt;社会&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-9-2&#34;&gt;1265&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-9-3&#34;&gt;7.0&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-9-4&#34;&gt;459&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-9-5&#34;&gt;5.9&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-10-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-10-1&#34;&gt;购物&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-10-2&#34;&gt;1261&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-10-3&#34;&gt;7.0&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-10-4&#34;&gt;288&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-10-5&#34;&gt;3.7&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-11-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-11-1&#34;&gt;旅游&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-11-2&#34;&gt;1230&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-11-3&#34;&gt;6.8&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-11-4&#34;&gt;–&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-11-5&#34;&gt;–&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-12-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-12-1&#34;&gt;娱乐&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-12-2&#34;&gt;1134&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-12-3&#34;&gt;6.3&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-12-4&#34;&gt;548&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-12-5&#34;&gt;7.1&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-13-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-13-1&#34;&gt;教育&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-13-2&#34;&gt;1104&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-13-3&#34;&gt;6.1&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-13-4&#34;&gt;–&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-13-5&#34;&gt;–&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-14-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-14-1&#34;&gt;未分类&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-14-2&#34;&gt;1057&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-14-3&#34;&gt;5.8&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-14-4&#34;&gt;395&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-14-5&#34;&gt;5.1&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-15-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-15-1&#34;&gt;新闻&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-15-2&#34;&gt;–&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-15-3&#34;&gt;–&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-15-4&#34;&gt;1378&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-15-5&#34;&gt;17.9&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-16-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-16-1&#34;&gt;个人网站&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-16-2&#34;&gt;–&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-16-3&#34;&gt;–&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-16-4&#34;&gt;313&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-16-5&#34;&gt;4.1&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-7-17-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-7-17-1&#34;&gt;流媒体&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-17-2&#34;&gt;–&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-17-3&#34;&gt;–&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-17-4&#34;&gt;305&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-center&#34; id=&#34;TBL-7-17-5&#34;&gt;4.0&lt;/td&gt;
              &lt;/tr&gt;

            &lt;/table&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;!-- l. 1858 --&gt;&lt;p class=&#39;indent&#39;&gt;   我们在此注意到的一个有趣的点是，河南防火墙比 GFW 更倾向于针对商业、经济、计算机和互联网信息领域的域名。河南防火墙封锁列表上出现的总域名中，超过 35% 来自这两个类别。为了找出关注这些类别的原因，我们假设河南省一直是许多金融争议的中心，其中最突出的是 2022 年因涉及当地贷款机构的金融丑闻而引发的大规模抗议活动&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Security88:online&#39;&gt;75&lt;/a&gt;]&lt;/span&gt;。鉴于针对国家控制的金融机构的金融丑闻，该省很可能希望限制对其经济相关信息的访问。另一方面，这可能是审查批评该国商业和经济政策的国家政策的一部分。
        &lt;/p&gt;
        &lt;!-- l. 1871 --&gt;&lt;p class=&#39;indent&#39;&gt;   另一方面，GFW 则更多地针对新闻和媒体以及成人内容域名。这与长期以来对 GFW 的理解一致，即其旨在更多地限制新闻、道德敏感和政治敏感内容。
        &lt;/p&gt;
        &lt;!-- l. 1879 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;5.2&#34;&gt; &lt;a id=&#34;sec:5.2-identifying-the-blocking-rules&#34; href=&#34;#sec:5.2-identifying-the-blocking-rules&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;5.2.&lt;/span&gt; 识别封锁规则&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 1880 --&gt;&lt;p class=&#39;indent&#39;&gt;   另一种观察各个防火墙如何配置过滤规则的方法是推断可能用于封锁列表匹配的正则表达式。正如 Anonymous 等人 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;22&lt;/a&gt; §6]&lt;/span&gt; 和 Hoang 等人 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;3&lt;/a&gt; §4.1]&lt;/span&gt; 在他们对 GFW 的 DNS 审查研究中指出的那样，GFW 使用可能针对二级域名、顶级域名和/或子域名的规则来封锁域名。他们开发了一种方法来涵盖 GFW 应用的封锁规则。我们使用了基于&lt;a href=&#39;#tbl:8-permutations-str-testing-henan-gfw&#39;&gt;表8&lt;/a&gt;中列出的排列组合的类似方法，来推断河南防火墙和 GFW 的封锁规则。我们注意到，我们推断的正则表达式可能无法完全反映审查者使用的规则，因为我们的排列组合可能会遗漏基于二级域名的正则表达式或更复杂的正则表达式，例如我们观察到河南防火墙封锁的 &lt;span class=&#39;cmtt-10&#39;&gt;*.gov*&lt;/span&gt;。尽管如此，我们推断的规则使我们能够识别河南防火墙封锁列表与 GFW 相比的结构性差异。
        &lt;/p&gt;
        &lt;div class=&#34;table-container&#34; id=&#34;tbl:8-permutations-str-testing-henan-gfw&#34;&gt;
          &lt;p class=&#34;caption&#34;&gt;
            &lt;a href=&#34;#tbl:8-permutations-str-testing-henan-gfw&#34;&gt;表8&lt;/a&gt;：用于测试河南防火墙和 GFW 封锁规则的排列组合。占位符 &lt;span class=&#34;cmtt-10&#34;&gt;{str}&lt;/span&gt; 代表单独或与其他字符串组合时不应触发审查的字符串。在这项工作中，我们使用了字符串 &lt;span class=&#34;cmtt-10&#34;&gt;ZZZZ&lt;/span&gt;。
          &lt;/p&gt;

          &lt;div class=&#34;tabular&#34;&gt;
            &lt;table class=&#34;tabular&#34; id=&#34;TBL-8&#34;&gt;
              &lt;colgroup id=&#34;TBL-8-1g&#34;&gt;
                &lt;col id=&#34;TBL-8-1&#34; /&gt;
                &lt;col id=&#34;TBL-8-2&#34; /&gt;
                &lt;col id=&#34;TBL-8-3&#34; /&gt;
                &lt;col id=&#34;TBL-8-4&#34; /&gt;
              &lt;/colgroup&gt;

              &lt;tr id=&#34;TBL-8-1-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-1-1&#34;&gt;
                  &lt;span class=&#34;ptmb8t-x-x-90&#34;&gt;测试&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-1-2&#34;&gt;
                  &lt;span class=&#34;ptmb8t-x-x-90&#34;&gt;模式&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-1-3&#34;&gt;
                  &lt;span class=&#34;ptmb8t-x-x-90&#34;&gt;测试&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-1-4&#34;&gt;
                  &lt;span class=&#34;ptmb8t-x-x-90&#34;&gt;模式&lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-8-2-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-2-1&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;测试 0&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-2-2&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;{str}domain{str}&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-2-3&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;测试 5&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-2-4&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;{str}domain&lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-8-3-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-3-1&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;测试 1&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-3-2&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;domain&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-3-3&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;测试 6&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-3-4&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;{str}.domain.{str}&lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-8-4-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-4-1&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;测试 2&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-4-2&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;domain.{str}&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-4-3&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;测试 7&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-4-4&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;{str}.domain{str}&lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-8-5-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-5-1&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;测试 3&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-5-2&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;domain{str}&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-5-3&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;测试 8&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-5-4&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;{str}domain.{str}&lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-8-6-&#34;&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-6-1&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;测试 4&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-6-2&#34;&gt;
                  &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;{str}.domain&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-6-3&#34;&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-8-6-4&#34;&gt;&lt;/td&gt;
              &lt;/tr&gt;
            &lt;/table&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;!-- l. 1922 --&gt;&lt;p class=&#39;indent&#39;&gt;   如&lt;a href=&#39;#tbl:8-permutations-str-testing-henan-gfw&#39;&gt;表8&lt;/a&gt;所示，我们为在每日测量实验（&lt;a href=&#39;#sec:5-understanding-the-blocklists&#39;&gt;第5节&lt;/a&gt;）中识别出的每个被审查域名，通过在域名前面和/或后面添加一个固定字符串，生成了九种排列组合。这种方法曾被 Anonymous 等人 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;22&lt;/a&gt; §6]&lt;/span&gt; 于 2014 年和 Hoang 等人 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;3&lt;/a&gt; §4.1]&lt;/span&gt; 于 2021 年使用。在这项工作中，我们选择了模式字符串 &lt;span class=&#39;cmtt-10&#39;&gt;ZZZZ&lt;/span&gt; 来构造每种排列组合。然后，我们独立地向我们的水槽服务器发送包含每种排列组合作为 SNI 的 ClientHello 消息，并记录了每次测试的结果。在我们的测量期间，该实验每天进行四次。
        &lt;/p&gt;
        &lt;!-- l. 2016 --&gt;&lt;p class=&#39;indent&#39;&gt;   如&lt;a href=&#39;#tbl:9-inferred-regex-patterns&#39;&gt;表9&lt;/a&gt;所示，河南防火墙和 GFW 使用的最流行的封锁正则表达式模式是 &lt;span class=&#39;obeylines-h&#39;&gt;&lt;code class=&#39;verb&#39;&gt;^(.*\.)?keyword$&lt;/code&gt;&lt;/span&gt;。此模式旨在用于封锁域名及其子域名。GFW 使用的第二种最流行的封锁正则表达式模式是 &lt;span class=&#39;obeylines-h&#39;&gt;&lt;code class=&#39;verb&#39;&gt;^keyword$&lt;/code&gt;&lt;/span&gt;，仅用于封锁域名本身，而不封锁其子域名。GFW 使用的第三种最流行的封锁正则表达式模式是 &lt;span class=&#39;obeylines-h&#39;&gt;&lt;code class=&#39;verb&#39;&gt;^(.*\.)?keyword&lt;/code&gt;&lt;/span&gt;，这很可能是在正则表达式模式中未包含结束锚点的错误。有趣的是，与 GFW 有时采用没有结束锚点的正则表达式模式不同，河南防火墙总是在其正则表达式模式中包含结束锚点。这一结果可能是由于封锁列表维护得更仔细、更一致，或者可能是审查软件本身强制使用以结束锚点结尾的正则表达式模式，以防止人为错误。
        &lt;/p&gt;
        &lt;div class=&#34;table-container&#34; id=&#34;tbl:9-inferred-regex-patterns&#34;&gt;
          &lt;p class=&#34;caption&#34;&gt;
            &lt;a href=&#34;#tbl:9-inferred-regex-patterns&#34;&gt;表9&lt;/a&gt;：我们推断了 GFW 和河南防火墙采用的封锁规则的等效正则表达式。GFW 和河南防火墙分别采用了 24 种和 5 种正则表达式模式。该表仅显示了 GFW 使用超过十次的正则表达式模式。
          &lt;/p&gt;

          &lt;div class=&#34;tabular&#34;&gt;
            &lt;table class=&#34;tabular&#34; id=&#34;TBL-9&#34;&gt;
              &lt;colgroup id=&#34;TBL-9-1g&#34;&gt;
                &lt;col id=&#34;TBL-9-1&#34; /&gt;
                &lt;col id=&#34;TBL-9-2&#34; /&gt;
                &lt;col id=&#34;TBL-9-3&#34; /&gt;
                &lt;col id=&#34;TBL-9-4&#34; /&gt;
                &lt;col id=&#34;TBL-9-5&#34; /&gt;
                &lt;col id=&#34;TBL-9-6&#34; /&gt;
              &lt;/colgroup&gt;

              &lt;tr id=&#34;TBL-9-1-&#34;&gt;
                &lt;td class=&#34;td01 text-nowrap text-left&#34; id=&#34;TBL-9-1-1&#34;&gt;
                  &lt;span class=&#34;ptmb8t-&#34;&gt;推断的正则表达式        &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-9-1-2&#34;&gt;
                  &lt;span class=&#34;ptmb8t-&#34;&gt;命中的测试   &lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11&#34; colspan=&#34;4&#34; id=&#34;TBL-9-1-3&#34;&gt;
                  &lt;div class=&#34;text-center&#34;&gt;
                    &lt;span class=&#34;ptmb8t-&#34;&gt;规则数量 (比例)&lt;/span&gt;
                  &lt;/div&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-9-2-&#34;&gt;
                &lt;td class=&#34;td01&#34; colspan=&#34;2&#34; id=&#34;TBL-9-2-1&#34;&gt;&lt;/td&gt;
                &lt;td class=&#34;td11&#34; colspan=&#34;3&#34; id=&#34;TBL-9-2-3&#34;&gt;
                  &lt;span class=&#34;cmidrule&#34;&gt;&lt;/span&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-9-3-&#34;&gt;
                &lt;td class=&#34;td01 text-nowrap text-left&#34; id=&#34;TBL-9-3-1&#34;&gt;&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-9-3-2&#34;&gt;&lt;/td&gt;
                &lt;td class=&#34;td11&#34; colspan=&#34;2&#34; id=&#34;TBL-9-3-3&#34;&gt;
                  &lt;div class=&#34;text-center&#34;&gt;
                    &lt;span class=&#34;ptmb8t-&#34;&gt;GFW&lt;/span&gt;
                  &lt;/div&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11&#34; colspan=&#34;2&#34; id=&#34;TBL-9-3-5&#34;&gt;
                  &lt;div class=&#34;text-center&#34;&gt;
                    &lt;span class=&#34;ptmb8t-&#34;&gt;河南&lt;/span&gt;
                  &lt;/div&gt;
                &lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-9-4-&#34;&gt;
                &lt;td class=&#34;td01 text-nowrap text-left&#34; id=&#34;TBL-9-4-1&#34;&gt;
                  &lt;span class=&#34;obeylines-h&#34;&gt;&lt;code class=&#34;verb&#34;&gt;^(.*\.)?keyword$&lt;/code&gt;&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-9-4-2&#34;&gt;1&amp;amp;4&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-4-3&#34;&gt;163,355&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-4-4&#34;&gt;85%&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-4-5&#34;&gt;248,770&lt;/td&gt;
                &lt;td class=&#34;td10 text-nowrap text-right&#34; id=&#34;TBL-9-4-6&#34;&gt;64%&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-9-5-&#34;&gt;
                &lt;td class=&#34;td01 text-nowrap text-left&#34; id=&#34;TBL-9-5-1&#34;&gt;
                  &lt;span class=&#34;obeylines-h&#34;&gt;&lt;code class=&#34;verb&#34;&gt;^keyword$&lt;/code&gt;&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-9-5-2&#34;&gt;1&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-5-3&#34;&gt;17,764&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-5-4&#34;&gt;9.3%&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-5-5&#34;&gt;3&lt;/td&gt;
                &lt;td class=&#34;td10 text-nowrap text-right&#34; id=&#34;TBL-9-5-6&#34;&gt;0.0%&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-9-6-&#34;&gt;
                &lt;td class=&#34;td01 text-nowrap text-left&#34; id=&#34;TBL-9-6-1&#34;&gt;
                  &lt;span class=&#34;obeylines-h&#34;&gt;&lt;code class=&#34;verb&#34;&gt;^(.*\.)?keyword&lt;/code&gt;&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-9-6-2&#34;&gt;1–4&amp;amp;6&amp;amp;7&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-6-3&#34;&gt;7,272&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-6-4&#34;&gt;3.8%&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-6-5&#34;&gt;–&lt;/td&gt;
                &lt;td class=&#34;td10 text-nowrap text-right&#34; id=&#34;TBL-9-6-6&#34;&gt;–&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-9-7-&#34;&gt;
                &lt;td class=&#34;td01 text-nowrap text-left&#34; id=&#34;TBL-9-7-1&#34;&gt;
                  &lt;span class=&#34;obeylines-h&#34;&gt;&lt;code class=&#34;verb&#34;&gt;keyword$&lt;/code&gt;&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-9-7-2&#34;&gt;1&amp;amp;4&amp;amp;5&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-7-3&#34;&gt;2,483&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-7-4&#34;&gt;1.3%&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-7-5&#34;&gt;139,575&lt;/td&gt;
                &lt;td class=&#34;td10 text-nowrap text-right&#34; id=&#34;TBL-9-7-6&#34;&gt;36%&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-9-8-&#34;&gt;
                &lt;td class=&#34;td01 text-nowrap text-left&#34; id=&#34;TBL-9-8-1&#34;&gt;
                  &lt;span class=&#34;obeylines-h&#34;&gt;&lt;code class=&#34;verb&#34;&gt;keyword&lt;/code&gt;&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-9-8-2&#34;&gt;0–8&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-8-3&#34;&gt;647&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-8-4&#34;&gt;0.3%&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-8-5&#34;&gt;–&lt;/td&gt;
                &lt;td class=&#34;td10 text-nowrap text-right&#34; id=&#34;TBL-9-8-6&#34;&gt;–&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-9-9-&#34;&gt;
                &lt;td class=&#34;td01 text-nowrap text-left&#34; id=&#34;TBL-9-9-1&#34;&gt;
                  &lt;span class=&#34;obeylines-h&#34;&gt;&lt;code class=&#34;verb&#34;&gt;\.keyword$&lt;/code&gt;&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-9-9-2&#34;&gt;4&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-9-3&#34;&gt;429&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-9-4&#34;&gt;0.2%&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-9-5&#34;&gt;4&lt;/td&gt;
                &lt;td class=&#34;td10 text-nowrap text-right&#34; id=&#34;TBL-9-9-6&#34;&gt;0.0%&lt;/td&gt;
              &lt;/tr&gt;

              &lt;tr id=&#34;TBL-9-10-&#34;&gt;
                &lt;td class=&#34;td01 text-nowrap text-left&#34; id=&#34;TBL-9-10-1&#34;&gt;
                  &lt;span class=&#34;obeylines-h&#34;&gt;&lt;code class=&#34;verb&#34;&gt;^keyword&lt;/code&gt;&lt;/span&gt;
                &lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-left&#34; id=&#34;TBL-9-10-2&#34;&gt;1&amp;amp;2&amp;amp;3&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-10-3&#34;&gt;36&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-10-4&#34;&gt;0.0%&lt;/td&gt;
                &lt;td class=&#34;td11 text-nowrap text-right&#34; id=&#34;TBL-9-10-5&#34;&gt;–&lt;/td&gt;
                &lt;td class=&#34;td10 text-nowrap text-right&#34; id=&#34;TBL-9-10-6&#34;&gt;–&lt;/td&gt;
              &lt;/tr&gt;
            &lt;/table&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;!-- l. 2103 --&gt;&lt;h2 class=&#34;sectionHead&#34; id=&#34;6&#34;&gt;&lt;a id=&#34;sec:6-circumvention-strategies&#34; href=&#34;#sec:6-circumvention-strategies&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;6.&lt;/span&gt; 规避策略&lt;/a&gt;&lt;/h2&gt;
        &lt;!-- l. 2106 --&gt;&lt;p class=&#39;indent&#39;&gt;   基于我们在&lt;a href=&#39;#sec:4.3-how-the-henan-firewall-parses-connections&#39;&gt;第4.3节&lt;/a&gt;中发现的解析逻辑缺陷，以及在&lt;a href=&#39;#sec:4.4-how-the-henan-firewall-blocks-traffic&#39;&gt;第4.4节&lt;/a&gt;中观察到的注入行为和指纹，我们介绍了一些简单但有效的策略来绕过河南防火墙。所有策略都只需要客户端进行更改，无需服务器端配合，因此易于采用和实施。这些策略已被各种流行的规避工具实现，包括但不限于 Xray &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Xray&#39;&gt;76&lt;/a&gt;]&lt;/span&gt;、GoodbyeDPI &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:GoodbyeDPI&#39;&gt;77&lt;/a&gt;]&lt;/span&gt; 和 Shadowrocket &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:shadowrocket&#39;&gt;78&lt;/a&gt;]&lt;/span&gt;。
        &lt;/p&gt;
        &lt;!-- l. 2118 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;启用任意 TCP 选项字段。   &lt;/span&gt;如&lt;a href=&#39;#sec:4.3-how-the-henan-firewall-parses-connections&#39;&gt;第4.3节&lt;/a&gt;所述，河南防火墙只能解析和封锁 TCP 头部长度为 20 字节的数据包。在操作系统上启用任何 TCP 选项都会导致 TCP 头部长度超过 20 字节。虽然这种规避方案依赖于河南防火墙不寻常的实现方式，但用户或规避工具可以轻松利用这一特性来规避审查。例如，启用 TCP 时间戳（在某些 Windows 版本上默认禁用）将绕过河南防火墙的封锁 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:net4people442&#39;&gt;56&lt;/a&gt;, &lt;a href=&#39;#cite:tsinbei_tcp_timestamps&#39;&gt;59&lt;/a&gt;]&lt;/span&gt;。
        &lt;/p&gt;
        &lt;!-- l. 2149 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;丢弃带有特定载荷的 TCP &lt;/span&gt;&lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; &lt;span class=&#39;ptmb8t-&#39;&gt;数据包。   &lt;/span&gt;如&lt;a href=&#39;#sec:4.4-how-the-henan-firewall-blocks-traffic&#39;&gt;第4.4节&lt;/a&gt;所示，河南防火墙注入的 TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包带有一个不寻常的 10 字节载荷 &lt;span class=&#39;colorbox&#39; id=&#39;colorbox33&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;01&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox34&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;02&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox35&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox36&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;04&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox37&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;05&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox38&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;06&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox39&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;07&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox40&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;08&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox41&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;09&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox42&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;。其独特性使得客户端可以只丢弃由河南防火墙伪造的 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包，同时保留服务器发送的真实的 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包。通常情况下，仅丢弃发送给客户端的 TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包不足以规避 GFW 的 TCP &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 审查，因为 GFW 也会向服务器注入 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包。然而，正如&lt;a href=&#39;#sec:4.4-how-the-henan-firewall-blocks-traffic&#39;&gt;第4.4节&lt;/a&gt;所解释的，河南防火墙仅向客户端注入 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包，因此丢弃发送给客户端的 &lt;span class=&#39;cmtt-10&#39;&gt;RST&lt;/span&gt; 数据包足以规避审查。这种规避策略可以通过 &lt;span class=&#39;cmtt-10&#39;&gt;iptables&lt;/span&gt; 规则轻松实现，类似于 Clayton 等人 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Clayton2006a&#39;&gt;6&lt;/a&gt; §5]&lt;/span&gt; 介绍的方法。
        &lt;/p&gt;
        &lt;!-- l. 2169 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;将 TLS ClientHello 分割或分片到多个数据包中。   &lt;/span&gt;如&lt;a href=&#39;#sec:4.3-how-the-henan-firewall-parses-connections&#39;&gt;第4.3节&lt;/a&gt;所解释的，河南防火墙不执行 TCP 重组，河南防火墙和 GFW 都不执行 TLS 重组 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Niere2023a&#39;&gt;65&lt;/a&gt;]&lt;/span&gt;。因此，客户端可以通过将 TCP 数据包分割或将 TLS ClientHello 消息分片到多个 TLS 记录中来规避河南防火墙 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Niere2023a&#39;&gt;65&lt;/a&gt;]&lt;/span&gt;。

        &lt;!-- l. 2206 --&gt;&lt;h2 class=&#34;sectionHead&#34; id=&#34;7&#34;&gt;&lt;a id=&#34;sec:7-ethics&#34; href=&#34;#sec:7-ethics&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;7.&lt;/span&gt; 伦理&lt;/a&gt;&lt;/h2&gt;
        &lt;!-- l. 2209 --&gt;&lt;p class=&#39;indent&#39;&gt;   审查测量研究，特别是在威权政权下，需要在整个研究过程中进行仔细的伦理考量并对潜在的风险进行持续评估。在这项工作中，我们所有的审查测量都是在我们控制的机器上进行的，网络流量由我们的程序自动生成。这是审查测量研究中的一种常见做法，旨在减轻对互联网上其他主机的负担并避免给互联网用户带来风险 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;3&lt;/a&gt;, &lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;4&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2024a&#39;&gt;9&lt;/a&gt;, &lt;a href=&#39;#cite:Alice2020a&#39;&gt;14&lt;/a&gt;, &lt;a href=&#39;#cite:Wu2023a&#39;&gt;15&lt;/a&gt;]&lt;/span&gt;。在分析大学网络上的真实世界流量时，我们仅收集了数据包的 TCP 头部长度字段，没有捕获任何可识别个人身份的信息或其他敏感信息。由于本研究不涉及人类受试者，因此 IRB 批准不适用，我们遵循了《门洛报告》(Menlo Report) &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:menlo-report&#39;&gt;81&lt;/a&gt;]&lt;/span&gt; 中概述的伦理指南。我们的研究团队还咨询了对中国审查制度及其法律问题有深入了解的专家。下面，我们讨论了我们识别出的潜在风险以及为减少这些风险所采取的措施 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:menlo-report&#39;&gt;81&lt;/a&gt; §C.3.2]&lt;/span&gt;。
        &lt;/p&gt;
        &lt;!-- l. 2234 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;流量分析。   &lt;/span&gt;为了评估河南防火墙的有效性，我们测量了大学网络上所有 TCP 数据包的 TCP 头部长度字段。我们获得大学隐私和安全办公室的批准以使用这一网络数据。我们还与具有管理类似项目经验的校园网络和安全团队密切合作。这种批准和合作确保我们遵循了标准的安全程序，遵守了网络使用政策，尊重了用户隐私，并最小化了网络的攻击面。此外，我们将用于网络分析的服务器设计为仅接收流量镜像，以确保即使在我们的系统故障时也不会对网络用户的数据产生影响。
        &lt;/p&gt;
        &lt;!-- l. 2248 --&gt;&lt;p class=&#39;indent&#39;&gt;   我们设计实验以避免收集任何可能与个人关联的潜在敏感信息，例如 IP 地址。具体来说，我们仅以聚合方式收集了所有 TCP 头部中的 4 位数据偏移字段。我们从未手动检查或记录任何原始流量数据。我们奉行最小权限原则，仅将对网络流量分析服务器的访问权限授权给我们团队中一部分的成员。
        &lt;/p&gt;
        &lt;!-- l. 2259 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;测量点。   &lt;/span&gt;在受审查区域内获取测量点已变得越来越具有挑战性。然而，我们旨在回答的两个关键研究问题需要在中国境内实现多样化的测量点覆盖：1）河南防火墙是否也部署在中国的其他省份？2）其他省份是否也部署了自己的地区性审查设备？我们格外小心地在尽可能寻找多样化的测量点与可能带来的潜在风险之间寻求平衡 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:menlo-report&#39;&gt;81&lt;/a&gt; §C.3.2]&lt;/span&gt;。例如，虽然使用住宅测量点可以让我们从中国更多的网络位置观察到审查情况，但考虑到这样做可能给不知情的用户带来风险 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Mi2019-resident-evil&#39;&gt;61&lt;/a&gt;]&lt;/span&gt;，我们决定不使用它们。
        &lt;/p&gt;
        &lt;!-- l. 2276 --&gt;&lt;p class=&#39;indent&#39;&gt;   我们还探讨了从省外或中国境外远程测量河南防火墙的可能性，这将进一步降低从该区域内部发起连接的风险；然而，正如&lt;a href=&#39;#sec:4.2-what-traffic-is-targeted&#39;&gt;第4.2节&lt;/a&gt;所述，这种方式无法触发河南防火墙。
        &lt;/p&gt;
        &lt;!-- l. 2281 --&gt;&lt;p class=&#39;indent&#39;&gt;   因此，我们遵循先前工作 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Alice2020a&#39;&gt;14&lt;/a&gt;, &lt;a href=&#39;#cite:Wu2023a&#39;&gt;15&lt;/a&gt;]&lt;/span&gt; 中概述的基本原理和常见做法，策略性地选择了由大型商业云提供商提供的测量点，以减轻针对个人的潜在法律风险。我们使用我们团队中一位既非中国公民也不居住在中国的研究人员的准确身份和联系信息注册了我们的 VPS 账户。在整个研究过程中，我们没有收到来自提供商的任何投诉。为了避免我们的机器导致其他云用户的资源被审查者封锁的可能性，我们为每台机器分配了单独的 IP 地址。
        &lt;/p&gt;
&lt;!-- l. 2293 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;探测速率与设计。&lt;/span&gt;为了避免给我们的测量点和探测经过的网络带来过载，我们限制发送到水槽服务器的传输速率。对于 &lt;a href=&#39;#sec:3-detecting-regional-censorship&#39;&gt;第 3 节&lt;/a&gt; 和 &lt;a href=&#39;#sec:4-characterizing-the-censorship-devices&#39;&gt;第 4 节&lt;/a&gt; 中的实验，我们将探测速率限制为每秒最多一次连接；对于 &lt;a href=&#39;#sec:5-understanding-the-blocklists&#39;&gt;第 5 节&lt;/a&gt; 中的实验，我们对每个客户端设置了最高 1 Mbps 的流量上限。虽然我们的探测被审查方记录的风险和潜在危害很小，但我们在实验设计中也考虑了合理否认性（plausible deniability）。也就是说，由于我们的水槽服务器从未回复任何 ServerHello 消息或 HTTP 响应，且未曾建立完整的 TLS 或 HTTP 连接，因此我们的测量行为并不类似用户访问被审查网站时的情形。&lt;/p&gt;

        &lt;!-- l. 2357 --&gt;&lt;h2 class=&#34;sectionHead&#34; id=&#34;8&#34;&gt;&lt;a id=&#34;sec:8-conclusion&#34; href=&#34;#sec:8-conclusion&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;8.&lt;/span&gt; 结论&lt;/a&gt;&lt;/h2&gt;
        &lt;!-- l. 2373 --&gt;&lt;p class=&#39;indent&#39;&gt;   在本文中，我们揭示并记录了中国互联网审查策略中一个令人警惕的迹象：我们对中国七个不同城市和省份的测量表明河南省存在一个全新的地区性防火墙。这个河南防火墙对离开该省的流量实施基于 HTTP Host 和 TLS SNI 的审查。与 GFW 相比，它展现出独特的特征，包括独特的数据包注入行为和指纹、不同的连接追踪、解析和封锁逻辑、一个一度比GFW大十倍且更动态的封锁列表，以及更靠近客户端的网络位置。这种本地化的审查表明中国可能正在偏离其集中化的审查体系，允许地方当局在各自区域内施加更大程度的控制。我们提出了一些简单但有效的规避技术来绕过河南的审查系统，这些技术已被各种流行的规避工具所整合。我们希望我们的研究能向更广泛的审查研究社区发出警报，使其意识到并进一步研究中国及其他地区新兴的地区性审查。
        &lt;/p&gt;
        &lt;!-- l. 2411 --&gt;&lt;h2 class=&#34;sectionHead&#34; id=&#34;availability&#34;&gt;
            &lt;a id=&#34;sec:availability&#34; href=&#34;#sec:availability&#34;&gt;
                可用性&lt;/a&gt;
        &lt;/h2&gt;
        &lt;!-- l. 2412 --&gt;&lt;p class=&#39;indent&#39;&gt;   为了鼓励未来的研究并促进透明度和可复现性，我们公开了代码、匿名化的数据以及持续更新的封锁列表。为了提高可访问性，本文还提供了中英双语的 HTML 网页版本。项目主页位于： &lt;a class=&#39;url&#39; href=&#39;https://gfw.report/publications/sp25/en&#39;&gt;https://gfw.report/publications/sp25/en&lt;/a&gt;。
        &lt;/p&gt;
        &lt;!-- l. 2420 --&gt;&lt;h2 class=&#34;sectionHead&#34; id=&#34;acknowledgments&#34;&gt;
            &lt;a id=&#34;sec:acknowledgments&#34; href=&#34;#sec:acknowledgments&#34;&gt;
                致谢&lt;/a&gt;
        &lt;/h2&gt;
        &lt;!-- l. 2421 --&gt;&lt;p class=&#39;indent&#39;&gt;   我们感谢我们的牧羊人和其他匿名审稿人提出的宝贵意见和反馈。我们也感谢勇敢的中国用户们立即报告并积极研究封锁事件，包括但不限于 5e2t、Hsukqi、ThEWiZaRd0fBsoD、louiesun 和 lemon99ee。我们感谢 ValdikSS、radioactiveAHM、RPRX、Fangliding、GFW-knocker、sambali9、rrouzbeh、nekohasekai、znlihk、V2Ray 开发者、Hysteria 开发者、Shadowrocket 开发者以及许多其他开发者提供的有益讨论，并/或将 TCP 分割和/或 TLS 分片功能集成到他们各自的翻墙工具中。我们还要感谢 Jackson Sippe、Jade Sheffey、Paul Flammarion、斯坦福实证安全研究小组、斯坦福大学安全和网络团队以及许多其他希望保持匿名的个人提供的有益讨论和支持。我们感谢 Net4People BBS、NTC Party 论坛、Xray 社区、V2Ray 社区和 sing-box 社区为审查讨论提供了在线空间。我们感谢 David Fifield 在整个项目过程中提供的反馈、支持与指导。
        &lt;/p&gt;
        &lt;!-- l. 2465 --&gt;&lt;p class=&#39;indent&#39;&gt;   这项工作部分得到了美国国家科学基金会（NSF）的资助，项目编号为 CNS-2145783、CNS-2319080 和 CNS-2333965，部分得到了斯隆研究奖学金以及美国国防高级研究计划局（DARPA）的青年教师奖计划（项目编号 DARPA-RA-21-03-09-YFA9-FP-003）的支持。文中所表达的观点、意见和/或发现仅代表作者本人，不应被解读为代表美国国防部或美国政府的官方观点或政策。
        &lt;/p&gt;        &lt;!-- l. 2 --&gt;&lt;h2 class=&#34;sectionHead&#34; id=&#34;references&#34;&gt;
            &lt;a id=&#34;sec:references&#34; href=&#34;#sec:references&#34;&gt;引用&lt;/a&gt;
        &lt;/h2&gt;
        &lt;div class=&#34;bibliography&#34;&gt;
            &lt;ol class=&#34;citation-numbering&#34;&gt;
                &lt;!-- 1 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Duan2012a&#34;&gt;&lt;/a&gt; H. Duan, N. Weaver, Z. Zhao, M. Hu, J. Liang, J. Jiang, K. Li, and V. Paxson, “Hold-On: Protecting against on-path DNS poisoning,” in Securing and Trusting Internet Names. National Physical Laboratory, 2012. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.icir.org/vern/papers/hold-on.satin12.pdf&#34;&gt;https://www.icir.org/vern/papers/hold-on.satin12.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 2 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Chai2019a&#34;&gt;&lt;/a&gt; Z. Chai, A. Ghafari, and A. Houmansadr, “On the importance of encrypted-SNI (ESNI) to censorship circumvention,” in Free and Open Communications on the Internet. USENIX, 2019. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/foci19-paper_chai_update.pdf&#34;&gt;https://www.usenix.org/system/files/foci19-paper_chai_update.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 3 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Hoang2021a&#34;&gt;&lt;/a&gt; N. P. Hoang, A. A. Niaki, J. Dalek, J. Knockel, P. Lin, B. Marczak, M. Crete-Nishihata, P. Gill, and M. Polychronakis, “How great is the Great Firewall? Measuring China’s DNS censorship,” in USENIX Security Symposium. USENIX, 2021. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/sec21-hoang.pdf&#34;&gt;https://www.usenix.org/system/files/sec21-hoang.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 4 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Anonymous2020a&#34;&gt;&lt;/a&gt; Anonymous, A. A. Niaki, N. P. Hoang, P. Gill, and A. Houmansadr, “Triplet censors: Demystifying Great Firewall’s DNS censorship behavior,” in Free and Open Communications on the Internet. USENIX, 2020. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/foci20-paper-anonymous_0.pdf&#34;&gt;https://www.usenix.org/system/files/foci20-paper-anonymous_0.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 5 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Fan2025a&#34;&gt;&lt;/a&gt; S. Fan, J. Sippe, S. San, J. Sheffey, D. Fifield, A. Houmansadr, E. Wedwards, and E. Wustrow, “Wallbleed: A memory disclosure vulnerability in the Great Firewall of China,” in Network and Distributed System Security. The Internet Society, 2025. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://gfw.report/publications/ndss25/data/paper/wallbleed.pdf&#34;&gt;https://gfw.report/publications/ndss25/data/paper/wallbleed.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 6 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Clayton2006a&#34;&gt;&lt;/a&gt; R. Clayton, S. J. Murdoch, and R. N. M. Watson, “Ignoring the Great Firewall of China,” in Privacy Enhancing Technologies. Springer, 2006, pp. 20–35. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.cl.cam.ac.uk/~rnc1/ignoring.pdf&#34;&gt;https://www.cl.cam.ac.uk/~rnc1/ignoring.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 7 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Wang2017a&#34;&gt;&lt;/a&gt; Z. Wang, Y. Cao, Z. Qian, C. Song, and S. V. Krishnamurthy, “Your state is not mine: A closer look at evading stateful Internet censorship,” in Internet Measurement Conference. ACM, 2017. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.cs.ucr.edu/~krish/imc17.pdf&#34;&gt;https://www.cs.ucr.edu/~krish/imc17.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 8 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Rambert2021a&#34;&gt;&lt;/a&gt; R. Rambert, Z. Weinberg, D. Barradas, and N. Christin, “Chinese wall or Swiss cheese? keyword filtering in the Great Firewall of China,” in WWW. ACM, 2021. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://censorbib.nymity.ch/pdf/Rambert2021a.pdf&#34;&gt;https://censorbib.nymity.ch/pdf/Rambert2021a.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 9 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Hoang2024a&#34;&gt;&lt;/a&gt; N. P. Hoang, J. Dalek, M. Crete-Nishihata, N. Christin, V. Yegneswaran, M. Polychronakis, and N. Feamster, “GFWeb: Measuring the Great Firewall’s Web censorship at scale,” in USENIX Security Symposium. USENIX, 2024. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/sec24fall-prepub-310-hoang.pdf&#34;&gt;https://www.usenix.org/system/files/sec24fall-prepub-310-hoang.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 10 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Bock2020ESNI&#34;&gt;&lt;/a&gt; K. Bock, iyouport, Anonymous, L.-H. Merino, D. Fifield, A. Houmansadr, and D. Levin. (2020, Aug.) Exposing and circumventing China’s censorship of ESNI. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/43#issuecomment-673322409&#34;&gt;https://github.com/net4people/bbs/issues/43#issuecomment-673322409&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 11 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Bock2021c&#34;&gt;&lt;/a&gt; K. Bock,  G. Naval,  K. Reese,  and  D. Levin,  “Even  censors  have  a  backup:  Examining  China’s  double  HTTPS  censorship  middleboxes,”  in  Free and Open Communications on the Internet.    ACM,  2021.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://doi.org/10.1145/3473604.3474559&#34;&gt;https://doi.org/10.1145/3473604.3474559&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 12 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Ensafi2015b&#34;&gt;&lt;/a&gt; R. Ensafi,  D. Fifield,  P. Winter,  N. Feamster,  N. Weaver,  and  V. Paxson,  “Examining how the Great Firewall discovers hidden circumvention servers,”  in  Internet Measurement Conference.    ACM,  2015.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://conferences2.sigcomm.org/imc/2015/papers/p445.pdf&#34;&gt;https://conferences2.sigcomm.org/imc/2015/papers/p445.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 13 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Dunna2018a&#34;&gt;&lt;/a&gt; A. Dunna,  C. O’Brien,  and  P. Gill,  “Analyzing  China’s  blocking  of  unpublished  Tor  bridges,”  in  Free  and  Open  Communications  on  the Internet.    USENIX,  2018.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci18/foci18-paper-dunna.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci18/foci18-paper-dunna.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 14 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Alice2020a&#34;&gt;&lt;/a&gt; Alice,  Bob,  Carol,  J. Beznazwy,  and  A. Houmansadr,  “How  China  detects  and  blocks  Shadowsocks,”  in  Internet Measurement Conference.    ACM,  2020.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://censorbib.nymity.ch/pdf/Alice2020a.pdf&#34;&gt;https://censorbib.nymity.ch/pdf/Alice2020a.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 15 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Wu2023a&#34;&gt;&lt;/a&gt; M. Wu,  J. Sippe,  D. Sivakumar,  J. Burg,  P. Anderson,  X. Wang,  K. Bock,  A. Houmansadr,  D. Levin,  and  E. Wustrow,  “How  the  Great Firewall  of  China  detects  and  blocks  fully  encrypted  traffic,”  in  USENIX Security Symposium.    USENIX,  2023.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/sec23fall-prepub-234-wu-mingshi.pdf&#34;&gt;https://www.usenix.org/system/files/sec23fall-prepub-234-wu-mingshi.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 16 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Sakamoto2024a&#34;&gt;&lt;/a&gt; Sakamoto  and  E. Wedwards,  “Bleeding  wall:  A  hematologic  examination  on  the  Great  Firewall,”  in  Free  and  Open  Communications  on  the Internet,  2024.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://www.petsymposium.org/foci/2024/foci-2024-0002.pdf&#34;&gt;https://www.petsymposium.org/foci/2024/foci-2024-0002.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 17 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Xu2011a&#34;&gt;&lt;/a&gt; X. Xu,  Z. M. Mao,  and  J. A. Halderman,  “Internet censorship in China: Where does the filtering occur?”  in  Passive and Active Measurement Conference.    Springer,  2011, pp. 133–142.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://web.eecs.umich.edu/~zmao/Papers/china-censorship-pam11.pdf&#34;&gt;https://web.eecs.umich.edu/~zmao/Papers/china-censorship-pam11.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 18 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Wright2012a&#34;&gt;&lt;/a&gt; J. Wright,  “Regional  variation  in  Chinese  Internet  filtering,”  University  of  Oxford,  Tech.  Rep.,  2012.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://papers.ssrn.com/sol3/Delivery.cfm/SSRN_ID2265775_code1448244.pdf?abstractid=2265775&amp;amp;mirid=3&#34;&gt;https://papers.ssrn.com/sol3/Delivery.cfm/SSRN_ID2265775_code1448244.pdf?abstractid=2265775&amp;amp;mirid=3&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 19 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Henan-user-report&#34;&gt;&lt;/a&gt; Anonymous,  “Issue 2426 | XTLS/Xray-core,”  &lt;a class=&#34;url&#34; href=&#34;https://github.com/XTLS/Xray-core/issues/2426&#34;&gt;https://github.com/XTLS/Xray-core/issues/2426&lt;/a&gt;,  2023,  (Accessed on 02/06/2024).
                &lt;/li&gt;
                &lt;!-- 20 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:2022-tls-blocking&#34;&gt;&lt;/a&gt; G. Report.  (2022, Oct.)  Large  scale  blocking  of  TLS-based  censorship  circumvention  tools  in  China.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/129&#34;&gt;https://github.com/net4people/bbs/issues/129&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 21 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Farnan2016a&#34;&gt;&lt;/a&gt; O. Farnan,  A. Darer,  and  J. Wright,  “Poisoning  the  well  –  exploring  the  Great  Firewall’s  poisoned  DNS  responses,”  in  Workshop  on  Privacy in the Electronic Society.    ACM,  2016.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://dl.acm.org/authorize?N25517&#34;&gt;https://dl.acm.org/authorize?N25517&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 22 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Anonymous2014a&#34;&gt;&lt;/a&gt; Anonymous,  “Towards  a  comprehensive  picture  of  the  Great  Firewall’s  DNS  censorship,”  in  Free  and  Open  Communications  on  the  Internet.  USENIX,  2014.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci14/foci14-anonymous.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci14/foci14-anonymous.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 23 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Dong2002a&#34;&gt;&lt;/a&gt; B. Dong,  “A  report  about  national  DNS  spoofing  in  China  on  Sept. 28th,”  Dynamic Internet Technology, Inc.,  Tech.  Rep.,  Oct. 2002.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://web.archive.org/web/20021015121616/http://www.dit-inc.us/hj-09-02.html&#34;&gt;https://web.archive.org/web/20021015121616/http://www.dit-inc.us/hj-09-02.html&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 24 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Zittrain2003a&#34;&gt;&lt;/a&gt; J. Zittrain  and  B. G. Edelman,  “Internet  filtering  in  China,”  IEEE Internet Computing,  vol. 7, no. 2, pp. 70–77, Mar. 2003.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://nrs.harvard.edu/urn-3:HUL.InstRepos:9696319&#34;&gt;https://nrs.harvard.edu/urn-3:HUL.InstRepos:9696319&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 25 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Lowe2007a&#34;&gt;&lt;/a&gt; G. Lowe,  P. Winters,  and  M. L. Marcus,  “The  great  DNS  wall  of  China,”  New  York  University,  Tech.  Rep.,  2007.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://censorbib.nymity.ch/pdf/Lowe2007a.pdf&#34;&gt;https://censorbib.nymity.ch/pdf/Lowe2007a.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 26 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:gfw-looking-glass-post&#34;&gt;&lt;/a&gt; Anonymous.  (2020, Mar.)  GFW  archaeology:  gfw-looking-glass.sh.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/25&#34;&gt;https://github.com/net4people/bbs/issues/25&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 27 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:tang2016depth&#34;&gt;&lt;/a&gt; C. Tang,  “In-depth analysis of the Great Firewall of China,”  &lt;a class=&#34;url&#34; href=&#34;http://www.cs.tufts.edu/comp/116/archive/fall2016/ctang.pdf&#34;&gt;http://www.cs.tufts.edu/comp/116/archive/fall2016/ctang.pdf&lt;/a&gt;,  2016.
                &lt;/li&gt;
                &lt;!-- 28 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Bock2021b&#34;&gt;&lt;/a&gt; K. Bock,  A. Alaraj,  Y. Fax,  K. Hurley,  E. Wustrow,  and  D. Levin,  “Weaponizing  middleboxes  for  TCP  reflected  amplification,”  in  USENIX Security Symposium.    USENIX,  2021.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/sec21-bock.pdf&#34;&gt;https://www.usenix.org/system/files/sec21-bock.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 29 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Sparks2012a&#34;&gt;&lt;/a&gt; Sparks,  Neo,  Tank,  Smith,  and  Dozer,  “The  collateral  damage  of  Internet  censorship  by  DNS  injection,”  SIGCOMM Computer Communication Review,  vol. 42, no. 3, pp. 21–27, 2012.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://conferences.sigcomm.org/sigcomm/2012/paper/ccr-paper266.pdf&#34;&gt;https://conferences.sigcomm.org/sigcomm/2012/paper/ccr-paper266.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 30 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Marczak2015a&#34;&gt;&lt;/a&gt; B. Marczak,  N. Weaver,  J. Dalek,  R. Ensafi,  D. Fifield,  S. McKune,  A. Rey,  J. Scott-Railton,  R. Deibert,  and  V. Paxson,  “An  analysis of China’s “Great Cannon”,”  in  Free and Open Communications on the Internet.     USENIX,  2015.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci15/foci15-paper-marczak.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci15/foci15-paper-marczak.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 31 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Pearce2017b&#34;&gt;&lt;/a&gt; P. Pearce,  B. Jones,  F. Li,  R. Ensafi,  N. Feamster,  N. Weaver,  and  V. Paxson,  “Global  measurement  of  DNS  manipulation,”  in  USENIX Security Symposium.    USENIX,  2017.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/usenixsecurity17/sec17-pearce.pdf&#34;&gt;https://www.usenix.org/system/files/conference/usenixsecurity17/sec17-pearce.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 32 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Filasto2012a&#34;&gt;&lt;/a&gt; A. Filastò  and  J. Appelbaum,  “OONI:  Open observatory of network interference,”  in  Free and Open Communications on the Internet.    USENIX,  2012.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci12/foci12-final12.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci12/foci12-final12.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 33 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Raman2020c&#34;&gt;&lt;/a&gt; R. S. Raman,  P. Shenoy,  K. Kohls,  and  R. Ensafi,  “Censored Planet: An Internet-wide, longitudinal censorship observatory,”  in  Computer and Communications Security.    ACM,  2020.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://www.ramakrishnansr.com/assets/censoredplanet.pdf&#34;&gt;https://www.ramakrishnansr.com/assets/censoredplanet.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 34 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Niaki2020a&#34;&gt;&lt;/a&gt; A. A. Niaki,  S. Cho,  Z. Weinberg,  N. P. Hoang,  A. Razaghpanah,  N. Christin,  and  P. Gill,  “ICLab:  A  global,  longitudinal internet  censorship  measurement  platform,”  in  Symposium on Security &amp; Privacy.    IEEE,  2020.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://people.cs.umass.edu/~phillipa/papers/oakland2020.pdf&#34;&gt;https://people.cs.umass.edu/~phillipa/papers/oakland2020.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 35 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:greatfire_analyzer&#34;&gt;&lt;/a&gt; GreatFire,  “GreatFire Analyzer,”  &lt;a class=&#34;url&#34; href=&#34;https://en.greatfire.org/analyzer&#34;&gt;https://en.greatfire.org/analyzer&lt;/a&gt;,  n.d.,  accessed:  2025-04-18.
                &lt;/li&gt;
                &lt;!-- 36 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:greatfire_blocky&#34;&gt;&lt;/a&gt; GreatFire,  “Blocky,”  &lt;a class=&#34;url&#34; href=&#34;https://blocky.greatfire.org/&#34;&gt;https://blocky.greatfire.org/&lt;/a&gt;,  accessed:  2025-04-18.
                &lt;/li&gt;
                &lt;!-- 37 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:cat-and-mouse&#34;&gt;&lt;/a&gt; Anonymous  and  Amonymous.  (2022, Oct.)  Sharing a modified Shadowsocks as well as our thoughts on the cat-and-mouse game.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/136&#34;&gt;https://github.com/net4people/bbs/issues/136&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 38 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Winter-obfs2-probe&#34;&gt;&lt;/a&gt; P. Winter.  (2013, Mar.)  GFW actively probes obfs2bridges.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://bugs.torproject.org/8591&#34;&gt;https://bugs.torproject.org/8591&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 39 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Winter2012a&#34;&gt;&lt;/a&gt; P. Winter  and  S. Lindskog,  “How the Great Firewall of China is blocking Tor,”  in  Free and Open Communications on the Internet.    USENIX,  2012.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci12/foci12-final2.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci12/foci12-final2.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 40 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                &lt;a id=&#34;cite:knock-knock-tor&#34;&gt;&lt;/a&gt; T. Wilde.  (2012)  Knock knock knockin’ on bridges’ doors.  [Online].  Available:  &lt;a class=&#34;url&#34; href=&#34;https://blog.torproject.org/blog/knock-knock-knockin-bridges-doors&#34;&gt;https://blog.torproject.org/blog/knock-knock-knockin-bridges-doors&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 41 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Anonymous2021ShadowsocksAdvise&#34;&gt;&lt;/a&gt; Anonymous, Anonymous, Anonymous, D. Fifield, and A. Houmansadr. (2021, Jan.) A practical guide to defend against the GFW’s latest active
                    probing. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/58&#34;&gt;https://github.com/net4people/bbs/issues/58&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 42 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Anonymous2021ShadowsocksTutorial&#34;&gt;&lt;/a&gt; Anonymous.     (2021,     Jan.)     How     to     Deploy     a     Censorship     Resistant     Shadowsocks-libev     Server.     [Online].     Available:     &lt;a class=&#34;url&#34; href=&#34;https://gfw.report/blog/ss_tutorial/en/&#34;&gt;https://gfw.report/blog/ss_tutorial/en/&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 43 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Frolov2020a&#34;&gt;&lt;/a&gt; S. Frolov, J. Wampler, and E. Wustrow, “Detecting probe-resistant proxies,” in &lt;em&gt;Network and Distributed System Security&lt;/em&gt;. The Internet Society, 2020. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.ndss-symposium.org/wp-content/uploads/2020/02/23087.pdf&#34;&gt;https://www.ndss-symposium.org/wp-content/uploads/2020/02/23087.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 44 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Frolov2020b&#34;&gt;&lt;/a&gt; S. Frolov and E. Wustrow, “HTTPT: A probe-resistant proxy,” in &lt;em&gt;Free and Open Communications on the Internet&lt;/em&gt;. USENIX, 2020. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/foci20-paper-frolov.pdf&#34;&gt;https://www.usenix.org/system/files/foci20-paper-frolov.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 45 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Xue2022b&#34;&gt;&lt;/a&gt; D. Xue, B. Mixon-Baca, ValdikSS, A. Ablove, B. Kujath, J. R. Crandall, and R. Ensafi, “TSPU: Russia’s decentralized censorship system,” in &lt;em&gt;Internet Measurement Conference&lt;/em&gt;. ACM, 2022. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://dl.acm.org/doi/pdf/10.1145/3517745.3561461&#34;&gt;https://dl.acm.org/doi/pdf/10.1145/3517745.3561461&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 46 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Ortwein2023a&#34;&gt;&lt;/a&gt; A. Ortwein, K. Bock, and D. Levin, “Towards a comprehensive understanding of Russian transit censorship,” in &lt;em&gt;Free and Open Communications on the Internet&lt;/em&gt;, 2023. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.petsymposium.org/foci/2023/foci-2023-0012.pdf&#34;&gt;https://www.petsymposium.org/foci/2023/foci-2023-0012.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 47 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Ramesh2020a&#34;&gt;&lt;/a&gt; R. Ramesh, R. S. Raman, M. Bernhard, V. Ongkowijaya, L. Evdokimov, A. Edmundson, S. Sprecher, M. Ikram, and R. Ensafi, “Decentralized control:   A   case   study   of   Russia,”   in   &lt;em&gt;Network   and   Distributed   System   Security&lt;/em&gt;. The Internet Society, 2020. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.ndss-symposium.org/wp-content/uploads/2020/02/23098.pdf&#34;&gt;https://www.ndss-symposium.org/wp-content/uploads/2020/02/23098.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 48 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Yadav2018a&#34;&gt;&lt;/a&gt; T. K. Yadav, A. Sinha, D. Gosain, P. K. Sharma, and S. Chakravarty, “Where the light gets in: Analyzing web censorship mechanisms in India,” in &lt;em&gt;Internet Measurement Conference&lt;/em&gt;. ACM, 2018. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://delivery.acm.org/10.1145/3280000/3278555/p252-Yadav.pdf&#34;&gt;https://delivery.acm.org/10.1145/3280000/3278555/p252-Yadav.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 49 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Bao2018a&#34;&gt;&lt;/a&gt; B. Liu, C. Lu, H. Duan, Y. Liu, Z. Li, S. Hao, and M. Yang, “Who is answering my queries: Understanding and characterizing interception of the DNS resolution path,” in &lt;em&gt;USENIX Security Symposium&lt;/em&gt;, Aug. 2018. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/usenixsecurity18/sec18-liu_0.pdf&#34;&gt;https://www.usenix.org/system/files/conference/usenixsecurity18/sec18-liu_0.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 50 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:net4people_bbs_issues&#34;&gt;&lt;/a&gt; Net4People, “Net4People BBS Issues.” [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues&#34;&gt;https://github.com/net4people/bbs/issues&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 51 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:ntc_party_forum&#34;&gt;&lt;/a&gt; NTC Community, “NTC Party: “No Thought is a Crime” — Internet Censorship Circumvention Forum.” [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://ntc.party/&#34;&gt;https://ntc.party/&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 52 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:xtls_xray_core_issues&#34;&gt;&lt;/a&gt; XTLS, “Xray-core Project Issue Tracker.” [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://github.com/XTLS/Xray-core/issues&#34;&gt;https://github.com/XTLS/Xray-core/issues&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 53 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:v2fly_v2ray_core_issues&#34;&gt;&lt;/a&gt; V2Fly, “V2Ray Core Project Issue Tracker.” [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://github.com/v2fly/v2ray-core/issues&#34;&gt;https://github.com/v2fly/v2ray-core/issues&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 54 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:sagernet_sing_box_issues&#34;&gt;&lt;/a&gt; SagerNet, “sing-box Project Issue Tracker.” [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://github.com/SagerNet/sing-box/issues&#34;&gt;https://github.com/SagerNet/sing-box/issues&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 55 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:apernet_hysteria_issues&#34;&gt;&lt;/a&gt; Hysteria, “Hysteria Proxy Project Issue Tracker.” [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://github.com/apernet/hysteria/issues&#34;&gt;https://github.com/apernet/hysteria/issues&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 56 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:net4people442&#34;&gt;&lt;/a&gt; ThEWiZaRd0fBsoD, “在启用 TCP Timestamp（TCP 时间戳）后 GFW 对 obfs4 的审查无效 / After enabling TCP Timestamp, GFW’s censorship of obfs4 is rendered ineffective,” &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/442&#34;&gt;https://github.com/net4people/bbs/issues/442&lt;/a&gt;, Jan 2025, (Accessed on April 18, 2025).
                &lt;/li&gt;
                &lt;!-- 57 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:net4people416&#34;&gt;&lt;/a&gt; ——, “The operators in Henan Province, China, seem to have less stringent censorship regarding IPV6,” &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/416&#34;&gt;https://github.com/net4people/bbs/issues/416&lt;/a&gt;, Nov 2024, (Accessed on April 18, 2025).
                &lt;/li&gt;
                &lt;!-- 58 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:ghostcomment&#34;&gt;&lt;/a&gt; ghost, ““河南新上的 SNI/HOST 黑名单墙” (GitHub Discussion #3601),” &lt;a class=&#34;url&#34; href=&#34;https://github.com/XTLS/Xray-core/discussions/3601#discussioncomment-10293992&#34;&gt;https://github.com/XTLS/Xray-core/discussions/3601#discussioncomment-10293992&lt;/a&gt;, Aug 2024, (Accessed on April 18, 2025).
                &lt;/li&gt;
                &lt;!-- 59 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:tsinbei_tcp_timestamps&#34;&gt;&lt;/a&gt; H. Lee, “启用 TCP Timestamps 解决 SNI 阻断,” &lt;a class=&#34;url&#34; href=&#34;https://blog.tsinbei.com/archives/1361/&#34;&gt;https://blog.tsinbei.com/archives/1361/&lt;/a&gt;, Sep 2023, (Accessed on April 18, 2025).
                &lt;/li&gt;
                &lt;!-- 60 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:LePochat2019tranco&#34;&gt;&lt;/a&gt; V. L. Pochat, T. Van Goethem, S. Tajalizadehkhoob, M. Korczyński, and W. Joosen, “Tranco: A research-oriented top sites ranking hardened against manipulation,” in &lt;em&gt;Network and Distributed System Security Symposium 2019&lt;/em&gt;, ser. NDSS ’19, 2019.
                &lt;/li&gt;
                &lt;!-- 61 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Mi2019-resident-evil&#34;&gt;&lt;/a&gt; X. Mi, X. Feng, X. Liao, B. Liu, X. Wang, F. Qian, Z. Li, S. Alrwais, L. Sun, and Y. Liu, “Resident Evil: Understanding residential IP proxy as a dark service,” in &lt;em&gt;2019 IEEE Symposium on Security and Privacy (SP)&lt;/em&gt;, 2019, pp. 1185–1201. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://ieeexplore.ieee.org/document/8835239&#34;&gt;https://ieeexplore.ieee.org/document/8835239&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 62 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:ip2location&#34;&gt;&lt;/a&gt; “IP2Location LITE IP address geolocation database.” [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.ip2location.com/database/ip2location&#34;&gt;https://www.ip2location.com/database/ip2location&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 63 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Bock2020b&#34;&gt;&lt;/a&gt; K. Bock, G. Hughey, L.-H. Merino, T. Arya, D. Liscinsky, R. Pogosian, and D. Levin, “Come as you are: Helping unmodified clients bypass censorship with server-side evasion,” in &lt;em&gt;SIGCOMM&lt;/em&gt;. ACM, 2020. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://geneva.cs.umd.edu/papers/come-as-you-are.pdf&#34;&gt;https://geneva.cs.umd.edu/papers/come-as-you-are.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 64 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Henan-user-report-1&#34;&gt;&lt;/a&gt; 5e2t, “After enabling TCP timestamp, GFW’s censorship of obfs4 is rendered ineffective,” &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/442#issuecomment-2566913190&#34;&gt;https://github.com/net4people/bbs/issues/442#issuecomment-2566913190&lt;/a&gt;, Jan 2025, (Accessed on April 7, 2025).
                &lt;/li&gt;
                &lt;!-- 65 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Niere2023a&#34;&gt;&lt;/a&gt; N. Niere, S. Hebrok, J. Somorovsky, and R. Merget, “Poster: Circumventing the GFW with TLS record fragmentation,” in &lt;em&gt;Computer and Communications Security&lt;/em&gt;. ACM, 2023. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://nerd2.nrw/wp-content/uploads/2024/05/3576915.3624372.pdf&#34;&gt;https://nerd2.nrw/wp-content/uploads/2024/05/3576915.3624372.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 66 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:wan2022retina&#34;&gt;&lt;/a&gt; G. Wan, F. Gong, T. Barbette, and Z. Durumeric, “Retina: analyzing 100GbE traffic on commodity hardware,” in &lt;em&gt;ACM SIGCOMM&lt;/em&gt;, 2022. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://zakird.com/papers/retina.pdf&#34;&gt;https://zakird.com/papers/retina.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 67 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Bock2021a&#34;&gt;&lt;/a&gt; K. Bock, P. Bharadwaj, J. Singh, and D. Levin, “Your censor is my censor: Weaponizing censorship infrastructure for availability attacks,” in &lt;em&gt;Workshop on Offensive Technologies&lt;/em&gt;. IEEE, 2021. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.cs.umd.edu/~dml/papers/weaponizing_woot21.pdf&#34;&gt;https://www.cs.umd.edu/~dml/papers/weaponizing_woot21.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 68 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:klzgrad2009gfw&#34;&gt;&lt;/a&gt; klzgrad, “GFW技术报告：入侵防御系统的评测和问题,” &lt;a class=&#34;url&#34; href=&#34;https://www.chinagfw.org/2009/09/gfw_21.html&#34;&gt;https://www.chinagfw.org/2009/09/gfw_21.html&lt;/a&gt;, Aug 2009, accessed: 2025-04-11.
                &lt;/li&gt;
                &lt;!-- 69 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:gfwrev2010http&#34;&gt;&lt;/a&gt; gfwrev, “HTTP URL/深度关键词检测,” &lt;a class=&#34;url&#34; href=&#34;https://gfwrev.blogspot.com/2010/03/http-url.html&#34;&gt;https://gfwrev.blogspot.com/2010/03/http-url.html&lt;/a&gt;, Mar 2010, accessed: 2025-04-07.
                &lt;/li&gt;
                &lt;!-- 70 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Weaver2009a&#34;&gt;&lt;/a&gt; N. Weaver, R. Sommer, and V. Paxson, “Detecting forged TCP reset packets,” in &lt;em&gt;Network and Distributed System Security&lt;/em&gt;. The Internet Society, 2009. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.ndss-symposium.org/wp-content/uploads/2017/09/weav.pdf&#34;&gt;https://www.ndss-symposium.org/wp-content/uploads/2017/09/weav.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 71 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:rfc9293&#34;&gt;&lt;/a&gt; W. Eddy, “Transmission Control Protocol (TCP),” RFC 9293, Aug. 2022. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.rfc-editor.org/info/rfc9293&#34;&gt;https://www.rfc-editor.org/info/rfc9293&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 72 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Raman2022a&#34;&gt;&lt;/a&gt; R. S. Raman, M. Wang, J. Dalek, J. Mayer, and R. Ensafi, “Network measurement methods for locating and examining censorship devices,” in &lt;em&gt;Emerging Networking Experiments and Technologies&lt;/em&gt;. ACM, 2022. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://dl.acm.org/doi/pdf/10.1145/3555050.3569133&#34;&gt;https://dl.acm.org/doi/pdf/10.1145/3555050.3569133&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 73 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:SignInCe67:online&#34;&gt;&lt;/a&gt; “Centralized Zone Data Service,” &lt;a class=&#34;url&#34; href=&#34;https://czds.icann.org/home&#34;&gt;https://czds.icann.org/home&lt;/a&gt;, (Accessed on 01/31/2024).
                &lt;/li&gt;
                &lt;!-- 74 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:WebsiteC13:online&#34;&gt;&lt;/a&gt; “Website categorization api | domain category check | whoisxml api,” &lt;a class=&#34;url&#34; href=&#34;https://website-categorization.whoisxmlapi.com/api&#34;&gt;https://website-categorization.whoisxmlapi.com/api&lt;/a&gt;, (Accessed on 04/25/2024).
                &lt;/li&gt;
                &lt;!-- 75 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Security88:online&#34;&gt;&lt;/a&gt; “Security forces in china attack protesters seeking frozen funds - the new york times,” &lt;a class=&#34;url&#34; href=&#34;https://www.nytimes.com/2022/07/11/business/china-bank-protest.html&#34;&gt;https://www.nytimes.com/2022/07/11/business/china-bank-protest.html&lt;/a&gt;, (Accessed on 04/25/2024).
                &lt;/li&gt;
                &lt;!-- 76 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Xray&#34;&gt;&lt;/a&gt; XRay developers. XRay. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://github.com/XTLS/Xray-core&#34;&gt;https://github.com/XTLS/Xray-core&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 77 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:GoodbyeDPI&#34;&gt;&lt;/a&gt; GoodbyeDPI developers. GoodbyeDPI. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://github.com/ValdikSS/GoodbyeDPI&#34;&gt;https://github.com/ValdikSS/GoodbyeDPI&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 78 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:shadowrocket&#34;&gt;&lt;/a&gt; ShadowRocket developers. ShadowRocket. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://apps.apple.com/us/app/shadowrocket/id932747118&#34;&gt;https://apps.apple.com/us/app/shadowrocket/id932747118&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 79 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:Frolov2019a&#34;&gt;&lt;/a&gt; S. Frolov and E. Wustrow, “The use of TLS in censorship circumvention,” in &lt;em&gt;Network and Distributed System Security&lt;/em&gt;. The Internet Society, 2019. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://tlsfingerprint.io/static/frolov2019.pdf&#34;&gt;https://tlsfingerprint.io/static/frolov2019.pdf&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 80 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:xraypullrrequest&#34;&gt;&lt;/a&gt; XRay developers. XRay pull request. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://github.com/XTLS/Xray-core/pull/3660&#34;&gt;https://github.com/XTLS/Xray-core/pull/3660&lt;/a&gt;
                &lt;/li&gt;
                &lt;!-- 81 --&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;cite:menlo-report&#34;&gt;&lt;/a&gt; M. Bailey, D. Dittrich, E. Kenneally, and D. Maughan, “The menlo report,” &lt;em&gt;IEEE Security and Privacy&lt;/em&gt;, vol. 10, no. 2, p. 71–75, Mar 2012. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://doi.org/10.1109/MSP.2012.52&#34;&gt;https://doi.org/10.1109/MSP.2012.52&lt;/a&gt;
                &lt;/li&gt;
    &lt;/ol&gt;
&lt;/div&gt;
        &lt;!-- l. 2489 --&gt;
        &lt;h2 class=&#34;sectionHead&#34; id=&#34;app:appendix-a&#34;&gt;
          &lt;a id=&#34;app:appendix-a&#34; href=&#34;#app:appendix-a&#34;&gt;附录 A. 元评审&lt;/a&gt;
        &lt;/h2&gt;
        &lt;!-- l. 2491 --&gt;&lt;p class=&#39;indent&#39;&gt;   以下元评审由 2025 IEEE Symposium on Security and Privacy (S&amp;P) 的程序委员会根据论文征集要求，在评审过程中编写。
        &lt;/p&gt;
        &lt;!-- l. 2495 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;areasons-for-acceptance&#34;&gt; &lt;a id=&#34;sec:areasons-for-acceptance-summary&#34; href=&#34;#sec:areasons-for-acceptance-summary&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;A.1.&lt;/span&gt; 摘要&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 2497 --&gt;&lt;p class=&#39;indent&#39;&gt;   本文实证性地确认了中国河南省已开始部署地区性审查机制的传闻，且其审查比防火长城更为严格。论文对河南防火墙实施的审查进行了全面分析，涵盖入站和出站两个方向，揭示了其运作方式、封锁策略和残余审查机制。此外，论文还检查了中国其他省份是否存在类似的地区性审查，但未发现除防火长城之外的额外干扰证据。
        &lt;/p&gt;
        &lt;!-- l. 2499 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;areasons-for-acceptance&#34;&gt; &lt;a id=&#34;sec:areasons-for-acceptance-scientific-contributions&#34; href=&#34;#sec:areasons-for-acceptance-scientific-contributions&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;A.2.&lt;/span&gt; 科学贡献&lt;/a&gt;
        &lt;/h3&gt;
            &lt;ul class=&#39;itemize1&#39;&gt;
            &lt;li class=&#39;itemize&#39;&gt;对先前研究有限的重要结果进行了独立确认
            &lt;/li&gt;
            &lt;li class=&#39;itemize&#39;&gt;在一个成熟领域中取得了有价值的进步&lt;/li&gt;&lt;/ul&gt;

        &lt;!-- l. 2507 --&gt;&lt;h3 class=&#34;subsectionHead&#34; id=&#34;areasons-for-acceptance&#34;&gt; &lt;a id=&#34;sec:areasons-for-acceptance-reasons-for-acceptance&#34; href=&#34;#sec:areasons-for-acceptance-reasons-for-acceptance&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;A.3.&lt;/span&gt; 接收理由&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 2509 --&gt;&lt;p class=&#39;indent&#39;&gt;
            &lt;/p&gt;&lt;dl class=&#39;enumerate-enumitem&#39;&gt;&lt;dt class=&#39;enumerate-enumitem&#39;&gt;
         1) &lt;/dt&gt;&lt;dd class=&#39;enumerate-enumitem&#39;&gt;本文对先前研究有限的重要结果提供了独立确认。论文构建了一个测量体系，以确认（并扩展）关于中国河南省内地区性审查的传闻报告。除了对这种新型地区性审查的存在和封锁行为提供系统性理解外，本文还独立确认了防火长城封锁行为的不对称性。
            &lt;/dd&gt;&lt;dt class=&#39;enumerate-enumitem&#39;&gt;
         2) &lt;/dt&gt;&lt;dd class=&#39;enumerate-enumitem&#39;&gt;通过应用不同的已知研究方法，对中国部分地区一种新的审查现象进行了详尽研究，本文在一个成熟领域中取得了有价值的进步。研究所进行的测量是可靠的，并依赖于经过验证的测量方法，为一种此前未被进一步分析的审查形式提供了见解。&lt;/dd&gt;&lt;/dl&gt;</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>Wallbleed: A Memory Disclosure Vulnerability in the Great Firewall of China</title>
        <link>https://gfw.report/publications/ndss25/en/</link>
        <pubDate>Tue, 25 Feb 2025 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/publications/ndss25/en/</guid>
        
        <description>&lt;!-- use CSS file --&gt;
&lt;!-- use paper-specific CSS --&gt;
&lt;link rel=&#34;stylesheet&#34; href=&#34;../ndss25.css&#34;&gt;

&lt;!-- Used to render latex syntax --&gt;
&lt;script type=&#34;text/javascript&#34; async
  src=&#34;https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML&#34;&gt;
&lt;/script&gt;

&lt;!-- Used to render Table of Content --&gt;
&lt;link href=&#34;./css/tocbot.css&#34; rel=&#39;stylesheet&#39; type=&#39;text/css&#39; /&gt;
&lt;script src=&#34;./js/tocbot.min.js&#34;&gt;&lt;/script&gt;
&lt;script&gt;
    document.addEventListener(&#39;DOMContentLoaded&#39;, function() {
    tocbot.init({
        tocSelector: &#39;.js-toc&#39;,
        contentSelector: &#39;.js-toc-content&#39;,
        headingSelector: &#39;h2, h3&#39;,
        collapseDepth: 3,
        activeLinkClass: &#39;&#39;
    });
    });
&lt;/script&gt;

&lt;!-- &lt;div class=&#39;tcolorbox tcolorbox&#39; id=&#39;tcolobox-3&#39;&gt;
    &lt;div class=&#39;tcolorbox-content&#39;&gt;
    &lt;p class=&#39;noindent&#39;&gt;
        &lt;span class=&#39;ptmb8t-x-x-90&#39;&gt;Statement  from  NDSS  2025&lt;/span&gt;
        &lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;: The NDSS 2025 PC appreciated the technical contributions made in this paper, the confirmation of
prior work that is otherwise not (directly) reproducible, and the contributions towards fostering future anti-censorship research, but it
also found the paper highly controversial because the experiments that the authors conducted raise ethical concerns. This paper went
through scrutiny by various stakeholders beyond the regular PC review, including evaluation by the NDSS’25 Ethics Review Board
and consultation of the Steering Committee and ISOC. While the ethical ambiguities were deemed remedied after data aggregation
and deletion, the IRB Exempt decision that the authors received from their institution should have been questioned and repudiated
by  the  authors  as  there  are  clear  human  risks  involved.  Questioning  such  an  IRB  decision  should  be  an  obligation  by  researchers
in the security community. Additionally, the PC does not consider itself qualified to make a judgment about the legal implications
of  this  work.  We  acknowledge  that  there  were  conflicting  opinions  during  the  broader  review  process  on  whether  the  benefits  of
this  research  outweigh  its  risks.  We  hope  that  the  acceptance  of  this  paper  helps  the  community  understand  the  possible  impact
of research work, allows better mechanisms to deal with similar cases, and contributes to developing accepted standards on when
and  how  such  types  of  offensive  research  can  be  done.  The  acceptance  of  this  paper  does  not  constitute  the  PC’s  endorsement  of
the used methodology. We advise authors to seek legal advice (from different legislations if applicable) before/while doing security
research that may impact critical targets.&lt;/span&gt;
    &lt;/p&gt;
    &lt;/div&gt;
&lt;/div&gt; --&gt;

&lt;h1 class=&#34;titleHead&#34;&gt;Wallbleed: A Memory Disclosure Vulnerability in the Great Firewall of China&lt;/h1&gt;

&lt;div class=&#34;authors&#34;&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Shencha Fan&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;GFW Report&lt;/p&gt;
        &lt;p class=&#34;author-email&#34;&gt;gfw.report@protonmail.com&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Jackson Sippe&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;University of Colorado Boulder&lt;/p&gt;
        &lt;p class=&#34;author-email&#34;&gt;Jackson.Sippe@colorado.edu&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Sakamoto San&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;Shinonome Lab&lt;/p&gt;
        &lt;p class=&#34;author-email&#34;&gt;54k4m070@proton.me&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Jade Sheffey&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;University of Massachusetts Amherst&lt;/p&gt;
        &lt;p class=&#34;author-email&#34;&gt;jsheffey@cs.umass.edu&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;David Fifield&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;&lt;br&gt;&lt;/p&gt;
        &lt;p class=&#34;author-email&#34;&gt;david@bamsoftware.com&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Amir Houmansadr&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;University of Massachusetts Amherst&lt;/p&gt;
        &lt;p class=&#34;author-email&#34;&gt;amir@cs.umass.edu&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Elson Wedwards&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;&lt;br&gt;&lt;/p&gt;
        &lt;p class=&#34;author-email&#34;&gt;ElsonWedwards@proton.me&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Eric Wustrow&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;University of Colorado Boulder&lt;/p&gt;
        &lt;p class=&#34;author-email&#34;&gt;ewust@colorado.edu&lt;/p&gt;
    &lt;/div&gt;

&lt;/div&gt;

&lt;!-- Table of contents content goes here --&gt;
&lt;div class=&#34;js-toc&#34;&gt;&lt;/div&gt;

&lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;abstract&#34;&gt;&lt;a id=&#34;sec:abstract&#34; href=&#34;#sec:abstract&#34;&gt;Abstract&lt;/a&gt;&lt;/h2&gt;

&lt;p class=&#39;indent&#39;&gt;&lt;span&gt;
    We present &lt;span style=&#34;font-style: italic;&#34;&gt;Wallbleed&lt;/span&gt;, a buffer over-read vulnerability
    that existed in the DNS injection subsystem of the Great Firewall of
    China. Wallbleed caused certain nation-wide censorship middleboxes
    to reveal up to 125 bytes of their memory when censoring a crafted
    DNS  query.  It  afforded  a  rare  insight  into  one  of  the  Great
    Firewall’s well-known network attacks, namely DNS injection, in
    terms  of  its  internal  architecture  and  the  censor’s  operational
    behaviors.&lt;/span&gt;
&lt;/p&gt;&lt;!-- l. 212 --&gt;
&lt;p class=&#39;indent&#39;&gt;&lt;span&gt;To  understand  the  causes  and  implications  of  Wallbleed,  we
conducted longitudinal and Internet-wide measurements for over two
years from October 2021. We (1) reverse-engineered the injector’s
parsing logic, (2) evaluated what information was leaked and how
Internet  users  inside  and  outside  of  China  were  affected,  and
(3) monitored  the  censor’s  patching  behaviors  over  time.  We
                                                    identified possible internal traffic of the censorship system, analyzed
   its  memory  management  and  load-balancing  mechanisms,  and
   observed process-level changes in an injector node. We employed a
   new side channel to distinguish the injector’s multiple processes to
   assist  our  analysis.  Our  monitoring  revealed  that  the  censor
   coordinated an incorrect patch for Wallbleed in November 2023 and
   fully  patched  it  in  March 2024.&lt;/span&gt;
   &lt;/p&gt;&lt;!-- l. 228 --&gt;
&lt;p class=&#39;indent&#39;&gt;&lt;span&gt;Wallbleed  exemplifies  that  the  harm  censorship  middleboxes
impose on Internet users is even beyond their obvious infringement
of  freedom  of  expression.  When  implemented  poorly,  it  also
imposes severe privacy and confidentiality risks to Internet users.&lt;/span&gt;
&lt;/p&gt;

&lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;1&#34;&gt;&lt;a id=&#34;sec:1-introduction&#34; href=&#34;#sec:1-introduction&#34;&gt;&lt;span
    class=&#34;titlemark&#34;&gt;I.&lt;/span&gt; Introduction&lt;/a&gt;&lt;/h2&gt;
&lt;!-- l. 236 --&gt;
&lt;p class=&#39;indent&#39;&gt;    The national Internet censorship system in China, known as
  the Great Firewall (GFW), is composed of many parts and
  subsystems, each using different techniques to control access to
  online information. One prominent component is the &lt;span class=&#39;ptmri8t-&#39;&gt;DNS
  injection &lt;/span&gt;subsystem, which forges DNS responses to DNS queries
for censored domain names. Until March 2024, certain DNS
injection devices had a parsing bug that would, under certain
conditions, cause them to include up to 125 bytes of their own
memory in the forged DNS responses they sent. We call this bug
Wallbleed, as a nod to similar buffer over-read vulnerabilities
like Heartbleed &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Heartbleed&#39;&gt;1&lt;/a&gt;]&lt;/span&gt;, Ticketbleed &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Ticketbleed&#39;&gt;2&lt;/a&gt;]&lt;/span&gt;, and Cloudbleed &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Cloudbleed-post-1&#39;&gt;3&lt;/a&gt;, &lt;a href=&#39;#cite:Cloudbleed-post-2&#39;&gt;4&lt;/a&gt;]&lt;/span&gt;.
&lt;/p&gt;&lt;!-- l. 253 --&gt;&lt;p class=&#39;indent&#39;&gt;  In this work,&lt;span class=&#39;footnote-mark&#39;&gt;&lt;a href=&#39;#fn:project-homepage&#39;&gt;&lt;sup class=&#39;textsuperscript&#39;&gt;1&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id=&#39;x1-3f1&#39;&gt;&lt;/a&gt;
we analyze the causes and implications of Wallbleed. Our study
confirms that Wallbleed existed for at least two years. (Reports of
a similar vulnerability circulated as early as 2010 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:gfw-looking-glass-twitter&#39;&gt;5&lt;/a&gt;], [&lt;a href=&#39;#cite:gfw-looking-glass-post&#39;&gt;6&lt;/a&gt;]&lt;/span&gt;.)
We ran continuous measurements between October 2021
and April 2024. The vulnerability was partially patched in
November 2023, but DNS injectors were still vulnerable to
certain crafted queries until March 2024, when it was finally fully
patched.
&lt;/p&gt;
&lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
  &lt;ol&gt;
      &lt;li class=&#39;footnote-text&#39;&gt;
          &lt;a id=&#39;fn:project-homepage&#39;&gt;&lt;/a&gt;
          &lt;span class=&#39;footnote-mark&#39;&gt;
              &lt;sup class=&#39;textsuperscript&#39;&gt;1&lt;/sup&gt;
          &lt;/span&gt;
          &lt;span class=&#39;footnotes-text&#39;&gt;Project homepage: &lt;a href=&#34;https://gfw.report/publications/ndss25/en/&#34;&gt;https://gfw.report/publications/ndss25/en/&lt;/a&gt;.&lt;/span&gt;
      &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;

&lt;!-- l. 264 --&gt;&lt;p class=&#39;indent&#39;&gt;  Wallbleed provides an unprecedented look at the GFW, both its
internal architecture as well as the censor’s operational behaviors.
While prior work has studied what domains and resources are
blocked in China, little is known about the inner workings of the
GFW’s network middleboxes &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;7&lt;/a&gt;, &lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;8&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2021a&#39;&gt;9&lt;/a&gt;]&lt;/span&gt;. From the data leaked
with Wallbleed, we are able to discern the underlying architecture
of the GFW, and we reverse-engineer the parsing bug responsible
for Wallbleed to create a behavior-identical implementation in C.
During the course of our study, we discovered previously
unknown characteristics of GFW DNS injection, such as
that every injection process cycles through a list of false IP
addresses independently and in a fixed order, a side channel that
distinguishes multiple processes in an injector node. Finally, we
conducted longitudinal and Internet-wide measurements to
monitor the censor’s patching activity, taking advantage of a rare
opportunity to learn more about how the GFW maintains its
censorship infrastructure.
&lt;/p&gt;&lt;!-- l. 282 --&gt;&lt;p class=&#39;indent&#39;&gt;  We examined the contents of Wallbleed-leaked memory and
discovered apparent network protocol headers, payloads, x86_64
stack frames, and executable code (though we show evidence that
it is not the code of the GFW itself). We sent traffic tagged with
recognizable byte patterns past the GFW, and in some cases
recovered those tags in subsequent Wallbleed responses,
demonstrating that the vulnerability leaked at least some of the
traffic seen by the GFW. We see, in Wallbleed-leaked memory,
samples of plaintext network traffic and protocols not all of which
are related to DNS censorship, including IP, TCP, UDP, and
HTTP. We also performed IPv4-wide scans to estimate how many
addresses inside and outside China might have had their traffic
processed by Wallbleed-vulnerable middleboxes. Even some traffic
whose source and destination are both outside China might
have been affected, due to routing through China’s network
border.
&lt;/p&gt;&lt;!-- l. 300 --&gt;&lt;p class=&#39;indent&#39;&gt;  Significant ethical considerations accompany an investigation of
this nature. We discuss them in depth in &lt;a href=&#39;#sec:9-ethics&#39;&gt;Section IX&lt;/a&gt;, including
the question of whether or not to disclose a vulnerability in a
system that is, itself, considered by many to be a source of harm &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:InternetSociety2023&#39;&gt;10&lt;/a&gt;, &lt;a href=&#39;#cite:Anderson2012b&#39;&gt;11&lt;/a&gt;]&lt;/span&gt;. The injection of fraudulent DNS responses is one of   many persistent attacks carried out daily by the GFW. The
  intention and effect of these attacks are well-known: to limit
  people’s access to information. Wallbleed is an example of how
  censorship devices pose risks to security and privacy even beyond
  their obvious infringement of freedom of expression. While this
  specific vulnerability was eventually fixed, the existence of such
  devices continues to be a hazard.&lt;/p&gt;
  &lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;2&#34;&gt;&lt;a id=&#34;sec:2-backgroud&#34;
    href=&#34;#sec:2-backgroud&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;II.&lt;/span&gt; Backgroud&lt;/a&gt;
  &lt;/h2&gt;
  &lt;a id=&#39;Q1-1-0&#39;&gt;&lt;/a&gt;
  &lt;!-- l. 323 --&gt;
  &lt;h3 class=&#34;subsectionHead&#34; id=&#34;2a&#34;&gt; &lt;a id=&#34;sec:2a-dns-injection-attacks&#34; href=&#34;#sec:2a-dns-injection-attacks&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;A.&lt;/span&gt; DNS injection attacks&lt;/a&gt;
  &lt;/h3&gt;
  &lt;a id=&#39;Q1-1-0&#39;&gt;&lt;/a&gt;
  &lt;!-- l. 326 --&gt;&lt;p class=&#39;indent&#39;&gt;    The GFW’s DNS injection subsystem employs a fleet of
  middlebox devices at China’s network border that watch for DNS
  queries for blocked domain names. When they see one, they &lt;span class=&#39;ptmri8t-&#39;&gt;inject&lt;/span&gt;
  a DNS response back towards the client, spoofing the source
  address as if it came from the intended resolver. The injected
  response is a false answer to the query, containing an incorrect,
  useless IP address. When the client subsequently tries to connect,
  it will meet with an error rather than a connection to the expected
  destination. The injection middleboxes are on-path, not in-path
  devices: they do not block the query from reaching the legitimate
  resolver, nor the authentic response from reaching the client.
  The injectors’ false response “wins” because it arrives first,
  having been injected at a point in the network path nearer
  to the client &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Duan2012a&#39;&gt;12&lt;/a&gt;]&lt;/span&gt;. Clients accept the first received DNS
  response, as only one response is expected per query in normal
  operation.
&lt;/p&gt;&lt;!-- l. 348 --&gt;&lt;p class=&#39;indent&#39;&gt;    The DNS injection subsystem is &lt;span class=&#39;ptmri8t-&#39;&gt;bidirectional&lt;/span&gt;: it responds to
    queries in both directions, whether they are leaving China or
    entering it. This feature is convenient for analysis: it is easier to
    send packets into China from the outside, than to acquire and
    maintain a network vantage point inside the country. By sending
    DNS queries to a non-live IP address in China, we can be sure
    that any responses received are from a middlebox injector, not the
    end host.
    &lt;/p&gt;&lt;!-- l. 359 --&gt;&lt;p class=&#39;indent&#39;&gt;    Just as the GFW consists of disparate components, DNS injection
  is done by several distinct kinds of DNS injector—at least three.
  The foundational pieces of research on this topic are gfwrev’s
  work of 2009 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:gfwrev-understanding-dns-poisoning&#39;&gt;13&lt;/a&gt;]&lt;/span&gt;, Anonymous’s work of 2014 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;7&lt;/a&gt;]&lt;/span&gt;, Anonymous
  et al.’s “Triplet censors” of 2020 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;8&lt;/a&gt;]&lt;/span&gt;, and Hoang et al.’s “How
  great is the Great Firewall?” of 2021 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;9&lt;/a&gt;]&lt;/span&gt;. The several kinds of
  injector differ in their lists of blocked domain names, their
  network fingerprints at the IP and DNS layers, and quirks of their
  parsing logic. The Wallbleed vulnerability exists in just one kind
  of injector, the one which Anonymous et al. call “Injector 3” &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;8&lt;/a&gt; §4.1]&lt;/span&gt;.
  &lt;/p&gt;&lt;!-- l. 374 --&gt;&lt;p class=&#39;indent&#39;&gt;    DNS injection has long been a primary technique of the GFW.
  But circumventing it alone is not enough, because there
  are other systems in play. Even if a client is able to get a
  correct DNS response by some means, their communication
  may be disrupted by a different subsystem, such as the IP
  address filter &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Chai2019a&#39;&gt;14&lt;/a&gt; §4.1]&lt;/span&gt;, TLS SNI filter &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Chai2019a&#39;&gt;14&lt;/a&gt;, &lt;a href=&#39;#cite:Bock2021c&#39;&gt;15&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2024a&#39;&gt;16&lt;/a&gt;]&lt;/span&gt; or TLS
ESNI filter &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Chai2019a&#39;&gt;14&lt;/a&gt;, &lt;a href=&#39;#cite:Bock2020ESNI&#39;&gt;17&lt;/a&gt;]&lt;/span&gt;. In this paper we will be concerned
only with DNS injection, and with only one kind of DNS
injector.
&lt;/p&gt;&lt;!-- l. 384 --&gt;&lt;p class=&#39;indent&#39;&gt;  The government of China is not alone in using DNS injection
for censorship. See also, for example, the “DNS Tampering”
column of Table 1 of the 2023 survey of Master and Garman &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Master2023a&#39;&gt;18&lt;/a&gt;]&lt;/span&gt;, and Nourin et al.’s study of bidirectional injection of DNS
and other protocols in Turkmenistan &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Nourin2023a&#39;&gt;19&lt;/a&gt;]&lt;/span&gt;.
&lt;/p&gt;&lt;!-- l. 396 --&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;2b&#34;&gt; &lt;a id=&#34;sec:2b-The-format-of-dns-messages&#34; href=&#34;#sec:2b-The-format-of-dns-messages&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;B.&lt;/span&gt; The format of DNS messages&lt;/a&gt;
&lt;/h3&gt;

&lt;!-- l. 399 --&gt;&lt;p class=&#39;indent&#39;&gt;  As the Wallbleed vulnerability stems from low-level parsing
errors, it will be important to understand how DNS messages are
represented on the wire and in memory. The format of DNS
messages is specified in RFC 1035 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:rfc1035&#39;&gt;20&lt;/a&gt;]&lt;/span&gt;. Queries and responses
have the same basic format: a 12-byte header, followed by four
variable-length sections: &lt;span class=&#39;ptmri8t-&#39;&gt;question&lt;/span&gt;, &lt;span class=&#39;ptmri8t-&#39;&gt;answer&lt;/span&gt;, &lt;span class=&#39;ptmri8t-&#39;&gt;authority&lt;/span&gt;, and
&lt;span class=&#39;ptmri8t-&#39;&gt;additional&lt;/span&gt;. We will be concerned only with the question and
answer sections. The question section contains the DNS
name being queried (or, in a response, the name that the
response is in answer to). The answer section, present only in
responses, contains the information requested by a query
(commonly an IP address) in a data structure called a &lt;span class=&#39;ptmri8t-&#39;&gt;resource
record&lt;/span&gt;.
&lt;/p&gt;&lt;!-- l. 420 --&gt;&lt;p class=&#39;indent&#39;&gt;  &lt;a href=&#39;#fig:1-the-structure-of-an-injected-dns-response&#39;&gt;Figure 1&lt;/a&gt; is a sample injected DNS response. It features
everything that will be necessary to understand the DNS messages
that arise in this research. We will use these field names and
background colors consistently.
&lt;div class=&#34;container-fluid&#34;&gt;
    &lt;div class=&#34;table-responsive&#34;&gt;
&lt;div class=&#39;figure figure-table&#39; id=&#39;fig:1-the-structure-of-an-injected-dns-response&#39; style=&#34;margin: 0 auto; display: table;&#34;&gt;
  &lt;div class=&#39;tabular&#39;&gt;
      &lt;table class=&#39;tabular&#39; id=&#39;TBL-1&#39;&gt;
          &lt;colgroup id=&#39;TBL-1-1g&#39;&gt;
              &lt;col id=&#39;TBL-1-1&#39; /&gt;
              &lt;col id=&#39;TBL-1-2&#39; /&gt;
          &lt;/colgroup&gt;
          &lt;tr id=&#39;TBL-1-1-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-1-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
                      id=&#39;colorbox418&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;1234&lt;/span&gt;&lt;/span&gt;      &lt;span&gt;ID&lt;/span&gt; &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-1-1-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;6&#34;&gt;
                  &lt;div class=&#39;multirow&#39; style=&#34;width: 5.5em;&#34;&gt;&lt;!--  rows=256  --&gt;
                      &lt;img alt=&#39;}Header&#39; class=&#39;left&#39; src=&#39;../figures/svgs/header.svg&#39; /&gt;
                  &lt;/div&gt;
              &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-2-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-2-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
                      id=&#39;colorbox419&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;8180&lt;/span&gt;&lt;/span&gt;      flags &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-3-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-3-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
                      id=&#39;colorbox420&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;&lt;/span&gt;      QDCOUNT &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-4-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-4-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
                      id=&#39;colorbox421&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;&lt;/span&gt;      ANCOUNT &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-5-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-5-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
                      id=&#39;colorbox422&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;&lt;/span&gt;      NSCOUNT &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-6-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-6-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
                      id=&#39;colorbox423&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;&lt;/span&gt;      ARCOUNT &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-7-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-7-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
                      id=&#39;colorbox424&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox425&#39;&gt;
                      &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox426&#39;&gt; &lt;span
                          class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt;
                  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox427&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;f&lt;/span&gt; &lt;/span&gt;&lt;span
                      class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox428&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
                      id=&#39;colorbox429&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox430&#39;&gt;
                      &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt;
                  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox431&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt; &lt;/span&gt;&lt;span
                      class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox432&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;      QNAME &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-1-7-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt;
                  &lt;div class=&#39;multirow&#39; style=&#34;width: 5.5em;&#34;&gt;&lt;!--  rows=256  --&gt;
                      &lt;img alt=&#39;}Question&#39; class=&#39;left&#39; src=&#39;../figures/svgs/question.svg&#39; /&gt;
                  &lt;/div&gt;
              &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-8-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-8-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
                      id=&#39;colorbox433&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;&lt;/span&gt;      QTYPE (A, IPv4 address) &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-9-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-9-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
                      id=&#39;colorbox434&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;&lt;/span&gt;      QCLASS (IN) &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-10-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-10-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
                      id=&#39;colorbox435&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;c00c&lt;/span&gt;&lt;/span&gt;      NAME (pointer to QNAME) &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-1-10-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;6&#34;&gt;
                  &lt;div class=&#39;multirow&#39; style=&#34;width: 5.5em;&#34;&gt;&lt;!--  rows=256  --&gt;
                      &lt;img alt=&#39;}Answer&#39; class=&#39;left&#39; src=&#39;../figures/svgs/answer.svg&#39; /&gt;
                  &lt;/div&gt;
              &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-11-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-11-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
                      id=&#39;colorbox436&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;&lt;/span&gt;      TYPE (A, IPv4 address) &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-12-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-12-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
                      id=&#39;colorbox437&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;&lt;/span&gt;      CLASS (IN) &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-13-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-13-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox four-byte-width&#39;
                      id=&#39;colorbox438&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;000000ec&lt;/span&gt;&lt;/span&gt;      TTL (236 seconds) &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-14-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-14-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
                      id=&#39;colorbox439&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0004&lt;/span&gt;&lt;/span&gt;      RDLENGTH &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-15-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-15-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
                      id=&#39;colorbox440&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;1f&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
                      id=&#39;colorbox441&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0d&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
                      id=&#39;colorbox442&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;5b&lt;/span&gt;
                  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox443&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;21&lt;/span&gt; &lt;/span&gt;      RDATA
                  (31.13.91.33)
              &lt;/td&gt;
          &lt;/tr&gt;
      &lt;/table&gt;
  &lt;/div&gt;
  &lt;/div&gt;
  &lt;/div&gt;
  &lt;a id=&#39;x1-56r9&#39;&gt;&lt;/a&gt;
  &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:1-the-structure-of-an-injected-dns-response&#34;&gt;Fig. 1&lt;/a&gt;: The structure of an injected DNS response.&lt;/p&gt;

&lt;/div&gt;
&lt;!-- l. 451 --&gt;&lt;p class=&#39;indent&#39;&gt;  The message is a DNS response (rather than a query),
as indicated by the most significant bit of the flags being set.
It has one question and one answer; the authority and additional
sections are empty. The QNAME in the question section is the
name the DNS client asked to resolve, &lt;span class=&#39;cmtt-10&#39;&gt;rsf.org&lt;/span&gt;. The answer
section has been constructed by the GFW injector. It asserts that
the client’s QNAME resolves to an incorrect IPv4 address (one of
hundreds the injector may use).
&lt;/p&gt;&lt;!-- l. 464 --&gt;&lt;p class=&#39;indent&#39;&gt;  The most important thing to understand is the encoding of DNS
&lt;span class=&#39;ptmri8t-&#39;&gt;names&lt;/span&gt;. Names are pervasive in the DNS protocol: there is one in
every question section (QNAME field), and at least one in every
resource record (NAME field). A name is a sequence of &lt;span class=&#39;ptmri8t-&#39;&gt;labels&lt;/span&gt;.
A label, in turn, is sequence of bytes, prefixed by a byte
indicating its length. A name ends at an empty label, i.e., one that
consists only of the length prefix &lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox27x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;&lt;/span&gt;. The name &lt;span class=&#39;cmtt-10&#39;&gt;example.com &lt;/span&gt;has
three labels of 7, 3, and 0 bytes. Its encoding is 13 bytes long: &lt;span class=&#39;colorbox&#39; id=&#39;colorbox28&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;07&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox29&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox30&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;x&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox31&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;a&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox32x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;m&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox33x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;p&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox34x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;l&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox35x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox36x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox37x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;c&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox38x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox39x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;m&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox40x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;&lt;/span&gt;.
&lt;/p&gt;&lt;!-- l. 485 --&gt;&lt;p class=&#39;indent&#39;&gt;  There is an exception to the length-prefix encoding of names. If
the two most significant bits of the the length prefix are set, then
the other 6 bits of that byte, and the 8 bits of the next byte,
form a 14-bit &lt;span class=&#39;ptmri8t-&#39;&gt;compression pointer  &lt;/span&gt;that indicates that the
remaining labels in the name are found starting at the given
byte offset in the message. Message compression is useful
because it is common for DNS messages to contain the same
name more than once, or several names with a common
suffix. The compression pointer pattern &lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox41&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;c00c&lt;/span&gt;&lt;/span&gt; is one to know
by sight. It points to byte offset 12, which is the offset
of the QNAME field in the question section. Rather than
copy the QNAME into the answer section, the injectors
vulnerable to Wallbleed begin the answer section with a &lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox42&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;c00c&lt;/span&gt;&lt;/span&gt;
compression pointer. (The use of compression pointers is
not unique to the GFW; legitimate resolvers use them as
well. Of the various kinds of DNS injector that exist in
the GFW, some use &lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox43&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;c00c&lt;/span&gt;&lt;/span&gt; and some make a copy of QNAME &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;8&lt;/a&gt; §4.1]&lt;/span&gt;.)
&lt;/p&gt;&lt;!-- l. 521 --&gt;&lt;p class=&#39;indent&#39;&gt;  The format of DNS names, with its length prefixes and pointer
indirection, lends itself to memory safety errors in parsers. When
processing a label length prefix, one must check that the end of
the label stays inside the bounds of the message. The lack of such
a check is the fundamental cause of the Wallbleed overflow
vulnerability.
&lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;3&#34;&gt;&lt;a id=&#34;sec:3-demonstrating-overflow&#34;
  href=&#34;#sec:3-demonstrating-overflow&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;III.&lt;/span&gt; Demonstrating overflow&lt;/a&gt;
&lt;/h2&gt;
&lt;a id=&#39;Q1-1-1&#39;&gt;&lt;/a&gt;
&lt;!-- l. 535 --&gt;&lt;p class=&#39;indent&#39;&gt;  This is a well-formed query whose QNAME, &lt;span class=&#39;cmtt-10&#39;&gt;rsf.org&lt;/span&gt;, is on
the GFW’s blocklist:
&lt;div class=&#34;px-4&#34;&gt;
&lt;!-- l. 551 --&gt;&lt;p class=&#39;indent&#39;&gt;
    &lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox44x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;1234&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox45x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0100&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox46x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox47x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox48x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox49x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox50x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox51x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox52x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox53x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;f&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox54x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox55x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width  cb-light-cyan-CCFDFF&#39; id=&#39;colorbox56x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width  cb-light-cyan-CCFDFF&#39; id=&#39;colorbox57x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox58x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-beige-F5F3E0&#39; id=&#39;colorbox59x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-beige-F5F3E0&#39; id=&#39;colorbox60x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;!-- l. 563 --&gt;&lt;p class=&#39;noindent&#39;&gt;If we send these bytes, in a UDP datagram with destination
port 53, from a host outside China to a host inside China,
we get an injected DNS response. (Actually more than one
response, because this QNAME is on the blocklist of more than
one kind of injector.) Any destination IP address in China     will do, even a non-responsive one—the query only needs to pass
  by an injector middlebox in transit.
  &lt;/p&gt;&lt;!-- l. 574 --&gt;&lt;p class=&#39;indent&#39;&gt;    An injected response looks like the following (this is &lt;a href=&#39;#fig:1-the-structure-of-an-injected-dns-response&#39;&gt;Figure 1&lt;/a&gt;
  in a more compact form):
  &lt;/p&gt;&lt;!-- l. 577 --&gt;
  &lt;div class=&#34;px-4&#34;&gt;
  &lt;p class=&#39;indent&#39;&gt;
            &lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox61x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;1234&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox62x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;8180&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox63x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox64x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox65x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox66x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox67x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox cb-light-cyan-CCFDFF&#39; id=&#39;colorbox68x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox69x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox cb-light-cyan-CCFDFF&#39; id=&#39;colorbox70x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;f&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox71x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox72x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox73x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox74x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox75x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-beige-F5F3E0&#39; id=&#39;colorbox76x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-beige-F5F3E0&#39; id=&#39;colorbox77x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox78x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;c00c&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox79x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox80x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox four-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox81x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;000000ec&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox82x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0004&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox83x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;1f&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox84x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0d&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox85x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;5b&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox86x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;21&lt;/span&gt; &lt;/span&gt;
 &lt;/p&gt;
&lt;/div&gt;&lt;!-- l. 595 --&gt;&lt;p class=&#39;noindent&#39;&gt;The ID and question section are copied from the query. The flags
  have been set as appropriate for a response. The answer section
  falsely asserts that the name &lt;span class=&#39;cmtt-10&#39;&gt;rsf.org &lt;/span&gt;(represented by a
  compression pointer &lt;span class=&#39;colorbox two-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox87x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;c00c&lt;/span&gt;&lt;/span&gt;) resolves to the IPv4 address 31.13.91.33 (&lt;span class=&#39;colorbox one-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox88x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;1f&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox89x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0d&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox90x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;5b&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox91x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;21&lt;/span&gt; &lt;/span&gt;).
  As detailed in &lt;a href=&#39;#app:a-an-example-ordered-pool-of-fake-ip-address&#39;&gt;Appendix A&lt;/a&gt;, this fake address is one of many that
  the injector may use. If we send the query again, we will likely
  get a different one.
  &lt;/p&gt;&lt;!-- l. 612 --&gt;&lt;p class=&#39;indent&#39;&gt;    See what happens if we now artificially increase the length
  prefix of the &lt;span class=&#39;cmtt-10&#39;&gt;org &lt;/span&gt;label from &lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox92x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt;&lt;/span&gt; (3) to &lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox93x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;20&lt;/span&gt;&lt;/span&gt; (32):
  &lt;/p&gt;&lt;!-- l. 628 --&gt;
  &lt;div class=&#34;px-4&#34;&gt;
  &lt;p class=&#39;indent&#39;&gt;
            &lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox94x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;1234&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox95x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0100&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox96x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox97x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox98x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox99x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox100x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox101x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox102x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox103x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;f&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox104x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;20&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox105x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox106x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox107x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox108x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox109&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox110&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;
 &lt;/p&gt;
&lt;/div&gt;
 &lt;!-- l. 639 --&gt;&lt;p class=&#39;noindent&#39;&gt;For one thing, we now get only one injected response: the
  malformed query is ignored by injectors other than the Wallbleed
  ones. The TTL and IP address in the answer section are different
  than before, which is expected: these typically change in every
  response. More significantly, the injected response contains
  29 additional bytes before the answer section. These bytes come
  from the memory of the injection device that handled the query.
  In this example, the leaked bytes are a fragment of a UPnP HTTP
  header:
  &lt;/p&gt;
  &lt;!-- l. 129 --&gt;
&lt;div class=&#34;px-4&#34;&gt;
&lt;p class=&#39;indent&#39;&gt;
  &lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox68&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;1234&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
      id=&#39;colorbox69&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;8180&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox70&#39;&gt;&lt;span
          class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox71&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox72&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
      id=&#39;colorbox73&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox74&#39;&gt;&lt;span
          class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox75&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox76&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
      id=&#39;colorbox77&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;f&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox78&#39;&gt;&lt;span
          class=&#39;cmtt-10&#39;&gt;20&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox79&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox80&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
      id=&#39;colorbox81&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox82&#39;&gt;&lt;span
          class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox83&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox84&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
      id=&#39;colorbox85&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;C&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox86&#39;&gt; &lt;span
          class=&#39;cmtt-10&#39;&gt;u&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox87&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox88&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;t&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
      id=&#39;colorbox89&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox90&#39;&gt; &lt;span
          class=&#39;cmtt-10&#39;&gt;m&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox91&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;/&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox92&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;1&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
      id=&#39;colorbox93&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;.&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox94&#39;&gt; &lt;span
          class=&#39;cmtt-10&#39;&gt;0&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox95&#39;&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
      id=&#39;colorbox96&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;U&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox97&#39;&gt; &lt;span
          class=&#39;cmtt-10&#39;&gt;P&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox98&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;n&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox99&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;P&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
      id=&#39;colorbox100&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;/&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox101&#39;&gt; &lt;span
          class=&#39;cmtt-10&#39;&gt;1&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox102&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;.&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox103&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
      id=&#39;colorbox104&#39;&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox105&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;P&lt;/span&gt; &lt;/span&gt;&lt;span
      class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox106&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
      id=&#39;colorbox107&#39;&gt;
      &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox108&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;c&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox109&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;/&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
      id=&#39;colorbox110&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;V&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox111&#39;&gt; &lt;span
          class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox112&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox113&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0d&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
      id=&#39;colorbox114&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;c00c&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox115&#39;&gt;&lt;span
          class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox116&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox four-byte-width&#39; id=&#39;colorbox117&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;00000082&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
      id=&#39;colorbox118&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0004&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox119&#39;&gt;&lt;span
          class=&#39;cmtt-10&#39;&gt;68&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox120&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;f4&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox121&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;2e&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox122&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;a5&lt;/span&gt; &lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
  &lt;!-- l. 671 --&gt;&lt;p class=&#39;noindent&#39;&gt;Whenever an injector responds to such a query, it reveals
  a small window of its memory, each time with different
  contents.
  &lt;/p&gt;&lt;!-- l. 678 --&gt;&lt;p class=&#39;indent&#39;&gt;    We posit that something like the following process must have
  occurred inside the injector device. Having observed a DNS query
  on its network tap, the injector copies the packet into memory for
  processing. Its goal is to parse the QNAME from the query, check
  it against a blocklist, and inject a response if needed. In parsing
  the QNAME, the injector first sees the 3-byte label &lt;span class=&#39;cmtt-10&#39;&gt;rsf&lt;/span&gt;: so far,
  so good. But the length prefix &lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox166x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;20&lt;/span&gt;&lt;/span&gt; says that the next label is
  32 bytes long, which extends over the &lt;span class=&#39;cmtt-10&#39;&gt;org &lt;/span&gt;label and empty
  label, the QTYPE and QCLASS fields, and past the end of
  the query. Because it fails to enforce a bounds check, the
  injector regards the bytes that follow the packet in memory as
  being part of the query—as if the QNAME had been the
  38 bytes
  &lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox124&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt;&lt;/span&gt;&lt;span
  class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox125&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
  id=&#39;colorbox126&#39;&gt;
  &lt;span class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox127&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;f&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox128&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;20&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
  id=&#39;colorbox129&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox130&#39;&gt; &lt;span
      class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox131&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox132&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
  id=&#39;colorbox133&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox134&#39;&gt;&lt;span
      class=&#39;cmtt-10&#39;&gt;01&lt;/span&gt; &lt;/span&gt;⋅⋅⋅&lt;span
  class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox135&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;P&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
  id=&#39;colorbox136&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox137&#39;&gt; &lt;span
      class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox138&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;c&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
  id=&#39;colorbox139&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;/&lt;/span&gt; &lt;/span&gt;. Despite the extraneous bytes at the end of
  the name, it still matches the blocklist, for reasons we will
  explain in   &lt;a href=&#34;#sec:3a-blocklist-matching&#34;&gt;Section III-A&lt;/a&gt;. The injector copies
  the entire QNAME (as it sees it) into a DNS response.
  The next 4 bytes (in this example, &lt;span class=&#39;colorbox one-byte-width cb-cream-yellow-F7F3D3&#39; id=&#39;colorbox183x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;V&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cream-yellow-F7F3D3&#39; id=&#39;colorbox184x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cream-yellow-F7F3D3&#39; id=&#39;colorbox185x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cream-yellow-F7F3D3&#39; id=&#39;colorbox186x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0d&lt;/span&gt; &lt;/span&gt;) are interpreted as the
  query’s QTYPE and QCLASS, and also copied into the
  response.
  &lt;/p&gt;&lt;!-- l. 713 --&gt;&lt;p class=&#39;indent&#39;&gt;    Why does the parser stop at the &lt;span class=&#39;colorbox one-byte-width cb-cream-yellow-F7F3D3&#39; id=&#39;colorbox187x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;/&lt;/span&gt; &lt;/span&gt; byte, rather than treat it as a
  length prefix and reading another label? We present a precise,


reverse-engineered description of the parsing algorithm in
&lt;a href=&#39;#app:b-reverse-engineered-dns-parsing-and-injection-algorithm&#39;&gt;Appendix B&lt;/a&gt;, which answers this and other questions. In this
case, it is because the QNAME parser stops after the first label
length prefix that is past the end of the query.
&lt;/p&gt;&lt;!-- l. 722 --&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3a&#34;&gt; &lt;a id=&#34;sec:3a-blocklist-matching&#34; href=&#34;#sec:3a-blocklist-matching&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;A.&lt;/span&gt; Blocklist matching&lt;/a&gt;
&lt;/h3&gt;
&lt;!-- l. 725 --&gt;&lt;p class=&#39;indent&#39;&gt;  When an injector checks a name against its blocklist, it does
not use the name’s wire-format representation. Instead, it flattens
the QNAME into a dot-delimited string terminated by a &lt;span class=&#39;colorbox one-byte-width cb-white-FFFFFF&#39; id=&#39;colorbox188x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;&lt;/span&gt; byte.
This string is what is passed to the blocklist lookup function. The
evidence for this claim is that when a label in a query contains an
ASCII dot character &lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox189&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;.&lt;/span&gt; &lt;/span&gt; or a null byte &lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox190&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;&lt;/span&gt;, the blocklist matcher
interprets it as a label separator or name terminator, respectively.
For example, if the name &lt;span class=&#39;cmtt-10&#39;&gt;example.com &lt;/span&gt;were on the blocklist,
either of the QNAMEs
&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox148&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;07&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox149&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox150&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;x&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox151&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;a&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox152&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;m&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox153&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;p&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox154&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;l&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox155&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox156&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox157&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;c&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox158&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox159&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;m&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox160&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt; or &lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox161&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0f&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox162&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox163&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;x&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox164&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;a&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox165&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;m&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox166&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;p&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox167&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;l&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox168&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox169&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;.&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox170&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;c&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox171&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox172&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;m&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox173&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox174&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;a&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox175&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;b&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox176&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;c&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox177&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;
would elicit an injection. Though the
names are distinct at the DNS level (the first consists of three
labels of 7, 3, and 0 bytes; the second of two labels of 15 and
0 bytes), they are both flattened into the same effective string
“example.com”.
&lt;/p&gt;&lt;!-- l. 753 --&gt;&lt;p class=&#39;indent&#39;&gt;  This explains why the QNAME
  &lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox178&#39;&gt;&lt;span
    class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox179&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox180&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
id=&#39;colorbox181&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;f&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox182&#39;&gt;&lt;span
    class=&#39;cmtt-10&#39;&gt;20&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox183&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox184&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
id=&#39;colorbox185&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox186&#39;&gt;&lt;span
    class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox187&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox188&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;01&lt;/span&gt; &lt;/span&gt; ⋅⋅⋅ &lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox189&#39;&gt; &lt;span
    class=&#39;cmtt-10&#39;&gt;P&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox190&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox191&#39;&gt;
&lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox192&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox193&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;/&lt;/span&gt; &lt;/span&gt;
that was understood by
the injector in the previous example matches the blocklist rule
for &lt;span class=&#39;cmtt-10&#39;&gt;rsf.org&lt;/span&gt;. Though the second label is not just &lt;span class=&#39;cmtt-10&#39;&gt;org&lt;/span&gt;, but
rather &lt;span class=&#39;cmtt-10&#39;&gt;org &lt;/span&gt;plus many additional bytes, the first of those
additional bytes is &lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox237x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;&lt;/span&gt;, which terminates the name when it
is flattened into a string. The extra bytes are included in
the injected DNS response, but they do not affect blocklist
matching.
&lt;/p&gt;&lt;!-- l. 772 --&gt;&lt;p class=&#39;indent&#39;&gt;  It also explains why we modified the length prefix of the &lt;span class=&#39;cmtt-10&#39;&gt;org&lt;/span&gt;
label, rather than the &lt;span class=&#39;cmtt-10&#39;&gt;rsf &lt;/span&gt;label. If we had extended the &lt;span class=&#39;cmtt-10&#39;&gt;rsf &lt;/span&gt;label,
the &lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox238x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt;&lt;/span&gt; before &lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox239x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox240x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox241x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt; &lt;/span&gt; would have been interpreted as a literal character in
the flattened name string—and because the string “rsf\x03org”
does not match anything on the blocklist, it would not have
gotten a response. Whereas by extending the &lt;span class=&#39;cmtt-10&#39;&gt;org &lt;/span&gt;label, &lt;span class=&#39;cmtt-10&#39;&gt;rsf &lt;/span&gt;and
&lt;span class=&#39;cmtt-10&#39;&gt;org &lt;/span&gt;remain separate labels, and the final empty label &lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox242x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;&lt;/span&gt; becomes a
string terminator. Altering the first length prefix can work,
but then the second length prefix must also be changed to
a dot, in order to separate the labels in the final string:
&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox200&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;20&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox201&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox202&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox203&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;f&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox204&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;.&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox205&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox206&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox207&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox208&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;&lt;/span&gt;.
&lt;/p&gt;&lt;!-- l. 800 --&gt;&lt;p class=&#39;indent&#39;&gt;  Blocklist rules are not literal names, but &lt;span class=&#39;ptmri8t-&#39;&gt;patterns&lt;/span&gt;, like regular
expressions &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;9&lt;/a&gt; §4.1]&lt;/span&gt;. A single rule may, for example, block an
entire domain with its subdomains. Patterns are not uniformly
constructed (showing signs of fallible human curation). The
&lt;span class=&#39;cmtt-10&#39;&gt;rsf.org &lt;/span&gt;pattern we have been using is end-anchored and
label-anchored: &lt;span class=&#39;cmtt-10&#39;&gt;rsf.org &lt;/span&gt;and &lt;span class=&#39;cmtt-10&#39;&gt;x.rsf.org &lt;/span&gt;match the pattern, but
&lt;span class=&#39;cmtt-10&#39;&gt;xrsf.org&lt;/span&gt;, &lt;span class=&#39;cmtt-10&#39;&gt;rsf.org.x&lt;/span&gt;, and &lt;span class=&#39;cmtt-10&#39;&gt;rsf.orgx &lt;/span&gt;do not. As a regular
expression, it would be something like &lt;span class=&#39;obeylines-h&#39;&gt;&lt;code class=&#39;verb&#39;&gt;(.*\.)*rsf\.org$&lt;/code&gt;&lt;/span&gt;.
In comparison, the pattern for &lt;span class=&#39;cmtt-10&#39;&gt;shadowvpn.com &lt;/span&gt;is start-anchored
and not label-anchored: &lt;span class=&#39;cmtt-10&#39;&gt;shadowvpn.com&lt;/span&gt;, &lt;span class=&#39;cmtt-10&#39;&gt;shadowvpn.comx&lt;/span&gt;, and
&lt;span class=&#39;cmtt-10&#39;&gt;shadowvpn.com.x &lt;/span&gt;match it, but &lt;span class=&#39;cmtt-10&#39;&gt;xshadowvpn.com &lt;/span&gt;and
&lt;span class=&#39;cmtt-10&#39;&gt;x.shadowvpn.com &lt;/span&gt;do not. Its regular expression would be
&lt;span class=&#39;obeylines-h&#39;&gt;&lt;code class=&#39;verb&#39;&gt;^shadowvpn\.com.*&lt;/code&gt;&lt;/span&gt;.
&lt;/p&gt;&lt;!-- l. 827 --&gt;
  &lt;h3 class=&#34;subsectionHead&#34; id=&#34;3b&#34;&gt; &lt;a id=&#34;sec:3b-maximizing-leaked-bytes-per-response&#34; href=&#34;#sec:3b-maximizing-leaked-bytes-per-response&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;B.&lt;/span&gt; Maximizing leaked bytes per response&lt;/a&gt;
  &lt;/h3&gt;
  &lt;!-- l. 830 --&gt;&lt;p class=&#39;indent&#39;&gt;    The greatest number of bytes that may be leaked in a single
  response is 125. This is a consequence of the fact that the
  question section in injected responses has a maximum size of
  131 bytes, and the shortest question section in a query that
  triggers a response has a length of 6 bytes. The question
  section in a response contains a copy of the question section
  from the query at the beginning; everything after that is
  leaked memory. To maximize the amount of leaked memory,
  minimize the size of the question section in the query (how
  big the query actually is), and maximize the size of the
  question section in the response (how big the injector &lt;span class=&#39;ptmri8t-&#39;&gt;thinks &lt;/span&gt;the
  query is).
&lt;!-- l. 866 --&gt;&lt;p class=&#39;indent&#39;&gt;  The first step in minimizing the size of the query is to
omit the QTYPE and QCLASS fields. When these fields
are absent, the injector reads them from its own memory.
QCLASS has no effect, and QTYPE only controls whether
the injector crafts a type A (IPv4) or type AAAA (IPv6)
response. The injectors default to type A for unknown QTYPEs;
they send a type AAAA response only when the QTYPE
is &lt;span class=&#39;colorbox two-byte-width cb-cream-yellow-F7F3D3&#39; id=&#39;colorbox270x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;001c&lt;/span&gt;&lt;/span&gt;. In either case, the size of the question section is the
same.
&lt;/p&gt;&lt;!-- l. 880 --&gt;&lt;p class=&#39;indent&#39;&gt;  The other part of minimizing query size is to use a short
QNAME. To find short DNS names that trigger an injection
response, we enumerated all names of the forms
&lt;span class=&#39;cmtt-10 formula&#39;&gt;a.b&lt;/span&gt;, &lt;span class=&#39;cmtt-10 formula&#39;&gt;a.bc&lt;/span&gt;, and &lt;span class=&#39;cmtt-10 formula&#39;&gt;ab.c&lt;/span&gt;,
with &lt;span class=&#39;cmtt-10 formula&#39;&gt;a&lt;/span&gt;, &lt;span class=&#39;cmtt-10 formula&#39;&gt;b&lt;/span&gt;, and
        &lt;span class=&#39;cmtt-10 formula&#39;&gt;c&lt;/span&gt; ranging over the
    characters ‘&lt;span class=&#39;cmtt-10&#39;&gt;a&lt;/span&gt;’–‘&lt;span class=&#39;cmtt-10&#39;&gt;z&lt;/span&gt;’, ‘&lt;span
        class=&#39;cmtt-10&#39;&gt;0&lt;/span&gt;’–‘&lt;span class=&#39;cmtt-10&#39;&gt;9&lt;/span&gt;’, ‘&lt;span class=&#39;cmtt-10&#39;&gt;-&lt;/span&gt;’, and ‘&lt;span
        class=&#39;cmtt-10&#39;&gt;_&lt;/span&gt;’, and sent them in DNS queries into China. We found eight short names that
worked: &lt;span class=&#39;cmtt-10&#39;&gt;3.tt&lt;/span&gt;, &lt;span class=&#39;cmtt-10&#39;&gt;4.tt&lt;/span&gt;, &lt;span class=&#39;cmtt-10&#39;&gt;5.tt&lt;/span&gt;, &lt;span class=&#39;cmtt-10&#39;&gt;6.tt&lt;/span&gt;, &lt;span class=&#39;cmtt-10&#39;&gt;7.tt&lt;/span&gt;, &lt;span class=&#39;cmtt-10&#39;&gt;8.tt&lt;/span&gt;, &lt;span class=&#39;cmtt-10&#39;&gt;9.tt&lt;/span&gt;, and &lt;span class=&#39;cmtt-10&#39;&gt;x.co&lt;/span&gt;.
&lt;span class=&#39;footnote-mark&#39;&gt;&lt;a href=&#39;#fn:name-3.tt-has-stopped-triggering-injection&#39;&gt;&lt;sup class=&#39;textsuperscript&#39;&gt;2&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id=&#39;x1-13f2&#39;&gt;&lt;/a&gt;
Each  of  these  names  takes  6 bytes  to  encode  (e.g.,
&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox228&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;01&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox229&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;3&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox230&#39;&gt;&lt;span
            class=&#39;cmtt-10&#39;&gt;02&lt;/span&gt;&lt;/span&gt;&lt;span
             class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox231&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;t&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox232&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;t&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox233&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;&lt;/span&gt;).
&lt;span class=&#39;footnote-mark&#39;&gt;&lt;a href=&#39;#fn:minor-subtlety-implicit-null-terminator&#39;&gt;&lt;sup class=&#39;textsuperscript&#39;&gt;3&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id=&#39;x1-15f3&#39;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
  &lt;ol&gt;
      &lt;li class=&#39;footnote-text&#39;&gt;
          &lt;a id=&#39;fn:name-3.tt-has-stopped-triggering-injection&#39;&gt;&lt;/a&gt;
          &lt;span class=&#39;footnote-mark&#39;&gt;
              &lt;sup class=&#39;textsuperscript&#39;&gt;2&lt;/sup&gt;
          &lt;/span&gt;&lt;span class=&#39;footnotes-text&#39;&gt;We did this experiment on November 3, 2021. The name &lt;/span&gt;&lt;span&gt;
              &lt;class=&#39;cmtt-8&#39;&gt;3.tt&lt;/span&gt; has stopped triggering injection since August 7, 2023: see &lt;a
              href=&#34;#sec:4-what-information-is-leaked&#34;&gt;Section IV&lt;/a&gt;.
      &lt;/li&gt;
      &lt;li class=&#39;footnote-text&#39;&gt;
          &lt;a id=&#39;fn:minor-subtlety-implicit-null-terminator&#39;&gt;&lt;/a&gt;
          &lt;span class=&#39;footnote-mark&#39;&gt;
              &lt;sup class=&#39;textsuperscript&#39;&gt;3&lt;/sup&gt;
          &lt;/span&gt;&lt;span class=&#39;footnotes-text&#39;&gt;There is a minor subtlety here. With names as short as these, it is
              technically possible to omit the final &lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox234&#39;&gt;&lt;span
                      class=&#39;cmtt-8&#39;&gt;00&lt;/span&gt;&lt;/span&gt; byte, which otherwise is needed to
              terminate the flattened name string parsed from the query. The injector seems to zero the 18th byte of
              the destination buffer before copying the query
              into memory, so queries that are only 17 bytes long effectively have an implicit null terminator. As the
              DNS header takes up 12 bytes, this trick
              only works for QNAMEs as short as 5 bytes. But because the first leaked byte is a constant &lt;span
                  class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox235&#39;&gt;&lt;span class=&#39;cmtt-8&#39;&gt;00&lt;/span&gt;&lt;/span&gt; in this case, shortening the
              QNAME from 6 to 5
              bytes does not increase the number of informative bytes leaked. See &lt;a
              href=&#39;#app:b-reverse-engineered-dns-parsing-and-injection-algorithm&#39;&gt;Appendix B&lt;/a&gt; for an algorithmic
          description of this and other low-level details.
          &lt;/span&gt;
      &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
&lt;!-- l. 928 --&gt;&lt;p class=&#39;indent&#39;&gt;  At the start of &lt;a href=&#34;#sec:3-demonstrating-overflow&#34;&gt;Section III&lt;/a&gt;, we caused an injector to leak
29 bytes by increasing a QNAME label length prefix from 3
to 32. Intuitively, in order to leak more bytes, one should
increase the label length further. This intuition holds true, but only
up to a point. &lt;a href=&#34;#fig:2-question-section-size-label-length-prefix&#34;&gt;Figure 2&lt;/a&gt; shows how the size of the question section
in a response varies as the label length in a query is increased.
(The injector we are concerned with does not enforce RFC
1035’s length limit of 63 bytes on labels &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:rfc1035&#39;&gt;20&lt;/a&gt; §4.1.4]&lt;/span&gt;, naively
interpreting every byte value as a simple length instead.) They
increment one-for-one until the response question section
reaches a maximum of 131 bytes. Beyond that point, the
question section becomes slightly smaller than the maximum,
130 bytes.
&lt;div class=&#39;figure&#39;&gt;
  &lt;!-- l. 340 --&gt;
  &lt;p class=&#39;noindent&#39; id=&#39;fig:2-question-section-size-label-length-prefix&#39;&gt;
      &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/incremental-qname-change-first-label-2023-08-15_00-49-21.png&#39; /&gt; &lt;a
          id=&#39;x1-6r1&#39;&gt;&lt;/a&gt;
     &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:2-question-section-size-label-length-prefix&#34;&gt;Fig. 2&lt;/a&gt;: The size of the question section in
      injected DNS responses versus the label length prefix &lt;span class=&#34;formula&#34;&gt;x&lt;/span&gt;
      in a query for the QNAME &lt;span class=&#39;colorbox one-byte-width formula&#39; id=&#39;colorbox218&#39;&gt;x&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox219&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt;
      &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox220&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt;
      &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox221&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;f&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
          id=&#39;colorbox222&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;.&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox223&#39;&gt; &lt;span
              class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox224&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt;
      &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox225&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
          id=&#39;colorbox226&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;. We are
      using the “embedded dot character” and “embedded null terminator” tricks from &lt;a
          href=&#34;#sec:3a-blocklist-matching&#34;&gt;Section III-A&lt;/a&gt;, in order to place the
      variable label length prefix at the beginning of the question section.
  &lt;/p&gt;
&lt;/div&gt;
&lt;!-- l. 947 --&gt;&lt;p class=&#39;indent&#39;&gt;  This odd behavior is a product of the confused logic of the
query parsing algorithm (&lt;a href=&#39;#app:b-reverse-engineered-dns-parsing-and-injection-algorithm&#39;&gt;Appendix B&lt;/a&gt;). Two conditions that cause
the algorithm’s main loop to terminate are when the total length
of the QNAME exceeds 127 bytes while processing the
contents of a label, and when the parser has just read a
length prefix past the end of the query. The sweet spot of
131 bytes occurs when the QNAME is 127 bytes exactly
(including the final label length prefix). In this case, the
first exit condition is avoided, allowing the next iteration      of the loop to read 1 additional byte before exiting. The
  127 bytes of the QNAME, plus 4 bytes for the missing
  QTYPE and QCLASS, produce a question section of 131 bytes
  total.
&lt;/p&gt;
&lt;!-- l. 995 --&gt;&lt;p class=&#39;indent&#39;&gt;  The QNAME length limit is a general characteristic of this
kind of injector, independent of the Wallbleed parsing bug.
We sent well-formed queries for names of increasing length
(&lt;span class=&#39;cmtt-10&#39;&gt;a.google.sm&lt;/span&gt;, &lt;span class=&#39;cmtt-10&#39;&gt;aa.google.sm&lt;/span&gt;, &lt;span class=&#39;cmtt-10&#39;&gt;aaa.google.sm&lt;/span&gt;, …) into
China, using a base domain &lt;span class=&#39;cmtt-10&#39;&gt;google.sm &lt;/span&gt;known to match
the blocklist. The injectors stopped responding once the
&lt;span class=&#39;colorbox&#39; id=&#39;colorbox279&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;m&lt;/span&gt; &lt;/span&gt; byte at the end of the final label was pushed out of the first
127 bytes. The limit is the same for type A and type AAAA
queries, and for any number of labels in the QNAME. The
maximum name length prescribed in RFC 1035 is 255 bytes &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:rfc1035&#39;&gt;20&lt;/a&gt; §2.3.4]&lt;/span&gt;.
&lt;/p&gt;&lt;!-- l. 1014 --&gt;&lt;p class=&#39;indent&#39;&gt;  Though it is satisfying to know the absolute limits and the
reasons for them, there is little difference between 130 and
131 bytes in practice. In many of the experiments of this paper
(some performed before we understood the nuances of the
parsing algorithm), we used a label length prefix of &lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox280x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;ff&lt;/span&gt;&lt;/span&gt;, which
gets 1 byte fewer per query than the maximum possible.
A question section of 130 bytes in response to sufficiently large
length prefixes agrees with findings of klzgrad in 2012 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:gfw-looking-glass-post&#39;&gt;6&lt;/a&gt;]&lt;/span&gt;.
&lt;a id=&#39;x1-18r3&#39;&gt;&lt;/a&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3c&#34;&gt; &lt;a id=&#34;sec:3c-Incomplete-patch-wallbleed-v2&#34; href=&#34;#sec:3c-Incomplete-patch-wallbleed-v2&#34;&gt;&lt;span
  class=&#34;titlemark&#34;&gt;C.&lt;/span&gt; Incomplete patch (Wallbleed v2)&lt;/a&gt;
&lt;/h3&gt;
&lt;!-- l. 1028 --&gt;&lt;p class=&#39;indent&#39;&gt;  The GFW attempted to patch Wallbleed between September
and November 2023, adding restrictions to the DNS message
parsing algorithm. We have documented the progression of
patching in &lt;a href=&#39;#sec:7-monitoring-the-censors-patching-behavior&#39;&gt;Section VII&lt;/a&gt;. The QTYPE and QCLASS fields
could no longer be omitted, and QCLASS had to have the
value &lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox281&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;&lt;/span&gt;. In addition, a label length prefix that overflowed the
end of the query but did not reach the 127-byte QNAME
length threshold caused a query to be ignored. A query
like the following no longer worked to leak DNS injector
memory:
&lt;div class=&#34;px-4&#34;&gt;
&lt;!-- l. 1039 --&gt;&lt;p class=&#39;indent&#39;&gt;
  &lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox238&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
  id=&#39;colorbox239&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0120&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox240&#39;&gt;&lt;span
      class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox241&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox242&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
  id=&#39;colorbox243&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox244&#39;&gt;&lt;span
      class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox245&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;w&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox246&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;w&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
  id=&#39;colorbox247&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;w&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox248&#39;&gt;&lt;span
      class=&#39;cmtt-10&#39;&gt;06&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox249&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox250&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
  id=&#39;colorbox251&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox252&#39;&gt; &lt;span
      class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox253&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;l&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox254&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
  id=&#39;colorbox255&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;ff&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox256&#39;&gt; &lt;span
      class=&#39;cmtt-10&#39;&gt;c&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox257&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox258&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;m&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox303x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;!-- l. 1048 --&gt;&lt;p class=&#39;indent&#39;&gt;  But the first patch overlooked one of the exit conditions in the
parsing loop. A query with QTYPE and QCLASS, and with a
final label length prefix that exceeded the 127-byte threshold, still
caused the parser to think the query was larger than it really was.
A slightly modified probe format still worked to elicit the
contents of memory:
&lt;/p&gt;&lt;!-- l. 1057 --&gt;
&lt;div class=&#34;px-4&#34;&gt;
  &lt;p class=&#39;indent&#39;&gt;
    &lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox259&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
        id=&#39;colorbox260&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0120&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox261&#39;&gt;&lt;span
            class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox262&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox263&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
        id=&#39;colorbox264&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox265&#39;&gt;&lt;span
            class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox266&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;w&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox267&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;w&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox268&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;w&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox269&#39;&gt;&lt;span
            class=&#39;cmtt-10&#39;&gt;06&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox270&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox271&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox272&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox273&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox274&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;l&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox275&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox276&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox277&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;c&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox278&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox279&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;m&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox325x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;ff&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
        id=&#39;colorbox280&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox281&#39;&gt;&lt;span
            class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;!-- l. 1068 --&gt;&lt;p class=&#39;indent&#39;&gt;  We named the pre-patch and post-patch vulnerabilities
Wallbleed v1 and Wallbleed v2 respectively. We have used
Wallbleed v1 probes in most of the experiments described in this
paper. After the patch, we were able to resume experiments using
modified probes, until Wallbleed v2 was finally patched in March
2024. With Wallbleed v2, only maximum-length overflows were
possible: &lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox328x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;ff&lt;/span&gt;&lt;/span&gt; for a label length worked, but &lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox329x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;20&lt;/span&gt;&lt;/span&gt; did not. We found that
the shortest domains, like &lt;span class=&#39;cmtt-10&#39;&gt;3.tt&lt;/span&gt;, no longer worked as triggers, and
therefore did later experiments with &lt;span class=&#39;cmtt-10&#39;&gt;te.rs&lt;/span&gt;, the next shortest   effective domain.
  &lt;/p&gt;&lt;!-- l. 1084 --&gt;&lt;p class=&#39;indent&#39;&gt;
  &lt;a id=&#39;x1-19r4&#39;&gt;&lt;/a&gt;
  &lt;h3 class=&#34;subsectionHead&#34; id=&#34;3d&#34;&gt; &lt;a id=&#34;sec:3d-other-details-of-injection-triggering&#34; href=&#34;#sec:3d-other-details-of-injection-triggering&#34;&gt;&lt;span
    class=&#34;titlemark&#34;&gt;D.&lt;/span&gt; Other details of injection triggering&lt;/a&gt;
  &lt;/h3&gt;
  &lt;!-- l. 1087 --&gt;&lt;p class=&#39;indent&#39;&gt;    Here we comment on a few other details of the conditions to
  trigger injection. Note that there are other kinds of DNS injector
  in the GFW &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;8&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2021a&#39;&gt;9&lt;/a&gt;]&lt;/span&gt;, with its own blocklist and implementation
  quirks.
  &lt;/p&gt;&lt;!-- l. 1092 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;The injector defaults to type A responses.   &lt;/span&gt;The DNS injectors
  respond only to queries whose QNAME matches a certain
  blocklist. The vulnerable injector injects type AAAA responses to
  type AAAA queries, and type A responses to queries of all other
  types.
  &lt;/p&gt;&lt;!-- l. 1099 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;The  injector  works  on  both  IPv4  and  IPv6.   &lt;/span&gt;The UDP
  datagrams that carry DNS queries may be sent over IPv4 or IPv6;
  the injector responds to either, forging an IPv4 or IPv6 response
  as appropriate for the query. (Here we are referring to the IP
  version over which the query is sent, not the QTYPE of
  the query. A query sent over IPv4 may request an IPv6
  address and vice versa.) On May 9, 2023, we sent Wallbleed
  probes for the QNAME
  &lt;span
  class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox407&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;ff&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox408&#39;&gt;
  &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox409&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox410&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
  id=&#39;colorbox411&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox412&#39;&gt; &lt;span
      class=&#39;cmtt-10&#39;&gt;l&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox413&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox414&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;.&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
  id=&#39;colorbox415&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox416&#39;&gt; &lt;span
      class=&#39;cmtt-10&#39;&gt;m&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox417&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;
&lt;/span&gt;
  Francisco, AS14061) to an IPv6 host in Alibaba Cloud (Beijing,
  AS37963) and to a non–DNS server 2400:dd01:103a:4041::101 in
  China. In both cases, we got an injected DNS response
  containing leaked memory. However, we could not trigger DNS
  injection in the other direction, sending queries from the VPS
  in China to the VPS or other IPv6 addresses in the US.
  This is likely because the injector was not deployed on the
  paths from our VPS in China to the foreign destinations we
  tested.
  &lt;/p&gt;&lt;!-- l. 1141 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Only destination port 53 is looked at.   &lt;/span&gt;On May 9, 2023, we
  sent queries for &lt;span class=&#39;cmtt-10&#39;&gt;google.sm &lt;/span&gt;from the VPS in the US to our VPS
  in China, varying the UDP destination port over every value
  between 0 and 65535. Only queries sent to port 53 resulted in
  injections. This observation is consistent with prior findings of
  Lowe et al. in 2007 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Lowe2007a&#39;&gt;21&lt;/a&gt; §6.4]&lt;/span&gt; and Anonymous et al. in 2020 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;8&lt;/a&gt; §2.1]&lt;/span&gt;.
  &lt;/p&gt;&lt;!-- l. 1152 --&gt;&lt;p class=&#39;indent&#39;&gt;
  &lt;a id=&#39;x1-20r4&#39;&gt;&lt;/a&gt;
  &lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;4&#34;&gt;&lt;a id=&#34;sec:4-what-information-is-leaked&#34;
    href=&#34;#sec:4-what-information-is-leaked&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;IV.&lt;/span&gt; What information is leaked?&lt;/a&gt;
  &lt;/h2&gt;
  &lt;a id=&#39;Q1-1-3&#39;&gt;&lt;/a&gt;
  &lt;!-- l. 1158 --&gt;&lt;p class=&#39;indent&#39;&gt;    To better understand what information is leaked from the
  vulnerability, we conducted a longitudinal measurement and
  collected data for two years, from November 21, 2021 to
  November 29, 2023. &lt;a href=&#34;#tbl:1-experiment-timeline-vantage-points&#34;&gt;Table I I&lt;/a&gt; summarizes this experiment, as well
  as those of later sections.
  &lt;/p&gt;
  &lt;!-- l. 967 --&gt;
&lt;div class=&#39;table-container&#39; id=&#39;tbl:1-experiment-timeline-vantage-points&#39;&gt;
&lt;a id=&#39;x1-17r1&#39;&gt;&lt;/a&gt;
&lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:1-experiment-timeline-vantage-points&#34;&gt;TABLE I&lt;/a&gt;: Experiment timeline and vantage points. In total, we used three VPSes in Tencent Cloud (TC, Beijing) (AS45090),
one  machine  at  the  University  Colorado  Boulder  (Scan,  CO)  (AS104)  and  one  machine  at  the  University  of  Massachusetts
Amherst (Long, MA) (AS1249).
&lt;/p&gt;
&lt;div class=&#39;tabular&#39;&gt;
    &lt;table class=&#39;tabular&#39; id=&#39;TBL-1&#39;&gt;
      &lt;colgroup id=&#39;TBL-1-1g&#39;&gt;
          &lt;col id=&#39;TBL-1-1&#39; /&gt;
          &lt;col id=&#39;TBL-1-2&#39; /&gt;
          &lt;col id=&#39;TBL-1-3&#39; /&gt;
          &lt;col id=&#39;TBL-1-4&#39; /&gt;
          &lt;col id=&#39;TBL-1-5&#39; /&gt;
          &lt;col id=&#39;TBL-1-6&#39; /&gt;
          &lt;col id=&#39;TBL-1-7&#39; /&gt;
          &lt;col id=&#39;TBL-1-8&#39; /&gt;
      &lt;/colgroup&gt;
      &lt;tr id=&#39;TBL-1-1-&#39;&gt;
          &lt;td class=&#39;td11&#39; id=&#39;TBL-1-1-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;Experiments &lt;/td&gt;
          &lt;td class=&#39;td11&#39; colspan=&#39;2&#39; id=&#39;TBL-1-1-2&#39; style=&#39;white-space:nowrap; text-align:center;&#39;&gt;
              &lt;div class=&#39;multicolumn&#39; style=&#39;white-space:nowrap; text-align:center;&#39;&gt;Time Span&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#39;td00&#39; colspan=&#39;2&#39; id=&#39;TBL-1-1-4&#39; style=&#39;white-space:nowrap; text-align:center;&#39;&gt;
              &lt;div class=&#39;multicolumn&#39; style=&#39;white-space:nowrap; text-align:center;&#39;&gt;Duration&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-1-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;CN Hosts &lt;/td&gt;
          &lt;td class=&#39;td11&#39; id=&#39;TBL-1-1-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;US Hosts &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-1-8&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Sections &lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr id=&#39;TBL-1-2-&#39;&gt;
          &lt;td class=&#39;td11&#39; id=&#39;TBL-1-2-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;Characterization &lt;/td&gt;
          &lt;td class=&#39;td11&#39; id=&#39;TBL-1-2-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Oct. 2, 2021 – Feb. 10,
              2022
          &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-2-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;  &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-2-4&#39;
              style=&#39;white-space:nowrap; text-align:left; border-right: none !important;&#39;&gt;4 &lt;/td&gt;
          &lt;td class=&#39;td01&#39; id=&#39;TBL-1-2-5&#39;
              style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;months &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-2-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 1 (TC, Beijing)  &lt;/td&gt;
          &lt;td class=&#39;td11&#39; id=&#39;TBL-1-2-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;1 (Long, MA) &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-2-8&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;a
              href=&#39;#sec:3b-maximizing-leaked-bytes-per-response&#39;&gt;§III-B&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr id=&#39;TBL-1-3-&#39;&gt;
          &lt;td class=&#39;td11&#39; id=&#39;TBL-1-3-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;Re-characterization &lt;/td&gt;
          &lt;td class=&#39;td11&#39; id=&#39;TBL-1-3-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; May 9 – Sep. 10, 2023
          &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-3-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &amp;amp; Feb, 2024  &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-3-4&#39;
              style=&#39;white-space:nowrap; text-align:left; border-right: none !important;&#39;&gt;5 &lt;/td&gt;
          &lt;td class=&#39;td01&#39; id=&#39;TBL-1-3-5&#39;
              style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;months &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-3-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 1 (TC, Beijing)  &lt;/td&gt;
          &lt;td class=&#39;td11&#39; id=&#39;TBL-1-3-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;1 (Long, MA)	 &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-3-8&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;a
                  href=&#39;#sec:3-demonstrating-overflow&#39;&gt;§III&lt;/a&gt; &lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr id=&#39;TBL-1-4-&#39;&gt;
          &lt;td class=&#39;td11&#39; id=&#39;TBL-1-4-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;Longitudinal &lt;/td&gt;
          &lt;td class=&#39;td11&#39; id=&#39;TBL-1-4-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Nov. 21, 2021 – Apr. 16, 2024
          &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-4-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;
          &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-4-4&#39;
              style=&#39;white-space:nowrap; text-align:left; border-right: none !important;&#39;&gt;2 &lt;/td&gt;
          &lt;td class=&#39;td01&#39; id=&#39;TBL-1-4-5&#39;
              style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;years &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-4-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 3 (TC, Beijing)  &lt;/td&gt;
          &lt;td class=&#39;td11&#39; id=&#39;TBL-1-4-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;1 (Long, MA) &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-4-8&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;a
                  href=&#39;#sec:4-what-information-is-leaked&#39;&gt;§IV&lt;/a&gt;
          &lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr id=&#39;TBL-1-5-&#39;&gt;
          &lt;td class=&#39;td11&#39; id=&#39;TBL-1-5-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;Seeing Our Own &lt;/td&gt;
          &lt;td class=&#39;td11&#39; id=&#39;TBL-1-5-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Aug. 12 – Sep. 8, 2023
          &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-5-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &amp;amp; Mar. 13, 2024  &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-5-4&#39;
              style=&#39;white-space:nowrap; text-align:left; border-right: none !important;&#39;&gt;4 &lt;/td&gt;
          &lt;td class=&#39;td01&#39; id=&#39;TBL-1-5-5&#39;
              style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;weeks &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-5-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 1 (TC, Beijing)  &lt;/td&gt;
          &lt;td class=&#39;td11&#39; id=&#39;TBL-1-5-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;1 (Scan, CO) &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-5-8&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;a
                  href=&#39;#sec:5-seeing-out-own-traffic&#39;&gt;§V&lt;/a&gt;
          &lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr id=&#39;TBL-1-6-&#39;&gt;
          &lt;td class=&#39;td11&#39; id=&#39;TBL-1-6-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;Internet Scan &lt;/td&gt;
          &lt;td class=&#39;td11&#39; id=&#39;TBL-1-6-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Jun. 25 &amp;amp; Aug. 23,
              2023
          &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-6-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &amp;amp; Mar. 6, 2024  &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-6-4&#39;
              style=&#39;white-space:nowrap; text-align:left; border-right: none !important;&#39;&gt;3 &lt;/td&gt;
          &lt;td class=&#39;td01&#39; id=&#39;TBL-1-6-5&#39;
              style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;days &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-6-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; -  &lt;/td&gt;
          &lt;td class=&#39;td11&#39; id=&#39;TBL-1-6-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;1 (Scan, CO) &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-6-8&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;a
                  href=&#39;#sec:6-ip-addresses-affected-by-wallbleed&#39;&gt;§VI&lt;/a&gt;
          &lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr id=&#39;TBL-1-7-&#39;&gt;
          &lt;td class=&#39;td11&#39; id=&#39;TBL-1-7-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;Patching Behavior &lt;/td&gt;
          &lt;td class=&#39;td11&#39; id=&#39;TBL-1-7-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Sep. 6 – Nov. 7, 2023
          &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-7-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &amp;amp; Mar. 6, 2024 –
              Apr. 16,
              2024 &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-7-4&#39;
              style=&#39;white-space:nowrap; text-align:left; border-right: none !important;&#39;&gt;3 &lt;/td&gt;
          &lt;td class=&#39;td01&#39; id=&#39;TBL-1-7-5&#39;
              style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;months &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-7-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 2 (TC, Beijing)  &lt;/td&gt;
          &lt;td class=&#39;td11&#39; id=&#39;TBL-1-6-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;2 (Scan &amp; Long) &lt;/td&gt;
          &lt;td class=&#39;td10&#39; id=&#39;TBL-1-7-8&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;a
                  href=&#39;#sec:7-monitoring-the-censors-patching-behavior&#39;&gt;§VII&lt;/a&gt;, &lt;a
                  href=&#39;#sec:3c-Incomplete-patch-wallbleed-v2&#39;&gt;§III-C&lt;/a&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/div&gt;
  &lt;!-- l. 1164 --&gt;&lt;p class=&#39;indent&#39;&gt;    Based on the observations in &lt;a href=&#39;#sec:3b-maximizing-leaked-bytes-per-response&#39;&gt;Section III-B&lt;/a&gt;,
  we designed the following &lt;span class=&#39;ptmri8t-&#39;&gt;Wallbleed probe &lt;/span&gt;to trigger the
  vulnerability:
  &lt;/p&gt;&lt;!-- l. 1167 --&gt;
&lt;div class=&#34;px-4&#34;&gt;
  &lt;p class=&#39;indent&#39;&gt;
    &lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox283&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
        id=&#39;colorbox284&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0120&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox285&#39;&gt;&lt;span
            class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox286&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox287&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
        id=&#39;colorbox288&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox289&#39;&gt;&lt;span
            class=&#39;cmtt-10&#39;&gt;01&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox290&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;3&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox291&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;ff&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox292&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;t&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox293&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;t&lt;/span&gt; &lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
  &lt;!-- l. 1176 --&gt;&lt;p class=&#39;noindent&#39;&gt;The probe is a query for &lt;span class=&#39;cmtt-10&#39;&gt;3.tt&lt;/span&gt;, but truncated before the
terminating empty label of QNAME (omitting the QCLASS and
QTYPE fields), and with the &lt;span class=&#39;cmtt-10&#39;&gt;tt &lt;/span&gt;label length prefix increased from
&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox352x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;02&lt;/span&gt;&lt;/span&gt;to &lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox353x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;ff&lt;/span&gt;&lt;/span&gt;. (Per &lt;a href=&#39;#fn:minor-subtlety-implicit-null-terminator&#39;&gt;footnote 3&lt;/a&gt;, no final &lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox354x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;&lt;/span&gt; label is needed for a QNAME this short.)
As explained in &lt;a href=&#39;#sec:3b-maximizing-leaked-bytes-per-response&#39;&gt;Section III-B&lt;/a&gt;, this probe causes a
leak of 124 bytes of memory.
&lt;/p&gt;&lt;!-- l. 1189 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Experiment setup.   &lt;/span&gt;We sent Wallbleed probes from a host in a
US university to an IP address in China. The address in China
was a VPS under our control in Tencent Cloud (AS45090).
We varied the UDP source port of probes over a range of
1,000 port numbers (10001 to 11000), as prior work has
suggested that the source port number may affect DNS injection &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Bhaskar2022a&#39;&gt;22&lt;/a&gt;]&lt;/span&gt;. We sent probes at a rate of 100 packets per second
(pps) and collected 5.1 billion &lt;span class=&#39;ptmri8t-&#39;&gt;Wallbleed responses &lt;/span&gt;over two
years.
&lt;/p&gt;&lt;!-- l. 1203 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Query names.   &lt;/span&gt;The QNAME we started with, &lt;span class=&#39;cmtt-10&#39;&gt;3.tt&lt;/span&gt;, was evidently
removed from the injectors’ blocklists and stopped eliciting
injection responses on Monday, August 7, 2023 at 11:04:01
(China Standard Time, UTC+8). We changed the QNAME to
&lt;span class=&#39;cmtt-10&#39;&gt;4.tt&lt;/span&gt;, another short name from &lt;a href=&#39;#sec:3b-maximizing-leaked-bytes-per-response&#39;&gt;Section III-B&lt;/a&gt;.
&lt;/p&gt;&lt;!-- l. 1215 --&gt;&lt;p class=&#39;indent&#39;&gt;
&lt;a id=&#39;x1-21r1&#39;&gt;&lt;/a&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4a&#34;&gt;
    &lt;a id=&#34;sec:4a-wallbleed-leaks-network-traffic&#34; href=&#34;#sec:4a-wallbleed-leaks-network-traffic&#34;&gt;
        &lt;span class=&#34;titlemark&#34;&gt;A.&lt;/span&gt; Wallbleed leaks network traffic
    &lt;/a&gt;
&lt;/h3&gt;
&lt;!-- l. 1218 --&gt;&lt;p class=&#39;indent&#39;&gt;  Looking at samples of the 124-byte leaked fragments of
memory, it is immediately clear that they include &lt;span class=&#39;ptmri8t-&#39;&gt;snippets of
network traffic&lt;/span&gt;. These snippets originate, at least in part,
in packets that pass by the injection device: in &lt;a href=&#39;#sec:5-seeing-out-own-traffic&#39;&gt;Section V&lt;/a&gt; we
demonstrate recovery of packet payloads that we ourselves sent
through the GFW. But the mix of protocols is different from what
one would expect of a uniform sample of all traffic entering or
exiting China.
&lt;/p&gt;
&lt;!-- l. 1228 --&gt;&lt;p class=&#39;indent&#39;&gt;  After preliminary manual analysis of a sample of responses,
we used regular expressions to search for common or sensitive
strings. To reduce the risk of analyzing human-identifiable
information, our program outputs only the number of matches. As
shown in &lt;a href=&#34;#tbl:2-regex-matches-wallbleed-responses-2years&#34;&gt;Table II&lt;/a&gt;, we find instances of UPnP, SSDP, HTTP,
SMTP, SSH, and TLS, as well as potentially sensitive information
such as HTTP cookies and passwords.
&lt;/p&gt;

&lt;div class=&#34;table-container&#34; id=&#39;tbl:2-regex-matches-wallbleed-responses-2years&#39;&gt;
    &lt;a id=&#39;x1-15r2&#39;&gt;&lt;/a&gt;
    &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:2-regex-matches-wallbleed-responses-2years&#34;&gt;TABLE II&lt;/a&gt;: Counts of matches of regular expressions
        against 5.1 billion Wallbleed responses observed over two years.&lt;/p&gt;

    &lt;div class=&#39;tabular&#39;&gt;
        &lt;table class=&#39;tabular&#39; id=&#39;TBL-2&#39;&gt;
            &lt;colgroup id=&#39;TBL-2-1g&#39;&gt;
                &lt;col id=&#39;TBL-2-1&#39; /&gt;
                &lt;col id=&#39;TBL-2-2&#39; /&gt;
                &lt;col id=&#39;TBL-2-3&#39; /&gt;
                &lt;col id=&#39;TBL-2-4&#39; /&gt;
                &lt;col id=&#39;TBL-2-5&#39; /&gt;
            &lt;/colgroup&gt;
            &lt;tr id=&#39;TBL-2-1-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-1-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Regular Expression &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-1-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Protocol &lt;/td&gt;
                &lt;td class=&#39;td11&#39; colspan=&#39;2&#39; id=&#39;TBL-2-1-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt;
                    &lt;div class=&#39;multicolumn&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt;Count&lt;/div&gt;
                &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-1-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Rate &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-2-2-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-2-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                        class=&#39;cmtt-10&#39;&gt;ssdp:discover &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-2-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; SSDP &lt;/td&gt;
                &lt;td class=&#39;td10&#39; id=&#39;TBL-2-2-3&#39;
                    style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 184&lt;/td&gt;
                &lt;td class=&#39;td01&#39; id=&#39;TBL-2-2-4&#39;
                    style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;M &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-2-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 3.61% &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-2-3-&#39;&gt;
                &lt;td class=&#39;td
  11&#39; id=&#39;TBL-2-3-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;UPnP/IGD\xml &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-3-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; UPnP &lt;/td&gt;
                &lt;td class=&#39;td10&#39; id=&#39;TBL-2-3-3&#39;
                    style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 174&lt;/td&gt;
                &lt;td class=&#39;td01&#39; id=&#39;TBL-2-3-4&#39;
                    style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;M &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-3-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 3.41% &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-2-4-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-4-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                        class=&#39;cmtt-10&#39;&gt;(?s)[3-4]\xfftt.....-CONTROL&lt;/span&gt; &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-4-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;a
                        href=&#39;#sec:4b-the-four-digest-bytes&#39;&gt;(§IV-B)&lt;/a&gt; &lt;/td&gt;
                &lt;td class=&#39;td10&#39; id=&#39;TBL-2-4-3&#39;
                    style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 121&lt;/td&gt;
                &lt;td class=&#39;td01&#39; id=&#39;TBL-2-4-4&#39;
                    style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;M &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-4-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 2.37% &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-2-5-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-5-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                        class=&#39;cmtt-10&#39;&gt;\x45\x00
                    &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-5-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;a
                  href=&#39;#sec:4a-wallbleed-leaks-network-traffic&#39;&gt;(§IV-A)&lt;/a&gt; &lt;/td&gt;
                &lt;td class=&#39;td10&#39; id=&#39;TBL-2-5-3&#39;
                    style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 2.8&lt;/td&gt;
                &lt;td class=&#39;td01&#39; id=&#39;TBL-2-5-4&#39;
                    style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;M &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-5-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 0.05% &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-2-6-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-6-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                        class=&#39;cmtt-10&#39;&gt;uuid:WAN
                    &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-6-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; SSDP &lt;/td&gt;
                &lt;td class=&#39;td10&#39; id=&#39;TBL-2-6-3&#39;
                    style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 34&lt;/td&gt;
                &lt;td class=&#39;td01&#39; id=&#39;TBL-2-6-4&#39;
                    style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;M &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-6-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 0.67%&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-2-7-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-7-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                        class=&#39;cmtt-10&#39;&gt;Host:␣&lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-7-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; HTTP &lt;/td&gt;
                &lt;td class=&#39;td10&#39; id=&#39;TBL-2-7-3&#39;
                    style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 21&lt;/td&gt;
                &lt;td class=&#39;td01&#39; id=&#39;TBL-2-7-4&#39;
                    style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;M &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-7-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 0.41% &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-2-8-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-8-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                        class=&#39;cmtt-10&#39;&gt;(?i)Date:\s* …&lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-8-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;a
                  href=&#39;#sec:4c-how-long-bytes-remain-in-memory&#39;&gt;(§IV-C)&lt;/a&gt; &lt;/td&gt;
                &lt;td class=&#39;td10&#39; id=&#39;TBL-2-8-3&#39;
                    style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 16&lt;/td&gt;
                &lt;td class=&#39;td01&#39; id=&#39;TBL-2-8-4&#39;
                    style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;M &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-8-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 0.31% &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-2-9-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-9-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                        class=&#39;cmtt-10&#39;&gt;\x7f\x00\x00 &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-9-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;a
                  href=&#39;#sec:4d-inferring-the-gfws-internal-architecture&#39;&gt;(§IV-D)&lt;/a&gt; &lt;/td&gt;
                &lt;td class=&#39;td10&#39; id=&#39;TBL-2-9-3&#39;
                    style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 2.8&lt;/td&gt;
                &lt;td class=&#39;td01&#39; id=&#39;TBL-2-9-4&#39;
                    style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;M &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-9-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 0.05% &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-2-10-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-10-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                        class=&#39;cmtt-10&#39;&gt;Cookie:␣
                      &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-10-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; HTTP &lt;/td&gt;
                &lt;td class=&#39;td10&#39; id=&#39;TBL-2-10-3&#39;
                    style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 2.0&lt;/td&gt;
                &lt;td class=&#39;td01&#39; id=&#39;TBL-2-10-4&#39;
                    style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;M &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-10-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 0.04% &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-2-11-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-11-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                        class=&#39;cmtt-10&#39;&gt;RCPT␣TO
                      &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-11-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; SMTP &lt;/td&gt;
                &lt;td class=&#39;td10&#39; id=&#39;TBL-2-11-3&#39;
                    style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 72.5&lt;/td&gt;
                &lt;td class=&#39;td01&#39; id=&#39;TBL-2-11-4&#39;
                    style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;k &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-11-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 0.0014% &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-2-12-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-12-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                        class=&#39;cmtt-10&#39;&gt;&amp;amp;key=
                    &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-12-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; URL &lt;/td&gt;
                &lt;td class=&#39;td10&#39; id=&#39;TBL-2-12-3&#39;
                    style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 58.1&lt;/td&gt;
                &lt;td class=&#39;td01&#39; id=&#39;TBL-2-12-4&#39;
                    style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;k &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-12-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 0.0011% &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-2-13-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-13-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                        class=&#39;cmtt-10&#39;&gt;MAIL␣FROM
                      &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-13-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; SMTP &lt;/td&gt;
                &lt;td class=&#39;td10&#39; id=&#39;TBL-2-13-3&#39;
                    style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 42.4&lt;/td&gt;
                &lt;td class=&#39;td01&#39; id=&#39;TBL-2-13-4&#39;
                    style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;k &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-13-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 0.0008% &lt;/td&gt;
            &lt;tr id=&#39;TBL-2-14-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-2-14-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                      class=&#39;cmtt-10&#39;&gt;&amp;amp;password=
                    &lt;/span&gt;&lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-2-14-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; URL &lt;/td&gt;
              &lt;td class=&#39;td10&#39; id=&#39;TBL-2-14-3&#39;
                  style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 26.9&lt;/td&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-2-14-4&#39;
                  style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;k &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-2-14-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 0.0005% &lt;/td&gt;
            &lt;/tr&gt;
        &lt;/table&gt;
    &lt;/div&gt;
&lt;/div&gt;



&lt;!-- l. 1245 --&gt;&lt;p class=&#39;indent&#39;&gt;  It is remarkable that the memory contains application-layer
protocols other than DNS. Since the injector responds to DNS
queries only on UDP port 53 (&lt;a href=&#39;#sec:3d-other-details-of-injection-triggering&#39;&gt;Section III-D&lt;/a&gt;),
we might expect to see only DNS, or only UDP port 53 traffic;
but in fact we see &lt;span class=&#39;ptmri8t-&#39;&gt;a variety of protocols, including ones that
typically  run  on  different  ports  and  transport  protocols&lt;/span&gt;.
A noticeably large fraction consists of UPnP (Universal Plug and
Play) and SSDP (Simple Service Discovery Protocol). UPnP uses
HTTP—but there is more than an order of magnitude more UPnP
than other forms of HTTP. The sample response in &lt;a href=&#34;#sec:3-demonstrating-overflow&#34;&gt;Section III&lt;/a&gt; is
one such instance of UPnP. We extracted the HTTP Location
header from 166 million UPnP snippets: in every case, the host
part of the URL was a literal IP address in one of the private
ranges of RFC 1918 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:rfc1918&#39;&gt;23&lt;/a&gt;]&lt;/span&gt;. Private addresses are consistent with
UPnP and SSDP, which are normally used for service discovery in
local networks. Nonetheless, it is difficult to explain why they
appear at such a high rate in the memory of the vulnerable
injector.
&lt;/p&gt;&lt;!-- l. 1277 --&gt;&lt;p class=&#39;indent&#39;&gt;  In addition  to  application-layer  protocols,  there  are
network-layer and transport-layer headers and packets. For
instance, there are &lt;span class=&#39;ptmri8t-&#39;&gt;IPv4 headers&lt;/span&gt;. To find these, we first
looked for the two-byte pattern &lt;span class=&#39;colorbox one-byte-width cb-white-FFFFFF&#39; id=&#39;colorbox355x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;45&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-white-FFFFFF&#39; id=&#39;colorbox356x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt; that commonly begins an
IPv4 header, then (interpreting the bytes that follow as a
header) filtered for a valid IP checksum. &lt;a href=&#34;#tbl:3-common-protocol-fields-ipv-headers&#34;&gt;Table III&lt;/a&gt; shows the
distribution of the &lt;span class=&#39;cmtt-10&#39;&gt;protocol &lt;/span&gt;field in 181,834 IPv4 headers. TCP,
UDP, and ICMP are the most common, with a long tail of
43 others.



&lt;/p&gt;&lt;!-- l. 1298 --&gt;
&lt;div class=&#39;table-container&#39; id=&#39;tbl:3-common-protocol-fields-ipv-headers&#39;&gt;


    &lt;a id=&#39;x1-16r3&#39;&gt;&lt;/a&gt;
    &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:3-common-protocol-fields-ipv-headers&#34;&gt;TABLE III&lt;/a&gt;: The most common &lt;span class=&#39;cmtt-10&#39;&gt;protocol
    &lt;/span&gt;fields in IPv4 headers. Only counts of more than 10 are shown.&lt;/p&gt;


    &lt;div class=&#39;tabular&#39;&gt;
        &lt;table class=&#39;tabular&#39; id=&#39;TBL-3&#39;&gt;
          &lt;colgroup id=&#39;TBL-3-1g&#39;&gt;
              &lt;col id=&#39;TBL-3-1&#39; /&gt;
              &lt;col id=&#39;TBL-3-2&#39; /&gt;
              &lt;col id=&#39;TBL-3-3&#39; /&gt;
          &lt;/colgroup&gt;
          &lt;tr id=&#39;TBL-3-1-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-1-1&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; Number &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-1-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Protocol Name &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-1-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; Count &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-3-2-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-2-1&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 6 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-2-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; TCP &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-2-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 120,087 &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-3-3-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-3-1&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 17 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-3-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; UDP &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-3-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 59,882 &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-3-4-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-4-1&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 1 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-4-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; ICMP &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-4-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 1,735 &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-3-5-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-5-1&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 50 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-5-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; ESP &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-5-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 38 &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-3-6-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-6-1&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 0 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-6-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; IPv6 Hop-by-Hop Option
              &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-6-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 36 &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-3-7-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-7-1&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 47 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-7-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; GRE &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-7-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 12 &lt;/td&gt;
          &lt;/tr&gt;
      &lt;/table&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;!-- l. 1309 --&gt;&lt;p class=&#39;indent&#39;&gt;  There were 7,743 cases where an IP header was followed by
a TCP header and enough data to form a complete TCP
segment, having consistent length fields and valid IP and
TCP checksums. TCP headers have flags and port numbers,
from which we may heuristically infer which of the two IP
addresses in the IP header is the server, and which is the
client. To avoid analyzing human-identifiable information,
we anonymized IP addresses into two coarse categories: &lt;span class=&#39;ptmri8t-&#39;&gt;private&lt;/span&gt;
(RFC 1918) and &lt;span class=&#39;ptmri8t-&#39;&gt;public&lt;/span&gt;. We then counted the proportions of
client/server and private/public; the results are shown in &lt;a href=&#34;#tbl:4-client-server-private-public-tcp-flows&#34;&gt;Table IV&lt;/a&gt;.



&lt;/p&gt;&lt;!-- l. 1324 --&gt;
&lt;div class=&#39;table-container&#39; id=&#39;tbl:4-client-server-private-public-tcp-flows&#39;&gt;


  &lt;a id=&#39;x1-17r4&#39;&gt;&lt;/a&gt;
  &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:4-client-server-private-public-tcp-flows&#34;&gt;TABLE IV&lt;/a&gt;: Client/server and private/public flows
      inferred from 7,743 complete TCP segments.&lt;/p&gt;


  &lt;div class=&#39;tabular&#39;&gt;
      &lt;table class=&#39;tabular&#39; id=&#39;TBL-4&#39;&gt;
          &lt;colgroup id=&#39;TBL-4-1g&#39;&gt;
              &lt;col id=&#39;TBL-4-1&#39; /&gt;
              &lt;col id=&#39;TBL-4-2&#39; /&gt;
              &lt;col id=&#39;TBL-4-3&#39; /&gt;
          &lt;/colgroup&gt;
          &lt;tr id=&#39;TBL-4-1-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-1-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Client Address &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-1-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Server Address &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-1-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; Count &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-4-2-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-2-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Private &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-2-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Private &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-2-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 384 &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-4-3-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-3-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Private &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-3-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Public &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-3-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 6,276&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-4-4-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-4-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Public &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-4-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Private &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-4-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 193 &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-4-5-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-5-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Public &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-5-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Public &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-5-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 890 &lt;/td&gt;
          &lt;/tr&gt;
      &lt;/table&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;!-- l. 1333 --&gt;&lt;p class=&#39;indent&#39;&gt;  Since the DNS injectors monitor public Internet traffic,
we expected that TCP segments recovered from their memory
would have mostly public IP addresses; however only 11% of
TCP segments are public-to-public. Most of them actually involve
a private client and a public server. Because private IP addresses
are not globally routable, one might suspect that they represent
part of the GFW’s internal traffic (which would be compatible
with the observations about UPnP above). However, the
limited size of the memory leak means we can count only
fairly short TCP segments (up to 125 bytes). It is also a
possibility that the TCP segments we see were encapsulated in a
higher-level protocol like GRE, not directly routed past the
middlebox.
&lt;/p&gt;
&lt;!-- l. 1375 --&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4b&#34;&gt;
    &lt;a id=&#34;sec:4b-the-four-digest-bytes&#34; href=&#34;#sec:4b-the-four-digest-bytes&#34;&gt;
        &lt;span class=&#34;titlemark&#34;&gt;B.&lt;/span&gt; The four “digest” bytes
    &lt;/a&gt;
&lt;/h3&gt;
&lt;!-- l. 1380 --&gt;&lt;p class=&#39;indent&#39;&gt;  At the beginning of the longitudinal experiment, the first 4 bytes
of leaked data in Wallbleed responses were different from the others.
They were generally more random-looking, which was especially
apparent when a leak otherwise consisted of readable ASCII.
Dissimilar byte sequences might be attributed to partially overwritten
memory, but this was different: it was consistently the first
4 bytes,&lt;span class=&#39;footnote-mark&#39;&gt;&lt;a href=&#39;#fn:special-case-17-byte-query-digest-bytes&#39;&gt;&lt;sup class=&#39;textsuperscript&#39;&gt;4&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id=&#39;x1-26f4&#39;&gt;&lt;/a&gt;
and they did not contain fragments of network protocols as the
other bytes did. We took to calling these bytes “digest” bytes,
on the supposition that they represented a hash of the query
packet, possibly for load-balancing purposes. (This is only
a guess—we tried, but did not find a hash algorithm that
reproduced the digest bytes.) Digest bytes disappeared from
Wallbleed responses in two stages across 2022 and 2023.
&lt;/p&gt;
&lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
  &lt;ol&gt;
      &lt;li class=&#39;footnote-text&#39;&gt;
          &lt;a id=&#39;fn:special-case-17-byte-query-digest-bytes&#39;&gt;&lt;/a&gt;
          &lt;span class=&#39;footnote-mark&#39;&gt;
              &lt;sup class=&#39;textsuperscript&#39;&gt;4&lt;/sup&gt;
          &lt;/span&gt;&lt;span class=&#39;footnotes-text&#39;&gt;In the special case of a 17-byte query, including the probe used in this
            section, the digest bytes came after the initial
              &lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox299&#39;&gt;&lt;span class=&#39;cmtt-8&#39;&gt;00&lt;/span&gt;&lt;/span&gt; described in &lt;a
                  href=&#34;#fn:minor-subtlety-implicit-null-terminator&#34;&gt;footnote 3&lt;/a&gt;.&lt;/span&gt;
      &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
&lt;!-- l. 1407 --&gt;&lt;p class=&#39;indent&#39;&gt;  Digest bytes were not actually random, but were determined by
the contents of the DNS query, including its UDP 4-tuple. On
February 15, 2022 (at a time when all Wallbleed responses
had digest bytes), we sent Wallbleed probes with identical
payloads  and  source  and  destination  IP  addresses  and
ports. In all 114,717 resulting injections, the first 4 bytes
were exactly &lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox300&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;d8&lt;/span&gt;&lt;/span&gt;&lt;span
class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox301&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;fd&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
id=&#39;colorbox302&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;d0&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox303&#39;&gt;&lt;span
    class=&#39;cmtt-10&#39;&gt;41&lt;/span&gt; &lt;/span&gt;. Keeping the 4-tuple fixed and changing a
bit  in  the  payload,  however,  caused  the  digest  bytes  to
change.&lt;span class=&#39;footnote-mark&#39;&gt;&lt;a href=&#39;#fn:changing-a-payload-bit&#39;&gt;&lt;sup class=&#39;textsuperscript&#39;&gt;5&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id=&#39;x1-28f5&#39;&gt;&lt;/a&gt;
This may be compared to the injector process assignment of
&lt;a href=&#34;#sec:5a-timestamped-magic-sequence-probes&#34;&gt;Section V-A&lt;/a&gt;, which depends on the 4-tuple but not
the payload.
&lt;/p&gt;

&lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
  &lt;ol&gt;
      &lt;li class=&#39;footnote-text&#39;&gt;
          &lt;a id=&#39;fn:changing-a-payload-bit&#39;&gt;&lt;/a&gt;
          &lt;span class=&#39;footnote-mark&#39;&gt;
              &lt;sup class=&#39;textsuperscript&#39;&gt;5&lt;/sup&gt;
          &lt;/span&gt;&lt;span class=&#39;footnotes-text&#39;&gt;Changing a payload bit also changes the IP checksum, so digest bytes
            may have depended on IP and UDP headers only, or on headers and payload.&lt;/span&gt;
      &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;

&lt;!-- l. 1461 --&gt;&lt;p class=&#39;indent&#39;&gt;  We measured the prevalence of digest bytes over time
by looking for a particular string, &lt;span class=&#39;cmtt-10&#39;&gt;ACHE-CONTROL &lt;/span&gt;(part of
an HTTP Cache-Control header), that frequently appears
at the beginning of Wallbleed responses (&lt;a href=&#34;#tbl:2-regex-matches-wallbleed-responses-2years&#34;&gt;Table II&lt;/a&gt;). When
digest bytes are present, the first 4 bytes of the string are
overwritten. &lt;a href=&#34;#fig:3-wallbleed-response-rate-digest-transition&#34;&gt;Figure 3&lt;/a&gt; shows how digest bytes disappeared in two
stages over nine months. When we began measurements, all
responses had digest bytes. The first response that lacked
digest bytes was on Saturday, September 3, 2022, at 01:31
(China Standard Time, UTC+8). After that, the presence or
absence of digest bytes depended on the source port of the
probe, with roughly half of ports eliciting digest bytes at a
given point in time. The mapping of which ports caused
digest bytes changed sporadically, but remained at a 50%
fraction—we suspect this represents load balancing. After
Thursday, June 8, 2023, at 15:33 (UTC+8), digest bytes almost
completely disappeared.
&lt;a id=&#39;x1-31r3&#39;&gt;&lt;/a&gt;

&lt;div class=&#39;figure&#39;&gt;
  &lt;!-- l. 304 --&gt;
  &lt;p class=&#39;noindent&#39; id=&#39;fig:3-wallbleed-response-rate-digest-transition&#39;&gt;
      &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/mystery-5-heatmap.png&#39; /&gt; &lt;a id=&#39;x1-21r2&#39;&gt;&lt;/a&gt;
      &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:3-wallbleed-response-rate-digest-transition&#34;&gt;Fig. 3&lt;/a&gt;: The lower plot shows the rate of Wallbleed responses
        with digest bytes, averaged over all probe source ports in a
        day. Before September 3, 2022, all responses had digest bytes;
        after June 8, 2023, none did; and in between, half did and half
        did not. During the transition period, whether a given source
        port elicited digest bytes was consistent over short time spans.
        The upper plot shows the rate of digest responses by probe
        source port and day, which is always close to 0% or 100%.&lt;/p&gt;
&lt;/div&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4c&#34;&gt; &lt;a id=&#34;sec:4c-how-long-bytes-remain-in-memory&#34; href=&#34;#sec:4c-how-long-bytes-remain-in-memory&#34;&gt;&lt;span
  class=&#34;titlemark&#34;&gt;C.&lt;/span&gt; How long bytes remain in memory&lt;/a&gt;
&lt;/h3&gt;
&lt;!-- l. 1507 --&gt;&lt;p class=&#39;indent&#39;&gt;  We estimated how long bytes tend to remain in memory by
looking for naturally occurring timestamps, namely HTTP Date
headers. These strings, in the format &lt;span class=&#39;cmtt-10&#39;&gt;Date: Wed, 21 Apr 2021
00:00:00 GMT&lt;/span&gt;, indicate the time at which an HTTP response was
generated. &lt;a href=&#34;#fig:4-cdf-http-date-timestamps-relative-to-capture&#34;&gt;Figure 4&lt;/a&gt; shows the distribution of the &lt;span class=&#39;ptmri8t-&#39;&gt;age &lt;/span&gt;of
16.3 million Wallbleed responses containing complete Date
headers: the difference between when a response was received and
the timestamp encoded in its Date header. Most Date headers are
from the recent past: 75% are between 0 and 5 seconds old,
and 7% are older. About 10% are nominally almost exactly
8 hours in the future relative to the time of capture, which is
likely a result of servers wrongly reporting local time as
UTC.

&lt;!-- l. 1541 --&gt;&lt;p class=&#39;indent&#39;&gt;  In &lt;a href=&#34;#sec:5a-timestamped-magic-sequence-probes&#34;&gt;Section V-A&lt;/a&gt; we  conduct  a  similar
    memory-age experiment, using our own deliberately placed
    timestamps.
    &lt;/p&gt;&lt;!-- l. 1545 --&gt;

&lt;div class=&#39;figure&#39;&gt;
  &lt;!-- l. 373 --&gt;
  &lt;p class=&#39;noindent&#39; id=&#39;fig:4-cdf-http-date-timestamps-relative-to-capture&#39;&gt;
      &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/http-age-delta-time-cdf.png&#39; /&gt; &lt;a id=&#39;x1-23r3&#39;&gt;&lt;/a&gt;
      &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:4-cdf-http-date-timestamps-relative-to-capture&#34;&gt;Fig. 4&lt;/a&gt;: Cumulative distribution of HTTP Date timestamps
        relative to the time of capture. The upper plot has a scale
        of seconds; the lower a scale of hours. Most timestamps are
        less than 5 seconds old. Time zone errors make some appear
        to be 8 hours in the future.&lt;/p&gt;
&lt;/div&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4d&#34;&gt; &lt;a id=&#34;sec:4d-inferring-the-gfws-internal-architecture&#34; href=&#34;#sec:4d-inferring-the-gfws-internal-architecture&#34;&gt;&lt;span
  class=&#34;titlemark&#34;&gt;D.&lt;/span&gt; Inferring the GFW’s internal architecture&lt;/a&gt;
&lt;/h3&gt;
&lt;!-- l. 1548 --&gt;&lt;p class=&#39;indent&#39;&gt;  Leaked memory occasionally contained what looked like x86_64
pointers. These are 64-bit values in little-endian byte order, whose
most significant 16 bits are zero, and which lie in conventional
address ranges. On Linux, the typical address range of stack pointers
is &lt;span class=&#39;cmtt-10&#39;&gt;0x00007f0000000000&lt;/span&gt;–&lt;span class=&#39;cmtt-10&#39;&gt;0x00007fffffffffff&lt;/span&gt;, and that of code
and heap pointers is &lt;span class=&#39;cmtt-10&#39;&gt;0x0000550000000000&lt;/span&gt;–&lt;span class=&#39;cmtt-10&#39;&gt;0x000056ffffffffff&lt;/span&gt;.
&lt;/p&gt;

&lt;!-- l. 1586 --&gt;&lt;p class=&#39;indent&#39;&gt;  A typical stack from on Linux contains a stack address
followed by a code address (corresponding to a saved frame
pointer and return address respectively). We looked for these
patterns in our leaked payloads. We found 70,497 examples, and
noticed several common patterns. We created pattern templates
based off the 14 64-bit words present in each payload. For
example, a stack address (a 64-bit value in the typical Linux stack
pointer range) is replaced with the single character ‘&lt;span class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt;’. In this
way, code pointers (‘&lt;span class=&#39;cmtt-10&#39;&gt;c&lt;/span&gt;’), and common numbers including zero
(‘&lt;span class=&#39;cmtt-10&#39;&gt;0&lt;/span&gt;’), &lt;span class=&#39;cmsy-10&#39;&gt;−&lt;/span&gt;128 (‘&lt;span class=&#39;cmtt-10&#39;&gt;1&lt;/span&gt;’), 22 (‘&lt;span class=&#39;cmtt-10&#39;&gt;2&lt;/span&gt;’), and 4 (‘&lt;span class=&#39;cmtt-10&#39;&gt;4&lt;/span&gt;’) are replaced, and
remaining unlabeled words are converted to ‘&lt;span class=&#39;cmtt-10&#39;&gt;_&lt;/span&gt;’. This yields 3,559
unique patterns, the most frequently occurring of which we plot in
&lt;a href=&#34;#fig:5-when-we-see-stack-pattern.weekly&#34;&gt;Figure 5&lt;/a&gt;.
&lt;/p&gt;

&lt;div class=&#39;figure&#39;&gt;
  &lt;!-- l. 373 --&gt;
  &lt;p class=&#39;noindent&#39; id=&#39;fig:5-when-we-see-stack-pattern.weekly&#39;&gt;
      &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/when-we-see-stack-pattern.weekly.png&#39; /&gt; &lt;a id=&#39;x1-23r3&#39;&gt;&lt;/a&gt;
      &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:5-when-we-see-stack-pattern.weekly&#34;&gt;Fig. 5&lt;/a&gt;: The counts of common stack frame patterns in leaked
        memory seen weekly over time. ‘s’ and ‘c’ correspond to stack
        and code addresses respectively, and digits to specific common
        64-bit values we observed. Red vertical lines indicate when we
        observed changes in the digest-byte pattern (&lt;a href=&#34;#fig:3-wallbleed-response-rate-digest-transition&#34;&gt;Figure 3&lt;/a&gt;).&lt;/p&gt;
&lt;/div&gt;

&lt;!-- l. 1605 --&gt;&lt;p class=&#39;indent&#39;&gt;  The two red lines indicate the stages of digest byte transition
from &lt;a href=&#34;#fig:3-wallbleed-response-rate-digest-transition&#34;&gt;Figure 3&lt;/a&gt;. The first line, on September 3, 2023, coincides
with a shift to the most seen stack frame patterns; the second, on
June 8, 2023, does not show as clear a pattern change. We were
not able to draw more concrete conclusions from these changing
patterns though; they may be purely coincidental.
&lt;/p&gt;&lt;!-- l. 1612 --&gt;&lt;p class=&#39;indent&#39;&gt;  The stack frames we see are congruent with Linux stack frames
with ASLR enabled, as indicated by a given pattern seeing
randomization in a subset of bits: the least significant 12 bits are
consistent across stack/code pointers, corresponding to the
consistent offset in a 4 KB page. In some stack frames, we also
observe what appear to be glibc stack canaries &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:glibc-canary&#39;&gt;24&lt;/a&gt;]&lt;/span&gt;, indicated by
a random value whose least significant 8 bits are set to 0
preceding a stack/code address pair.
&lt;/p&gt;&lt;!-- l. 1746 --&gt;&lt;p class=&#39;indent&#39;&gt;  We also observe &lt;span class=&#39;ptmri8t-&#39;&gt;sequences of x86_64 instructions&lt;/span&gt;, such as
function prologues. We believe these to be code that the GFW
sees on the network, not the code of the GFW itself, for two
reasons. First, it is implausible that instructions would leak in
a stack-based memory disclosure, as Linux clears pages
before allocation and does not allow executable code in
writable pages. Second, we also observe x86_64 code in
traffic seen on a university network tap, which appears to be
Microsoft code updates that send (signed) plaintext binaries &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:phaedrus_windows_update&#39;&gt;25&lt;/a&gt;]&lt;/span&gt;.
&lt;a id=&#39;x1-35r5&#39;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;!-- l. 1758 --&gt;
&lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;5&#34;&gt;&lt;a id=&#34;sec:5-seeing-out-own-traffic&#34;
  href=&#34;#sec:5-seeing-out-own-traffic&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;V.&lt;/span&gt; Seeing our own traffic&lt;/a&gt;
&lt;/h2&gt;
&lt;!-- l. 1761 --&gt;&lt;p class=&#39;indent&#39;&gt;  In &lt;a href=&#34;#sec:4a-wallbleed-leaks-network-traffic&#34;&gt;Section IV-A&lt;/a&gt; we saw evidence that
Wallbleed leaked at least some network traffic, even non-DNS
traffic, that passed through an injection device. Here we confirm
that fact with a dedicated experiment. We sent our own tagged
traffic across the border into China, and were later able to recover
a fraction of it in Wallbleed responses.
&lt;/p&gt;&lt;!-- l. 1768 --&gt;&lt;p class=&#39;indent&#39;&gt;  Tagged traffic was recoverable only within a few seconds of
its being sent. The recovery rate was low, and varied by
time of day. Injection devices are internally divided into
multiple independent processes, which we reveal using a
previously undocumented side channel in the ordering of
injected false IP addresses. Each process has its own memory:
recovery of past traffic is possible only when a Wallbleed probehappens to be assigned to the same process. The assignment
 of packets to processes is deterministic, and depends on
 (at  least)  the  source  port  of  the  probe.  Probes  sent  over
 IPv6 may recover traffic originally sent over IPv4, and vice
 versa.
 &lt;/p&gt;&lt;!-- l. 1780 --&gt;&lt;p class=&#39;indent&#39;&gt;
 &lt;a id=&#39;x1-36r1&#39;&gt;&lt;/a&gt;
 &lt;/p&gt;
 &lt;h3 class=&#34;subsectionHead&#34; id=&#34;5a&#34;&gt; &lt;a id=&#34;sec:5a-timestamped-magic-sequence-probes&#34; href=&#34;#sec:5a-timestamped-magic-sequence-probes&#34;&gt;&lt;span
  class=&#34;titlemark&#34;&gt;A.&lt;/span&gt; Timestamped magic sequence probes&lt;/a&gt;
&lt;/h3&gt;
&lt;!-- l. 1783 --&gt;&lt;p class=&#39;indent&#39;&gt;  We developed a new probe for this experiment. The &lt;span class=&#39;ptmri8t-&#39;&gt;magic
 sequence probe &lt;/span&gt;is a UDP packet, sent to port 53, whose 40-byte
 payload is two copies of the 20-byte sequence:
 &lt;/p&gt;&lt;!-- l. 1791 --&gt;
 &lt;div class=&#34;px-4&#34;&gt;
  &lt;p class=&#39;indent&#39; id=&#39;payload-sequence&#39;&gt;
    &lt;span class=&#39;colorbox d-inline-flex justify-content-center one-byte-width&#39; id=&#39;colorbox318&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;G&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox d-inline-flex justify-content-center one-byte-width&#39; id=&#39;colorbox319&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;F&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox d-inline-flex justify-content-center one-byte-width&#39; id=&#39;colorbox320&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;W&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox d-inline-flex justify-content-center one-byte-width&#39; id=&#39;colorbox321&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;B&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox d-inline-flex justify-content-center one-byte-width&#39; id=&#39;colorbox322&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;l&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox d-inline-flex justify-content-center one-byte-width&#39; id=&#39;colorbox323&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox d-inline-flex justify-content-center one-byte-width&#39; id=&#39;colorbox324&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox d-inline-flex justify-content-center one-byte-width&#39; id=&#39;colorbox325&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;d&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox d-inline-flex justify-content-center two-byte-width&#39; id=&#39;colorbox326&#39;&gt;&lt;span class=&#39;cmtt-10 formula&#39;&gt;exp&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox d-inline-flex justify-content-center four-byte-width&#39; id=&#39;colorbox327&#39;&gt;&lt;span class=&#39;cmtt-10 formula&#39;&gt;pkt&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox d-inline-flex justify-content-center two-byte-width&#39; id=&#39;colorbox328&#39;&gt;&lt;span class=&#39;cmtt-10 formula&#39;&gt;rep&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox d-inline-flex justify-content-center four-byte-width&#39; id=&#39;colorbox329&#39;&gt;&lt;span class=&#39;cmtt-10 formula&#39;&gt;timestamp&lt;/span&gt;
    &lt;/span&gt;      
  &lt;/p&gt;
&lt;/div&gt;
&lt;!-- l. 1801 --&gt;&lt;p class=&#39;noindent&#39;&gt;where &lt;code class=&#34;formula&#34;&gt;exp&lt;/code&gt; is an experiment ID, &lt;code class=&#34;formula&#34;&gt;pkt&lt;/code&gt; is an incrementing
 packet ID, &lt;code class=&#34;formula&#34;&gt;rep&lt;/code&gt; is 0 for the first copy of the sequence
 in  a  probe  or  1  for  the  second,  and  &lt;code class=&#34;formula&#34;&gt;timestamp&lt;/code&gt; is  an
 epoch timestamp. The fixed string “GFWBleed” and unique
 IDs make it easy to identify magic sequences in Wallbleed
 responses. The timestamp lets us estimate how long a recovered
 magic sequence was kept in memory. While magic sequence
 probes use UDP and destination port 53, they are not DNS in
 structure.
 &lt;/p&gt;&lt;!-- l. 1815 --&gt;&lt;p class=&#39;indent&#39;&gt;  At the same time as sending magic sequence probes, we sent
 Wallbleed probes, as in &lt;a href=&#39;#sec:4-what-information-is-leaked&#39;&gt;Section IV&lt;/a&gt;, to recover the sequences we
 were trying to place in memory. We sent the probes from a US
 university to a destination in China between August 12 and
 September 8, 2023 (&lt;a href=&#34;#tbl:1-experiment-timeline-vantage-points&#34;&gt;Table I&lt;/a&gt;). The destination host was different
 from the one used in &lt;a href=&#39;#sec:4-what-information-is-leaked&#39;&gt;Section IV&lt;/a&gt; to avoid potential interference
 between the two experiments. We sent magic sequence probes at
 an average rate of 30 pps, from a single source port 10000.
 We sent Wallbleed probes at 100 pps from 199 source ports in
 the range 20001–20199. The choice to use a single source port for
 magic sequence probes would turn out to be significant, as it
 helped reveal the existence of discrete injector processes.
 We collected 3,521 Wallbleed responses containing magic
 sequences.
 &lt;/p&gt;

&lt;!-- l. 1854 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Recovered traffic is usually less than 1 second old.   &lt;/span&gt;&lt;a href=&#34;#fig:6-cdf-timestamp-magic-sequence-difference&#34;&gt;Figure 6&lt;/a&gt;
shows the difference between the timestamp encoded in
a magic sequence probe and when it was recovered in a
Wallbleed response. As with the HTTP Date timestamps of
&lt;a href=&#34;#sec:4c-how-long-bytes-remain-in-memory&#34;&gt;Section IV-C&lt;/a&gt;, traffic was short-lived in the
injector’s memory: 99% of recovered magic sequences were less
than 1.5 s old. The uniform slope between &lt;span class=&#39;cmsy-10&#39;&gt;−&lt;/span&gt;1 s and 0 s is an
artifact of the one-second granularity of &lt;code class=&#34;formula&#34;&gt;timestamp&lt;/code&gt;. Unlike the
HTTP Date experiment, here there is no possibility of time zone
confusion.
&lt;/p&gt;

&lt;div class=&#39;figure&#39;&gt;
  &lt;!-- l. 91 --&gt;
  &lt;p class=&#39;noindent&#39; id=&#39;fig:6-cdf-timestamp-magic-sequence-difference&#39;&gt;
      &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/cdf-delta-time-exp-51.png&#39; /&gt; &lt;a id=&#39;x1-27r4&#39;&gt;&lt;/a&gt;
      &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:6-cdf-timestamp-magic-sequence-difference&#34;&gt;Fig. 6&lt;/a&gt;: Cumulative distribution of the difference between the timestamp stored in a magic sequence and when we recovered it in a Wallbleed response. The graph shows the distribution of 3,521 Wallbleed responses with magic sequences, collected between August 12 and September 8, 2023. The range of time differences is −10.19 s to −0.23 s.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- l. 1915 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;The  likelihood  to  recover  traffic  varies  in  a  daily  cycle.&lt;/span&gt;
&lt;a href=&#34;#fig:7-magic-sequence-likelihood-time-of-day&#34;&gt;Figure 7&lt;/a&gt; shows the number of Wallbleed responses containing
magic sequences at each hour of the day, over 28 days. Though
we sent Wallbleed probes and magic sequence probes at a
constant rate, the number of probes recovered per hour varies
in a 24-hour cycle, with a peak between 04:00 and 05:00
and a trough between 22:00 and 23:00 (China Standard
Time, UTC+8). This is consistent with the &lt;span class=&#39;ptmri8t-&#39;&gt;inverse &lt;/span&gt;diurnal
pattern of Internet traffic volume in China: the more traffic the
injector handles, the less likely we are to observe our own
packets.
&lt;/p&gt;
&lt;div class=&#39;figure&#39;&gt;
  &lt;!-- l. 115 --&gt;
  &lt;p class=&#39;noindent&#39; id=&#39;fig:7-magic-sequence-likelihood-time-of-day&#39;&gt;
      &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/frequency-across-day-exp-51.png&#39; /&gt; &lt;a id=&#39;x1-28r5&#39;&gt;&lt;/a&gt;
      &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:7-magic-sequence-likelihood-time-of-day&#34;&gt;Fig. 7&lt;/a&gt;: The likelihood of observing a magic sequence depends
        on the time of day. The faint background points represent the
        number of Wallbleed responses containing a magic sequence
        received during every hour of the day, over four weeks starting
        on August 14, 2023. The dark foreground points are averages
        of corresponding hours across all 28 days.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- l. 1926 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Packets  have  consistent  alignment  in  memory.   &lt;/span&gt;When we
recover a magic sequence, we do not get all 40 bytes in full.
Almost always, the beginning is overwritten by the bytes of
the Wallbleed probe that triggered the response. With the
Wallbleed probe from &lt;a href=&#39;#sec:4-what-information-is-leaked&#39;&gt;Section IV&lt;/a&gt;, the first 18 bytes are
overwritten and the last 22 bytes are intact. It is likely that the
injection device aligns the first byte of packets at consistent
locations in memory. Other observations support this hypothesis:
in &lt;a href=&#34;#sec:4b-the-four-digest-bytes&#34;&gt;Section IV-B&lt;/a&gt;, we took advantage of the
alignment of a common &lt;span class=&#39;obeylines-h&#39;&gt;&lt;code class=&#39;verb&#39;&gt;ACHE-CONTROL&lt;/code&gt;&lt;/span&gt; string to test for the
presence of digest bytes.
&lt;/p&gt;&lt;!-- l. 1959 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Only a subset of source ports &lt;/span&gt;&lt;span class=&#39;ptmbi8t-&#39;&gt;ever &lt;/span&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;saw a magic sequence.&lt;/span&gt;
We sent magic sequence probes from a single source port
(10000). Though we sent Wallbleed probes from 199 different
source ports (20001–20199), only 64 source ports ever recovered
a magic sequence. (Those that did recovered 55 magic sequences
on average.) Further investigation led us to believe that each DNS
injection device consists of &lt;span class=&#39;ptmri8t-&#39;&gt;multiple independent processes&lt;/span&gt;, each
with its own memory buffer, and that packets are deterministically
assigned to a process according to features that include the source
port. (But not the payload, because magic sequence probes had
variable payloads. This contrasts with the digest bytes of
&lt;a href=&#34;#sec:4b-the-four-digest-bytes&#34;&gt;Section IV-B&lt;/a&gt;, which did depend on the payload.)
Only when a Wallbleed probe is assigned to the same process as
the original magic sequence probe does it have a chance of
recovering it. (This could explain the horizontal bands in
&lt;a href=&#34;#fig:3-wallbleed-response-rate-digest-transition&#34;&gt;Figure 3&lt;/a&gt;: for a time, half of processes used digest bytes and half
did not.) In the next subsection, we show more evidence for the
multiple-process hypothesis, in the form of a previously
unknown side channel in the fake IP addresses of injected DNS
responses.
&lt;a id=&#39;x1-40r2&#39;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;!-- l. 2006 --&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;5b&#34;&gt; &lt;a id=&#34;sec:5b-the-ordering-of-phony-ip-addresses&#34; href=&#34;#sec:5b-the-ordering-of-phony-ip-addresses&#34;&gt;&lt;span
  class=&#34;titlemark&#34;&gt;B.&lt;/span&gt; The ordering of phony IP addresses&lt;/a&gt;
&lt;/h3&gt;
&lt;!-- l. 2009 --&gt;&lt;p class=&#39;indent&#39;&gt;  Previous research has shown that the GFW’s DNS injection
draws fake response IP addresses from a fixed pool—and
that different subsets of the pool are used, depending on
what name is queried &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;8&lt;/a&gt; §3.2]&lt;/span&gt;, &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;9&lt;/a&gt; §5.3]&lt;/span&gt;. What has not
been  appreciated,  before  now,  is that  the  pools  are  also
&lt;span class=&#39;ptmri8t-&#39;&gt;ordered  &lt;/span&gt;and  &lt;span class=&#39;ptmri8t-&#39;&gt;cyclic&lt;/span&gt;.  When  probed  at  a  high  enough  rate
(around  100  queries  per  second  or  more—much  greater
than an injector’s natural injection rate), using a consistent     query name and source/destination IP address and port tuple,
  injected responses repeatedly cycle through IP addresses in
  the same order (with occasional gaps where the injector
  responded to queries from other users). By repeated probing, it is
  possible to get multiple copies of the sequence, reconcile
  the gaps, and recover the complete ordered list of false IP
  addresses for a given query name. A sample ordered list
  of 592 IP addresses for the query name &lt;span class=&#39;cmtt-10&#39;&gt;4.tt &lt;/span&gt;appears in
  &lt;a href=&#39;#app:a-an-example-ordered-pool-of-fake-ip-address&#39;&gt;Appendix A&lt;/a&gt;.
  &lt;/p&gt;&lt;!-- l. 2032 --&gt;&lt;p class=&#39;indent&#39;&gt;    Choosing any IP address to be “first” in the cycle, we may
  build a reverse mapping from an IP address to its &lt;span class=&#39;ptmri8t-&#39;&gt;index&lt;/span&gt;.
  Independent of the Wallbleed leak, every DNS response reveals
  the injector’s internal index variable at the time of injection.
  &lt;a href=&#39;#fig:8-vulnerable-injectors-fake-ip-pool&#39;&gt;Figure 8&lt;/a&gt; shows the index of the IP address contained in
  Wallbleed responses over a 45-second interval, when probed at a
  high rate from 199 source ports. We see not one, but three
  roughly linear sequences. They are cyclic: when one reaches the
  top, it wraps around to the bottom. The same source port
  consistently maps to the same sequence. To us, it looks like
  hash-based load balancing over multiple processes within the
  injector device. The input to the load balancing assignment
  includes a packet’s UDP 4-tuple, but not its data payload (because
  the magic sequence probes’ payloads are variable). Keeping the
  rest of the 4-tuple fixed, source ports fall into a handful of
  equivalence classes according to which injector process they are
  assigned to. This explains why only 64 of 199 source ports
  recovered magic sequences: those are the ones that happened to
  be assigned to the same process as the magic sequence probes
  with source port 10000.
  &lt;/p&gt;
  &lt;!-- l. 1883 --&gt;

  &lt;div class=&#39;noindent&#39; id=&#39;fig:8-vulnerable-injectors-fake-ip-pool&#39;&gt;
    &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/side-channel-s1692770000-i45.png&#39; style=&#34;width: 100%;&#34;/&gt; &lt;a id=&#39;x1-30r6&#39;&gt;&lt;/a&gt;
    &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:8-vulnerable-injectors-fake-ip-pool&#34;&gt;Fig. 8&lt;/a&gt;: A 45-second  sample  of  Wallbleed  responses  received  on  August 23,  2023,  the  result  of  probing  at  a  high  rate  from
      199  different  source  ports.  The  IP  address  in  each  response  has  been  reverse-mapped  to  its  index  (from  1  to 592)  in  the
      ordered list of &lt;a href=&#39;#app:a-an-example-ordered-pool-of-fake-ip-address&#39;&gt;Appendix A&lt;/a&gt;. The indices are not random, but form three distinct cyclic sequences—each source port consistently
      mapping  to  one  of  the  three.  Each  sequence  represents  a  process  within  the  DNS  injector,  with  its  own  address  list  iterator
      and  memory  allocation.  Only  64  of  199  source  ports  mapped  to  the  right  process  to  recover  the  magic  sequence  probes  of
      &lt;a href=&#34;#sec:5a-timestamped-magic-sequence-probes&#34;&gt;Section V-A&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;

  &lt;!-- l. 2061 --&gt;&lt;p class=&#39;indent&#39;&gt;
  &lt;a id=&#39;x1-41r3&#39;&gt;&lt;/a&gt;
  &lt;/p&gt;
  &lt;!-- l. 2061 --&gt;
  &lt;h3 class=&#34;subsectionHead&#34; id=&#34;5c&#34;&gt; &lt;a id=&#34;sec:5c-ipv4-and-ipv6&#34; href=&#34;#sec:5c-ipv4-and-ipv6&#34;&gt;&lt;span
    class=&#34;titlemark&#34;&gt;C.&lt;/span&gt; IPv4 and IPv6&lt;/a&gt;
  &lt;/h3&gt;
  &lt;!-- l. 2064 --&gt;&lt;p class=&#39;indent&#39;&gt;    Wallbleed provides a way to tell if IPv4 and IPv6 packets are
  processed on the same GFW nodes or different ones. If we send a
  unique payload over IPv4 past the GFW, and see parts of that
  payload in leaked memory from IPv6-based Wallbleed queries,
  then we know that there are nodes that process both IPv4 and
  IPv6 in the same memory.
  &lt;/p&gt;&lt;!-- l. 2071 --&gt;&lt;p class=&#39;indent&#39;&gt;    We assembled a set of IPv6 prefixes that geolocate to
  China from MaxMind’s GeoLite2 country code database &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:MaxMind&#39;&gt;26&lt;/a&gt;]&lt;/span&gt;
  (downloaded March 12, 2024), excluding prefixes that were
  not routed, based on RouteViews BGP data (downloaded
  March 13, 2024). We sent a Wallbleed v2 probe to 8 random
  addresses in each IPv6 prefix. If at least 6 responded with a
  Wallbleed leak, we kept the prefix. We sampled these 610
  IPv6 prefixes to obtain 133 k random IPv6 addresses that
  have a high likelihood of passing a GFW node. For IPv4
  addresses, we randomly sampled 126 k IPv4 addresses that
  responded to an IPv4-wide ZMap scan, conducted March 6,
  2024.
  &lt;/p&gt;&lt;!-- l. 2086 --&gt;&lt;p class=&#39;indent&#39;&gt;    To each IPv4 and IPv6 address, we sent a &lt;span class=&#39;ptmri8t-&#39;&gt;needle&lt;/span&gt;: a UDP
  port 53 packet with a 900-byte payload consisting of a repeated
  sequence of an 8-byte string, 2-byte experiment ID, and 4-byte
  index that identified which IP address we sent the needle to. In


parallel, we sent Wallbleed v2 probes to each address at a speed
of 50 packets per second, and collected the responses to see if any
contained previously sent needles. We repeated this process five
times over 80 minutes.
&lt;/p&gt;&lt;!-- l. 2106 --&gt;&lt;p class=&#39;indent&#39;&gt;  There  were  70  instances  of  one  address  receiving  a
Wallbleed-leaked payload containing a needle originally sent to a
different address. Of these, 12 leaked from an IPv4 needle to an
IPv4-probed address, 47 leaked IPv6-to-IPv6, 8 IPv4-to-IPv6, and
3 IPv6-to-IPv4. The presence of IPv4-to-IPv6 and IPv6-to-IPv4
leaks demonstrates that Wallbleed-vulnerable DNS injectors
process both IPv4 and IPv6 traffic in the same memory
space.
&lt;/p&gt;&lt;!-- l. 2114 --&gt;&lt;p class=&#39;indent&#39;&gt;
&lt;a id=&#39;x1-42r6&#39;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;!-- l. 2114 --&gt;
&lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;6&#34;&gt;&lt;a id=&#34;sec:6-ip-addresses-affected-by-wallbleed&#34;
  href=&#34;#sec:6-ip-addresses-affected-by-wallbleed&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;VI.&lt;/span&gt; IP addresses affected by Wallbleed&lt;/a&gt;
&lt;/h2&gt;
&lt;!-- l. 2117 --&gt;&lt;p class=&#39;indent&#39;&gt;  Wallbleed-prone DNS injectors formed part of the Great
Firewall of China. Did these injectors affect every part of China,
or anywhere outside China? How many IP addresses might have
had their traffic pass through a vulnerable injector, and thus
potentially be leaked? We did IPv4-wide scans from the outside
of China to answer these questions. Both Wallbleed v1 and v2
affected IP addresses everywhere in China, consistent with the
hypothesis of deployment of DNS injection at the network border.
In many cases, even probes sent from the US to a place outside
China got Wallbleed injections, because of network paths that
transit the border.
&lt;/p&gt;&lt;!-- l. 2132 --&gt;&lt;p class=&#39;indent&#39;&gt;
&lt;a id=&#39;x1-43r1&#39;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;!-- l. 2132 --&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;6a&#34;&gt; &lt;a id=&#34;sec:6a-ipv4-wide-scan&#34; href=&#34;#sec:6a-ipv4-wide-scan&#34;&gt;&lt;span
  class=&#34;titlemark&#34;&gt;A.&lt;/span&gt; IPv4-wide scan&lt;/a&gt;
&lt;/h3&gt;
&lt;!-- l. 2135 --&gt;&lt;p class=&#39;indent&#39;&gt;  We used ZMap &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:zmap&#39;&gt;27&lt;/a&gt;]&lt;/span&gt; to scan the public IPv4 address space
from a US university. To discover IP addresses affected by
Wallbleed v1, we sent this payload to UDP port 53:
&lt;div class=&#34;px-4&#34;&gt;
&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox330&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
id=&#39;colorbox331&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0120&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox332&#39;&gt;&lt;span
    class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox333&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox334&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
id=&#39;colorbox335&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox336&#39;&gt;&lt;span
    class=&#39;cmtt-10&#39;&gt;01&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox337&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox338&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;10&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
id=&#39;colorbox339&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;t&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox340&#39;&gt; &lt;span
    class=&#39;cmtt-10&#39;&gt;t&lt;/span&gt; &lt;/span&gt;
&lt;/div&gt;
    &lt;!-- l. 2152 --&gt;&lt;p class=&#39;noindent&#39;&gt;The payload is designed to elicit overflow from Wallbleed
injectors, with only a small amount (14 bytes) of overflow to
confirm the vulnerability. As is explained in &lt;a href=&#39;#fn:minor-subtlety-implicit-null-terminator&#39;&gt;footnote 3&lt;/a&gt;, this very
short QNAME does not require a trailing &lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox385&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;&lt;/span&gt; to be effective.
We sent packets at a rate of 250 Mbps, and the scan took
three hours.
&lt;/p&gt;&lt;!-- l. 2164 --&gt;&lt;p class=&#39;indent&#39;&gt;  We chose the name &lt;span class=&#39;cmtt-10&#39;&gt;4.tt &lt;/span&gt;because it is unlikely to be on the
DNS blocklists of countries other than China. As late as
November 2020, &lt;span class=&#39;cmtt-10&#39;&gt;4.tt &lt;/span&gt;was a Chinese-language gambling
site.&lt;span class=&#39;footnote-mark&#39;&gt;&lt;a href=&#39;#fn:6.tt&#39;&gt;&lt;sup class=&#39;textsuperscript&#39;&gt;6&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id=&#39;x1-44f6&#39;&gt;&lt;/a&gt;
(Gambling is one of the topics blocked by the Great Firewall &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:cngov_decree_292&#39;&gt;28&lt;/a&gt; Art. 15]&lt;/span&gt;, &lt;span class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;9&lt;/a&gt; §4.2]&lt;/span&gt;.) The name no longer resolves to an
IP address, and has not since at least July 2023. Using a
China-focused and defunct name in our scans reduces the chance
of triggering DNS injectors in other countries.

&lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
  &lt;ol&gt;
      &lt;li class=&#39;footnote-text&#39;&gt;
          &lt;a id=&#39;fn:6.tt&#39;&gt;&lt;/a&gt;
          &lt;span class=&#39;footnote-mark&#39;&gt;
              &lt;sup class=&#39;textsuperscript&#39;&gt;6&lt;/sup&gt;
          &lt;/span&gt;&lt;span class=&#39;footnotes-text&#39;&gt;&lt;a
                  href=&#39;https://web.archive.org/web/2020*/http://4.tt/&#39;&gt;https://web.archive.org/web/2020*/http://4.tt/&lt;/a&gt;&lt;/span&gt;
      &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;

&lt;!-- l. 2183 --&gt;&lt;p class=&#39;indent&#39;&gt;  To discover IP addresses affected by Wallbleed v2, we sent the
following payload to UDP port 53:
&lt;div class=&#34;px-4&#34;&gt;
&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox342&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
id=&#39;colorbox343&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0100&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox344&#39;&gt;&lt;span
    class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox345&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox346&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width two-byte-width&#39;
id=&#39;colorbox347&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox348&#39;&gt;&lt;span
    class=&#39;cmtt-10&#39;&gt;02&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox349&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;t&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox350&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
id=&#39;colorbox351&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;02&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox352&#39;&gt; &lt;span
    class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox353&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox354&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;ff&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
id=&#39;colorbox355&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox356&#39;&gt;&lt;span
    class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;
&lt;/div&gt;
&lt;!-- l. 2201 --&gt;&lt;p class=&#39;indent&#39;&gt;  As introduced in &lt;a href=&#39;#sec:3c-Incomplete-patch-wallbleed-v2&#39;&gt;Section III-C&lt;/a&gt;, &lt;span class=&#39;cmtt-10&#39;&gt;te.rs &lt;/span&gt;was the
  shortest effective QNAME for Wallbleed v2, and the label
  length prefix had to extend past a constant threshold in the
  parser.&lt;span class=&#39;footnote-mark&#39;&gt;&lt;a href=&#39;#fn:wallbleed-v2-probes-overflow-limitation&#39;&gt;&lt;sup class=&#39;textsuperscript&#39;&gt;7&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id=&#39;x1-46f7&#39;&gt;&lt;/a&gt;
   &lt;/p&gt;&lt;!-- l. 2212 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Limitations.   &lt;/span&gt;We ran the scans just three times: on June 25,
  2023 and August 23, 2023 for Wallbleed v1, and on March 6,
  2024 for Wallbleed v2. We scanned from one host in the US:
  other locations with different network paths to China might find
  different results. The results of this snapshot study reflect routing
  patterns at the time of the scan, and we cannot say how they may
  change over time. Similar injector middleboxes—with or without
  Wallbleed-like vulnerabilities—may exist in other countries,
  but our scans would not have found them, as we used a
  China-specific blocked domain.
  &lt;a id=&#39;x1-48r2&#39;&gt;&lt;/a&gt;
  &lt;/p&gt;
  &lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
    &lt;ol&gt;
        &lt;li class=&#39;footnote-text&#39;&gt;
            &lt;a id=&#39;fn:wallbleed-v2-probes-overflow-limitation&#39;&gt;&lt;/a&gt;
            &lt;span class=&#39;footnote-mark&#39;&gt;
                &lt;sup class=&#39;textsuperscript&#39;&gt;7&lt;/sup&gt;
            &lt;/span&gt;&lt;span class=&#39;footnotes-text&#39;&gt;We failed to limit the amount of overflow with Wallbleed v2 probes as we
              did with Wallbleed v1, which we might have done by adding a prefix to the
              QNAME to bring its length close to the injectors’ maximum length threshold.&lt;/span&gt;
        &lt;/li&gt;
    &lt;/ol&gt;
&lt;/div&gt;

  &lt;!-- l. 2229 --&gt;
  &lt;h3 class=&#34;subsectionHead&#34; id=&#34;6b&#34;&gt; &lt;a id=&#34;sec:6b-analysis-of-wallbleed-responses&#34; href=&#34;#sec:6b-analysis-of-wallbleed-responses&#34;&gt;&lt;span
    class=&#34;titlemark&#34;&gt;B.&lt;/span&gt; Analysis of Wallbleed responses&lt;/a&gt;
  &lt;/h3&gt;
  &lt;!-- l. 2238 --&gt;&lt;p class=&#39;indent&#39;&gt;    Unless  stated  otherwise,  the  analysis  in  this  section
  is  based  on  the  scan  of  August 23,  2023.  The  results
  of  the  June 25,  2023  scan  for  Wallbleed v1  and  the
  March 6, 2024 scan for Wallbleed v2 were qualitatively
  similar.&lt;span class=&#39;footnote-mark&#39;&gt;&lt;a href=&#39;#fn:wallbleed-v1-v2-subnet-responsiveness&#39;&gt;&lt;sup class=&#39;textsuperscript&#39;&gt;8&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id=&#39;x1-49f8&#39;&gt;&lt;/a&gt;
   The scan elicited 248.3 million responses from 245.4 million
  distinct IP addresses. 2.17 million IP addresses had more than one
  response, as many as 20,270 in one case, which may have been
  the result of routing loops &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Bock2021b&#39;&gt;29&lt;/a&gt;, &lt;a href=&#39;#cite:Alaraj2023a&#39;&gt;30&lt;/a&gt;]&lt;/span&gt;.
  &lt;/p&gt;
  &lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
    &lt;ol&gt;
        &lt;li class=&#39;footnote-text&#39;&gt;
            &lt;a id=&#39;fn:wallbleed-v1-v2-subnet-responsiveness&#39;&gt;&lt;/a&gt;
            &lt;span class=&#39;footnote-mark&#39;&gt;
                &lt;sup class=&#39;textsuperscript&#39;&gt;8&lt;/sup&gt;
            &lt;/span&gt;&lt;span class=&#39;footnotes-text&#39;&gt;We failed to limit the amount of overflow with Wallbleed v2 probes as we
              did with Wallbleed v1, which we might have done by adding a prefix to the
              QNAME to bring its length close to the injectors’ maximum length threshold.&lt;/span&gt;
        &lt;/li&gt;
    &lt;/ol&gt;
&lt;/div&gt;
  &lt;!-- l. 2285 --&gt;&lt;p class=&#39;indent&#39;&gt;    We used a two-step filter to separate Wallbleed injections from
  other responses. First, we filtered for responses whose answer
  section contained a false IP address known to be used by
  Wallbleed injectors. To be precise, we kept responses that ended
  in a resource record of the form &lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox357&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;c00c&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox358&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox359&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox four-byte-width&#39; id=&#39;colorbox360&#39;&gt; &lt;span class=&#39;cmti-10&#39;&gt;TTL&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox361&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0004&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox362&#39;&gt; &lt;span class=&#39;cmmi-10&#39;&gt;a&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox363&#39;&gt; &lt;span class=&#39;cmmi-10&#39;&gt;b&lt;/span&gt;
 &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox364&#39;&gt; &lt;span class=&#39;cmmi-10&#39;&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox365&#39;&gt; &lt;span class=&#39;cmmi-10&#39;&gt;d&lt;/span&gt;
&lt;/span&gt; (type A), or &lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox366&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;c00c&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox367&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;001c&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox368&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox four-byte-width&#39; id=&#39;colorbox369&#39;&gt; &lt;span class=&#39;cmti-10&#39;&gt;TTL&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox370&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0010&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox371&#39;&gt; &lt;span class=&#39;cmmi-10&#39;&gt;a&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox372&#39;&gt; &lt;span class=&#39;cmmi-10&#39;&gt;b&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox373&#39;&gt; &lt;span class=&#39;cmmi-10&#39;&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox374&#39;&gt; &lt;span class=&#39;cmmi-10&#39;&gt;d&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox375&#39;&gt; &lt;span class=&#39;cmmi-10&#39;&gt;e&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox376&#39;&gt; &lt;span class=&#39;cmmi-10&#39;&gt;f&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox377&#39;&gt; &lt;span class=&#39;cmmi-10&#39;&gt;g&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox378&#39;&gt; &lt;span class=&#39;cmmi-10&#39;&gt;h&lt;/span&gt;
&lt;/span&gt; (type AAAA),
  where &lt;span class=&#39;cmmi-10&#39;&gt;a&lt;/span&gt;.&lt;span class=&#39;cmmi-10&#39;&gt;b&lt;/span&gt;.&lt;span class=&#39;cmmi-10&#39;&gt;c&lt;/span&gt;.&lt;span class=&#39;cmmi-10&#39;&gt;d &lt;/span&gt;or &lt;span class=&#39;cmmi-10&#39;&gt;a&lt;/span&gt;:&lt;span class=&#39;cmmi-10&#39;&gt;b&lt;/span&gt;:&lt;span class=&#39;cmmi-10&#39;&gt;c&lt;/span&gt;:&lt;span class=&#39;cmmi-10&#39;&gt;d&lt;/span&gt;:&lt;span class=&#39;cmmi-10&#39;&gt;e&lt;/span&gt;:&lt;span class=&#39;cmmi-10&#39;&gt;f&lt;/span&gt;:&lt;span class=&#39;cmmi-10&#39;&gt;g&lt;/span&gt;:&lt;span class=&#39;cmmi-10&#39;&gt;h &lt;/span&gt;is one of the IP addresses in
  &lt;a href=&#39;#app:a-an-example-ordered-pool-of-fake-ip-address&#39;&gt;Appendix A&lt;/a&gt;. (Both type A and type AAAA responses are
  possible, though the probe did not specify a QTYPE.) Next,
  we filtered for responses beginning with the byte pattern
  &lt;span
        class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox379&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
        id=&#39;colorbox380&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;8180&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox381&#39;&gt;&lt;span
            class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox382&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox383&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
        id=&#39;colorbox384&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox385&#39;&gt;&lt;span
            class=&#39;cmtt-10&#39;&gt;01&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox386&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;4&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox387&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;10&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox388&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;t&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox389&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;t&lt;/span&gt; &lt;/span&gt;; that is, a response for the QNAME and ID field of the
  probe, and flags equal to &lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox434x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;8180&lt;/span&gt;&lt;/span&gt;, as is characteristic of the affected
  injectors.
  &lt;/p&gt;&lt;!-- l. 2332 --&gt;&lt;p class=&#39;indent&#39;&gt;    After filtering, there remained 244,911,941 responses (98.6% of
  all responses) from 242,442,549 distinct IP addresses that were
  definite Wallbleed injections.   &lt;a href=&#39;#tbl:5-udp-payload-length-answer-rr-wallbleed-responses-ipv-scan&#39;&gt;Table V&lt;/a&gt; shows the distribution
  of UDP payload lengths and DNS answer resource record
  types.


&lt;/p&gt;&lt;!-- l. 2339 --&gt;
&lt;div class=&#39;table-container&#39; id=&#39;tbl:5-udp-payload-length-answer-rr-wallbleed-responses-ipv-scan&#39;&gt;
  &lt;a id=&#39;x1-37r5&#39;&gt;&lt;/a&gt;
  &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:5-udp-payload-length-answer-rr-wallbleed-responses-ipv-scan&#34;&gt;TABLE V&lt;/a&gt;: UDP length and DNS resource record type of
    Wallbleed responses in the Wallbleed v1 scan.&lt;/p&gt;
    &lt;div class=&#39;tabular&#39;&gt;
        &lt;table class=&#39;tabular&#39; id=&#39;TBL-5&#39;&gt;
            &lt;colgroup id=&#39;TBL-5-1g&#39;&gt;
              &lt;col id=&#39;TBL-5-1&#39; /&gt;
              &lt;col id=&#39;TBL-5-2&#39; /&gt;
              &lt;col id=&#39;TBL-5-3&#39; /&gt;
          &lt;/colgroup&gt;
          &lt;tr id=&#39;TBL-5-1-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-5-1-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; UDP Payload Length (Bytes)
              &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-5-1-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; # Responses &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-5-1-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; TYPE &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-5-2-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-5-2-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 52 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-5-2-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 244,881,083 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-5-2-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; A &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-5-3-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-5-3-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 64 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-5-3-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 30,837 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-5-3-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; AAAA &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-5-4-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-5-4-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 33 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-5-4-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 8 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-5-4-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; A &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-5-5-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-5-5-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 48 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-5-5-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 7 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-5-5-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; A &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-5-6-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-5-6-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 45, 46, 50, 51, 158 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-5-6-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 1 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-5-6-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; A &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-5-7-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-5-7-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 68 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-5-7-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 1 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-5-7-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; AAAA &lt;/td&gt;
          &lt;/tr&gt;
      &lt;/table&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- l. 2395 --&gt;&lt;p class=&#39;indent&#39;&gt;  In virtually all cases (99.99%), the response to our probe was a
type A (IPv4) response of 52 bytes. 52 bytes is the expected
length, given the label length prefix in the probe and the fixed
size of the injector’s answer section. In a small number of
cases, the response was a type AAAA (IPv6) response of
64 bytes. There is an explanation for this effect: because
our probe did not contain a QTYPE field, the injector took
the QTYPE from bytes in memory located just after the
probe. The injector defaults to type A responses, but in
the special case that the bytes corresponding to QTYPE
have the value &lt;span class=&#39;colorbox two-byte-width cb-cream-yellow-F7F3D3&#39; id=&#39;colorbox435x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;001c&lt;/span&gt;&lt;/span&gt;, the injector crafts a type AAAA response
instead.
&lt;a id=&#39;x1-52r3&#39;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;!-- l. 2423 --&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;6c&#34;&gt; &lt;a id=&#34;sec:6c-analysis-of-responding-ip-addresses&#34; href=&#34;#sec:6c-analysis-of-responding-ip-addresses&#34;&gt;&lt;span
  class=&#34;titlemark&#34;&gt;C.&lt;/span&gt; Analysis of responding IP addresses&lt;/a&gt;
&lt;/h3&gt;
&lt;!-- l. 2426 --&gt;&lt;p class=&#39;indent&#39;&gt;  We used IP geolocation and IP-to-ASN mapping to find the
location of IP addresses for which a Wallbleed response was
received in the horizontal scans (after filtering out non-Wallbleed
responses as described in the previous subsection). Unsurprisingly,
almost all are reported to be in China, and they represent every
geographic region of the country. A minority of responding IP
addresses are reported to be outside China (after cross-checking
against multiple databases to reduce the chance of geolocation
errors).
&lt;/p&gt;&lt;!-- l. 2438 --&gt;&lt;p class=&#39;indent&#39;&gt;  We looked up every IP address affected by Wallbleed responses
in the country-level IP2Location LITE DB5 database &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:ip2location&#39;&gt;31&lt;/a&gt;]&lt;/span&gt;
(June 30, 2023) and the CAIDA ASN database &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:caida-asn&#39;&gt;32&lt;/a&gt;]&lt;/span&gt; (July 18,
2023). The 242 million IP addresses for which a Wallbleed
response was received map to 32 countries or regions, and belong
to 381 ASes with 554 different ASNs. &lt;a href=&#34;#tbl:6-ases-greatest-wallbleed-affected-ips-china&#34;&gt;Table VI&lt;/a&gt; shows the top
ten ASes by number of responding IP addresses, all located in
China.



&lt;/p&gt;&lt;!-- l. 2458 --&gt;
&lt;div class=&#39;table-container&#39; id=&#39;tbl:6-ases-greatest-wallbleed-affected-ips-china&#39;&gt;
  &lt;span
      id=&#39;networks-outside-china-for-which-wallbleed-responses-were-received-in-horizontal-scans-from-theus-two-scans-are-represented-one-on-june-and-one-on-august-the-table-shows-the-ten-ases-with-the-greatest-number-of-affected-ip-addresses-intotal-there-were-nonchinese-ases-in-countries-in-the-june-scan-and-ases-in-countries-in-the-august-scan-&#39;&gt;&lt;/span&gt;


  &lt;a id=&#39;x1-39r6&#39;&gt;&lt;/a&gt;
  &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:6-ases-greatest-wallbleed-affected-ips-china&#34;&gt;TABLE VI&lt;/a&gt;: The ASes ASes with the greatest number of Wallbleed-
    affected IP addresses. All are located in China, according
    to a geolocation database. When an AS has multiple ASNs,
    we show the one with the most affected IP addresses.&lt;/p&gt;


  &lt;div class=&#39;tabular&#39;&gt;
      &lt;table class=&#39;tabular&#39; id=&#39;TBL-6&#39;&gt;
          &lt;colgroup id=&#39;TBL-6-1g&#39;&gt;
              &lt;col id=&#39;TBL-6-1&#39; /&gt;
              &lt;col id=&#39;TBL-6-2&#39; /&gt;
              &lt;col id=&#39;TBL-6-3&#39; /&gt;
          &lt;/colgroup&gt;
          &lt;tr id=&#39;TBL-6-1-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-1-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; AS Name &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-1-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; ASNs &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-1-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; # IPs &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-6-2-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-2-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; China Telecom &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-2-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 4134, … &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-2-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 104.2 M &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-6-3-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-3-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; China Unicom Backbone
              &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-3-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 4837, … &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-3-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 54.9 M &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-6-4-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-4-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; China Mobile &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-4-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 9808, … &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-4-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 23.9 M &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-6-5-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-5-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; China TieTong &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-5-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 9394, … &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-5-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 12.8 M &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-6-6-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-6-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; China Unicom &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-6-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 4837, … &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-6-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 12.7 M &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-6-7-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-7-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Alibaba &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-7-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 37963, … &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-7-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 7.3 M &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-6-8-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-8-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Tencent &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-8-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 45090, … &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-8-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 5.2 M &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-6-9-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-9-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; China Networks IX &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-9-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 4847 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-9-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 3.7 M &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-6-10-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-10-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; CERNET &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-10-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 4538 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-10-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 3.1 M &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-6-11-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-11-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Oriental Cable Network
              &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-11-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 9812 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-6-11-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 1.7 M &lt;/td&gt;
          &lt;/tr&gt;
      &lt;/table&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- l. 2471 --&gt;&lt;p class=&#39;indent&#39;&gt;  For finer granularity, we sampled 10,000 IP addresses
that country-level geolocation placed in China, and looked
them up in the city- and province-level IP2Location LITE
DB5  database &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:ip2location&#39;&gt;31&lt;/a&gt;]&lt;/span&gt;  (August 24,  2023).  The  sampled  IP
addresses represented all 22 provinces, 5 autonomous regions,
and 4 municipalities of China. We therefore surmise that
Wallbleed-prone DNS injectors affected the entire country, not
only certain regions.
&lt;/p&gt;

&lt;div class=&#39;table-container&#39; id=&#39;tbl:7-networks-outside-china-wallbleed-responses-us-horizontal-scans&#39;&gt;
  &lt;a id=&#39;x1-39r6&#39;&gt;&lt;/a&gt;
  &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:7-networks-outside-china-wallbleed-responses-us-horizontal-scans&#34;&gt;TABLE VII&lt;/a&gt;: Networks outside China for which Wallbleed
    responses were received in horizontal scans from the US.
    Two scans are represented, one on June 25, 2023 and one
    on August 23, 2023. The table shows the ten ASes with the
    greatest number of affected IP addresses. In total, there were
    104 non-Chinese ASes in 37 countries in the June scan, and
    99 ASes in 31 countries in the August scan.&lt;/p&gt;


  &lt;div class=&#39;tabular&#39;&gt;
      &lt;table class=&#39;tabular&#39; id=&#39;TBL-7&#39;&gt;
          &lt;colgroup id=&#39;TBL-7-1g&#39;&gt;
              &lt;col id=&#39;TBL-7-1&#39; /&gt;
              &lt;col id=&#39;TBL-7-2&#39; /&gt;
              &lt;col id=&#39;TBL-7-3&#39; /&gt;
              &lt;col id=&#39;TBL-7-4&#39; /&gt;
              &lt;col id=&#39;TBL-7-5&#39; /&gt;
          &lt;/colgroup&gt;
          &lt;tr id=&#39;TBL-7-1-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-1-1&#39; style=&#39;white-space:nowrap; text-align:left; vertical-align: top;&#39; rowspan=&#34;2&#34;&gt; AS Name &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-1-2&#39; style=&#39;white-space:nowrap; text-align:left; vertical-align: top;&#39; rowspan=&#34;2&#34;&gt; ASN &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-1-3&#39; style=&#39;white-space:nowrap; text-align:left; vertical-align: top;&#39; rowspan=&#34;2&#34;&gt; CC &lt;/td&gt;
              &lt;td class=&#39;td11&#39; colspan=&#39;2&#39; id=&#39;TBL-7-1-4&#39; style=&#39;white-space:nowrap; text-align:center;&#39;&gt;
                  &lt;div class=&#39;multicolumn&#39; style=&#39;white-space:nowrap; text-align:center;&#39;&gt;# Unique IPs&lt;/div&gt;
              &lt;/td&gt;
          &lt;/tr&gt;
          &lt;!-- &lt;tr id=&#39;TBL-7-2-&#39;&gt;
              &lt;td class=&#39;td11&#39; colspan=&#39;3&#39; id=&#39;TBL-7-2-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;/td&gt;
              &lt;td class=&#39;td11&#39; colspan=&#39;2&#39; id=&#39;TBL-7-2-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt;&lt;/td&gt;
          &lt;/tr&gt; --&gt;
          &lt;tr id=&#39;TBL-7-3-&#39;&gt;

              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-3-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; Jun. &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-3-5&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; Aug. &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-7-4-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-4-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Dreamline &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-4-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 9457 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-4-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; KR &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-4-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 1,534 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-4-5&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 1,086 &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-7-5-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-5-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; MASTER-7-AS &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-5-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 26380 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-5-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; AU &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-5-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 315 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-5-5&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 489 &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-7-6-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-6-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Anpple Tech &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-6-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 133847 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-6-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; MY &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-6-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 243 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-6-5&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 257&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-7-7-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-7-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Chinanet Backbone &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-7-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 4134 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-7-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; HK &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-7-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 235 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-7-5&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 248 &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-7-8-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-8-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; AZT &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-8-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 53587 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-8-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; US &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-8-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 186 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-8-5&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 168 &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-7-9-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-9-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Network Joint &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-9-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 133762 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-9-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; HK &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-9-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 63 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-9-5&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 61 &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-7-10-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-10-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; HK Broadband &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-10-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 9269 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-10-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; HK &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-10-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 50 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-10-5&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 85 &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-7-11-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-11-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; STACKS-INC-01 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-11-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 398704 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-11-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; HK &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-11-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 31 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-11-5&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 78 &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-7-12-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-12-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Viettel Group &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-12-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 7552 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-12-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; VN &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-12-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 31 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-12-5&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 30 &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-7-13-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-13-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Aofei Data &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-13-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 135391 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-13-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; HK &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-13-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 29 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-7-13-5&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 28 &lt;/td&gt;
          &lt;/tr&gt;
      &lt;/table&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;!-- l. 2496 --&gt;&lt;p class=&#39;indent&#39;&gt;  Just 110,676 (0.05%) IP addresses mapped to a country other
than China in country-level geolocation. It is not implausible that
addresses outside China should be affected, as DNS injection is
known to affect network paths that merely pass through
China in transit &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Sparks2012a&#39;&gt;33&lt;/a&gt;]&lt;/span&gt;. But because geolocation databases can
be inaccurate &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:proxies-lie&#39;&gt;34&lt;/a&gt; §6.2]&lt;/span&gt;, we applied additional filtering to
eliminate addresses that are less certain to be outside of
China:
    &lt;/p&gt;&lt;dl class=&#39;enumerate-enumitem&#39;&gt;&lt;dt class=&#39;enumerate-enumitem&#39;&gt;
 1) &lt;/dt&gt;&lt;dd class=&#39;enumerate-enumitem&#39;&gt;We used  three  different  databases:  MaxMind  GeoLite2
    city &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:MaxMind&#39;&gt;26&lt;/a&gt;]&lt;/span&gt; (September 1, 2023), IP2Location LITE DB5 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:ip2location&#39;&gt;31&lt;/a&gt;]&lt;/span&gt;    (August 24,    2023),    and    IPGeolocation.io &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:ipgeolocation-io&#39;&gt;35&lt;/a&gt;]&lt;/span&gt;
    (October 2, 2023). If an IP address mapped to China in
    any database, we discounted its entire /24 network.
    &lt;/dd&gt;&lt;dt class=&#39;enumerate-enumitem&#39;&gt;
 2) &lt;/dt&gt;&lt;dd class=&#39;enumerate-enumitem&#39;&gt;We looked up each IP address in the ASN databases of
    Team  Cymru &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:team-cymru-asn&#39;&gt;36&lt;/a&gt;]&lt;/span&gt;  (October 2,  2023)  and  CAIDA &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:caida-asn&#39;&gt;32&lt;/a&gt;]&lt;/span&gt;
    (June 27, 2023). When an ASN’s country of registration
    was China, we also discounted its entire /24 network.&lt;/dd&gt;&lt;/dl&gt;



&lt;!-- l. 2552 --&gt;

&lt;!-- l. 2575 --&gt;
&lt;!-- l. 2584 --&gt;

&lt;p class=&#39;indent&#39;&gt;  The filter is designed to be conservative, in that it errs on the
side of placing IP addresses in China. 6,822 IP addresses
remained after filtering. &lt;a href=&#34;#tbl:7-networks-outside-china-wallbleed-responses-us-horizontal-scans&#34;&gt;Table VII&lt;/a&gt; summarizes them by AS, and
&lt;a href=&#34;#fig:9-geolocation-ip-outside-china-wallbleed-response-us&#34;&gt;Figure 9&lt;/a&gt; shows their geolocation.
&lt;/p&gt;

&lt;div class=&#39;figure&#39;&gt;
  &lt;!-- l. 427 --&gt;
  &lt;p class=&#39;noindent&#39; id=&#39;fig:9-geolocation-ip-outside-china-wallbleed-response-us&#39;&gt;
      &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/map-non-cn-filtered-by-subnet-24.png&#39; /&gt; &lt;a id=&#39;x1-41r7&#39;&gt;&lt;/a&gt;
      &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:9-geolocation-ip-outside-china-wallbleed-response-us&#34;&gt;Fig. 9&lt;/a&gt;: City-level geolocation of IP addresses outside China
        for which a Wallbleed response was received, when scanning
        from our host in the US.&lt;/p&gt;
&lt;/div&gt;

&lt;!-- l. 2594 --&gt;&lt;p class=&#39;indent&#39;&gt;  Though there likely remain a few incorrect geolocations, it is
clear that some traffic outside of China may have been exposed to
the privacy risk represented by Wallbleed. In 2010, Sparks
et al. observed that 109 regions are DNS-polluted, primarily due
to GFW DNS injections on the transit paths to TLD servers &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Sparks2012a&#39;&gt;33&lt;/a&gt; §4.4]&lt;/span&gt;. In 2021, hosts in Mexico were not able to reach
&lt;span class=&#39;cmtt-10&#39;&gt;whatsapp.net &lt;/span&gt;as the GFW injected forged responses to queries
to the root DNS servers in China &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Mexico2021dns&#39;&gt;37&lt;/a&gt;, &lt;a href=&#39;#cite:Nosyk2023a&#39;&gt;38&lt;/a&gt;]&lt;/span&gt;.
&lt;a id=&#39;x1-58r7&#39;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;!-- l. 2614 --&gt;
&lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;7&#34;&gt;&lt;a id=&#34;sec:7-monitoring-the-censors-patching-behavior&#34;
  href=&#34;#sec:7-monitoring-the-censors-patching-behavior&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;VII.&lt;/span&gt; Monitoring the censor’s patching behavior&lt;/a&gt;
&lt;/h2&gt;
&lt;!-- l. 2617 --&gt;&lt;p class=&#39;indent&#39;&gt;  We expected that the GFW would eventually patch the
Wallbleed vulnerability. With a combination of continuous
monitoring and China-wide scans, we captured the process of
patching both Wallbleed v1 in September/October 2023, and
Wallbleed v2 in March 2024.
&lt;/p&gt;&lt;!-- l. 2623 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Experiment  setup.   &lt;/span&gt;For continuous monitoring, we sent
Wallbleed probes and ordinary DNS queries for the same
QNAME, at 100 pps, from the US to an IP address under our
control in China. We used &lt;span class=&#39;cmtt-10&#39;&gt;4.tt &lt;/span&gt;for v1 probes and and &lt;span class=&#39;cmtt-10&#39;&gt;te.rs &lt;/span&gt;for
v2 probes. The ordinary DNS queries acted as controls to
distinguish patching of the vulnerability from the injector being
offline or the QNAME being removed from the blocklist. If the
injector stops responding to Wallbleed probes, but continues to
respond to the normal probes without interruption, this is evidence
that the censor can &lt;span class=&#39;ptmri8t-&#39;&gt;hot-patch &lt;/span&gt;the GFW with minimal downtime.
On the other hand, if the injector stops responding to both for
some time, and later resumes responding to normal probes only,
then we can measure the downtime related to patching. Using a
machine in UMass Amherst, we did continuous monitoring
of Wallbleed v1 between September 6 and November 7,
2023, and of Wallbleed v2 between March 6 and April 16,
2024.
&lt;/p&gt;&lt;!-- l. 2647 --&gt;&lt;p class=&#39;indent&#39;&gt;  We also did scans of a sample of about one million addresses
in China. These were designed to test whether patching would
happen at different times in different regions, or simultaneously
across the country. We selected one representative per /24 subnet
from the 215 million responsive IPv4 addresses discovered in the
IPv4 scan of &lt;a href=&#39;#sec:6-ip-addresses-affected-by-wallbleed&#39;&gt;Section VI&lt;/a&gt;, yielding 1,130,343 IP addresses. We
used ZMap &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:zmap&#39;&gt;27&lt;/a&gt;]&lt;/span&gt; to send a Wallbleed probe to each of these IP
addresses every 15 minutes. We conducted these scans from CU
Boulder, between September 6 and November 7, 2023 for
Wallbleed v1, and between March 28 and April 16, 2024 for
Wallbleed v2.
&lt;/p&gt;

&lt;!-- l. 2694 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Experiment results.   &lt;/span&gt;&lt;a href=&#34;#fig:10-subnets-responded-wallbleedv-us&#34;&gt;Figure 10&lt;/a&gt; shows the number of /24 subnets
that responded to Wallbleed v1 probes in ZMap scans, as well as
the hourly churn rate: the number of IP addresses that were
responsive in one hour but not the next, or vice versa. We
aggregated responding IP addresses by hour to reduce false
negatives caused by packet loss.
&lt;/p&gt;

&lt;div class=&#39;figure&#39;&gt;
  &lt;!-- l. 83 --&gt;
  &lt;p class=&#39;noindent&#39; id=&#39;fig:10-subnets-responded-wallbleedv-us&#39;&gt;
      &lt;img alt=&#39;PIC&#39; class=&#34;figure-img img-fluid rounded&#34; src=&#39;../figures/responding-ips-over-time.png&#39; /&gt; &lt;a id=&#39;x1-45r8&#39;&gt;&lt;/a&gt;
      &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:10-subnets-responded-wallbleedv-us&#34;&gt;Fig. 10&lt;/a&gt;: We tracked the number of IPv4 /24 subnets that
        responded to Wallbleed v1 probes over time. We scanned
        1,130,343 IP addresses (one per subnet) every 15 minutes
        between September 6 and November 7, 2023. We failed to
        collect data between September 17 and October 4, 2023.
        Wallbleed v1 was patched in two major stages: between
        September 6 and 14, 2023; and between October 22 and
        November 1, 2023.&lt;/p&gt;
&lt;/div&gt;

&lt;!-- l. 2703 --&gt;&lt;p class=&#39;indent&#39;&gt;  There are some variations in the response rate leading up to
October 23, when the Wallbleed vulnerability was patched over
about a week. Starting on October 23, we observed discrete steps
down in response rate as the vulnerability was progressively
patched. The last three steps occurred on October 30 (Monday),
October 31 (Tuesday), and November 1 (Wednesday) at the same
time each day: between 10:00 and 12:00 (China Standard Time,
UTC+8). After 12:00 on November 1, we no longer saw
Wallbleed v1 responses for any IP addresses we scan. We
examined the IP addresses that transitioned to unresponsive in the
step on October 30. 86% of the 39 k addresses were part of
a /20 subnet that no longer responded, indicating that the discrete
steps corresponded to large blocks of IP addresses changing in
tandem, rather than a more randomized, load-balancing style of
update.
&lt;/p&gt;&lt;!-- l. 2728 --&gt;&lt;p class=&#39;indent&#39;&gt;  Wallbleed v2 was completely patched by March 28, 2024.
Unfortunately, we only captured the last 60 minutes of the
patching process, in four horizontal scans. Like Wallbleed v1,
Wallbleed v2 was patched in discrete steps. We isolated the time
of final patching of Wallbleed v2 to between 16:01:30 and
16:16:30 (China Standard Time, UTC+8) on March 28, 2024
(a different time of day than v1).
&lt;/p&gt;&lt;!-- l. 2750 --&gt;&lt;p class=&#39;indent&#39;&gt;  In the last one-hour capture, 42,084 IP addresses elicited
Wallbleed v2 responses. Interestingly, 33,779 (80.3%) of these
addresses belong to AS4538 (CERNET, the China Education and
Research Network Center), along with a long tail of 49 ASes that
belong to China Mobile and various universities in China. This
observation supports the hypothesis that CERNET maintains a
subset of the national GFW infrastructure. The DNS injector in
CERNET had the Wallbleed v2 vulnerability in common with
the rest of the GFW, suggesting unified management and
coordinated patching. Meanwhile, its distinct patching schedule
demonstrates a degree of independence in its operation and
maintenance.
&lt;a id=&#39;x1-60r8&#39;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;!-- l. 2860 --&gt;
&lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;8&#34;&gt;&lt;a id=&#34;sec:8-related-work&#34;
  href=&#34;#sec:8-related-work&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;VIII.&lt;/span&gt; Related work&lt;/a&gt;
&lt;/h2&gt;
&lt;!-- l. 2863 --&gt;&lt;p class=&#39;indent&#39;&gt;  DNS injection by the Great Firewall is one of the oldest
and most-studied forms of Internet censorship. The earliest
documentation we know of is in two independent studies
from 2002, one by Dong &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Dong2002a&#39;&gt;39&lt;/a&gt;]&lt;/span&gt; and one by Zittrain and Edelman &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Zittrain2003a&#39;&gt;40&lt;/a&gt;]&lt;/span&gt;, both of which found that a single bogus IP address was used
in all injected responses. In 2009, gfwrev discovered two types of
DNS injector in China with distinct fingerprints, and documented
another seven response IP addresses in addition to the one
that  had  been  used  in 2002 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:gfwrev-understanding-dns-poisoning&#39;&gt;13&lt;/a&gt;]&lt;/span&gt;.  In 2014,  Anonymous
et al. analyzed IP ID and TTL patterns in injected responses toinfer the existence of 367 separate injection processes, each
 injecting at a rate of between 0 and 60 fake DNS responses per
 second &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;7&lt;/a&gt; §7]&lt;/span&gt;. The number of bogus IP addresses in use
 had grown to at least 174 by 2016 &lt;span class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:Farnan2016a&#39;&gt;41&lt;/a&gt;, &lt;a href=&#39;#cite:Pearce2017b&#39;&gt;42&lt;/a&gt;]&lt;/span&gt;. Anonymous
 et al. distinguished the fingerprints of at least three DNS injectors
 in 2020 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;8&lt;/a&gt;]&lt;/span&gt;. Large-scale measurements by Hoang et al. in 2021
 showed that tracking changes in the GFW’s DNS domain
 blocklists can help in understanding censorship trends in China &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;9&lt;/a&gt;]&lt;/span&gt;.
 &lt;/p&gt;&lt;!-- l. 2898 --&gt;&lt;p class=&#39;indent&#39;&gt;  The past work that most resembles, and indeed inspires, our
 own is gfw-looking-glass.sh, a one-line shell script posted by
 klzgrad from gfwrev in 2010 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:gfw-looking-glass-twitter&#39;&gt;5&lt;/a&gt;, &lt;a href=&#39;#cite:gfw-looking-glass-post&#39;&gt;6&lt;/a&gt;]&lt;/span&gt;. To the best of our
 knowledge, it was the first memory-dumping vulnerability in the
 GFW. DNS queries with a name truncated after the first byte of a
 2-byte compression pointer caused the GFW’s DNS parser to treat
 nearby memory as part of the name, and leak it back in the
 injected response. This vulnerability was fixed prior to our
 discovery of Wallbleed. The script incidentally demonstrated that
 a query name containing an embedded dot character,
 &lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox436x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;06&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox437x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;w&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox438x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;u&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox439x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;x&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox440x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;.&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox441x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox442x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;u&lt;/span&gt; &lt;/span&gt;, was
 treated the same as one correctly split into separate labels,
 &lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox443x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox444x&#39;&gt; &lt;span class=&#39;cmtt-10x&#39;&gt;w&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox445x&#39;&gt; &lt;span class=&#39;cmtt-10x&#39;&gt;u&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox446x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;x&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox447x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;02&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox448x&#39;&gt; &lt;span class=&#39;cmtt-10x&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox449x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;u&lt;/span&gt; &lt;/span&gt;,
 indicating that the GFW, at that time too, serialized the name
 to a dotted string before matching it against a blocklist,
 rather than matching on structured labels. In 2014, klzgrad
 found that the GFW’s DNS injector had ceased to interpret
 compression pointers, opening opportunities to evade DNS
 injection with queries that used pointers in unusual ways &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:klzgrad-gist-dns-compression-pointer-mutation&#39;&gt;43&lt;/a&gt;]&lt;/span&gt;.
 &lt;/p&gt;&lt;!-- l. 2920 --&gt;&lt;p class=&#39;indent&#39;&gt;  Wallbleed was independently discovered by Sakamoto and
 Wedwards in 2023 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Sakamoto2024a&#39;&gt;44&lt;/a&gt;]&lt;/span&gt;. They analyzed the leaked data, inferred
 the characteristics of the GFW’s processes, and proposed several
 attacks leveraging this vulnerability. Apart from confirming their
 observations, we developed the study of Wallbleed further with
 longitudinal and Internet-wide measurements of more than two
 years since October 2021. We uncovered the root cause of
 Wallbleed, reconstructed the parsing logic in C code, used a novel
 side channel to identify individual processes in the vulnerable
 injector, examined affected IP addresses, and, after the first
 incomplete patch of November 2023, found the Wallbleed v2
 vulnerability.
 &lt;/p&gt;&lt;!-- l. 2937 --&gt;&lt;p class=&#39;indent&#39;&gt;  Wallbleed is named like other similar memory disclosure
 vulnerabilities. Heartbleed, a vulnerability in OpenSSL, allowed
 clients to leak up to 64 KB of a TLS server’s memory at a time &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Heartbleed&#39;&gt;1&lt;/a&gt;]&lt;/span&gt;. Cloudbleed was a vulnerability in an HTML parser used on
 edge servers of the Cloudflare content delivery network in 2017 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Cloudbleed-post-1&#39;&gt;3&lt;/a&gt;, &lt;a href=&#39;#cite:Cloudbleed-post-2&#39;&gt;4&lt;/a&gt;]&lt;/span&gt;. Similarly, Ticketbleed documented a vulnerability in F5
 middleboxes &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Ticketbleed&#39;&gt;2&lt;/a&gt;]&lt;/span&gt;.
 &lt;/p&gt;&lt;!-- l. 2946 --&gt;&lt;p class=&#39;indent&#39;&gt;
 &lt;a id=&#39;x1-61r9&#39;&gt;&lt;/a&gt;
 &lt;/p&gt;
 &lt;!-- l. 2946 --&gt;
 &lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;9&#34;&gt;&lt;a id=&#34;sec:9-ethics&#34; href=&#34;#sec:9-ethics&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;IX.&lt;/span&gt; Ethics&lt;/a&gt;
&lt;/h2&gt;
&lt;!-- l. 2949 --&gt;&lt;p class=&#39;indent&#39;&gt;  Three main ethical considerations arise in this research. The
 first is the handling of experimental data, such as what we
 collected over two years in our longitudinal experiment. If, as we
 contend, Wallbleed represented a privacy risk to the users
 whose traffic passed through vulnerable injectors, then the


storage and analysis of leaked data require sensitivity and
care. The second is whether, or under what circumstances,
it is okay to exploit a security vulnerability in a system
that may itself be regarded as a hostile network attacker &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:InternetSociety2023&#39;&gt;10&lt;/a&gt;, &lt;a href=&#39;#cite:Anderson2012b&#39;&gt;11&lt;/a&gt;]&lt;/span&gt;—in this case the GFW. The third is how to approach
disclosure.
&lt;/p&gt;&lt;!-- l. 2965 --&gt;&lt;p class=&#39;indent&#39;&gt;
&lt;a id=&#39;x1-62r1&#39;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;!-- l. 2965 --&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;9a&#34;&gt; &lt;a id=&#34;sec:9a-data-handling&#34; href=&#34;#sec:9a-data-handling&#34;&gt;&lt;span
  class=&#34;titlemark&#34;&gt;A.&lt;/span&gt; Data handling&lt;/a&gt;
&lt;/h3&gt;
&lt;!-- l. 2968 --&gt;&lt;p class=&#39;indent&#39;&gt;  The experiment in &lt;a href=&#39;#sec:5-seeing-out-own-traffic&#39;&gt;Section V&lt;/a&gt; demonstrates that at least &lt;span class=&#39;ptmri8t-&#39;&gt;some &lt;/span&gt;of
the data exposed by Wallbleed to third parties originated in
traffic transiting the firewall. This presents a privacy concern:
network traffic may contain sensitive information such as
usernames, passwords, or web requests. We submitted our
research plan to our institutional review board (IRB), which
exempted the research as not involving human subjects.
Below we detail our considerations and safeguards for this
data.
&lt;/p&gt;&lt;!-- l. 2979 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Data  collection.   &lt;/span&gt;There is an unavoidable trade-off between
reducing data collection and being able to do meaningful analysis.
Once the Wallbleed vulnerability was understood, leaking a single
byte would have been sufficient to confirm its presence, but such
limited measurement would not have allowed us to study the
firewall’s architecture or how Internet users were impacted.
On-the-fly analysis of in-memory (rather than stored) data
would have allowed us to report some results, but we would
not have noticed and would not have been able to analyze
unanticipated changes, such as the gradual disappearance of
“digest” bytes in &lt;a href=&#34;#sec:4b-the-four-digest-bytes&#34;&gt;Section IV-B&lt;/a&gt;. We therefore
focused on a strategy of protecting collected data, rather
than  artificially  limiting  what  was  collected.  Ultimately,
after discussion within our team and with reviewers, we
decided to delete the collected data upon publication of this
work.
&lt;/p&gt;&lt;!-- l. 3030 --&gt;&lt;p class=&#39;indent&#39;&gt;
&lt;a id=&#39;x1-63r2&#39;&gt;&lt;/a&gt;
&lt;/p&gt;&lt;!-- l. 3030 --&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;9b&#34;&gt; &lt;a id=&#34;sec:9b-ethics-of-exploitation&#34; href=&#34;#sec:9b-ethics-of-exploitation&#34;&gt;&lt;span
  class=&#34;titlemark&#34;&gt;B.&lt;/span&gt; Ethics of exploitation&lt;/a&gt;
&lt;/h3&gt;
&lt;!-- l. 3033 --&gt;&lt;p class=&#39;indent&#39;&gt;  Exploiting a bug of this nature is ethically complicated. From a
deontological perspective &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:kohno2023ethical&#39;&gt;45&lt;/a&gt; §4.1]&lt;/span&gt;, security researchers might
decide to avoid exploiting vulnerabilities in systems they do not
control under any circumstances, as doing so may have
unintended and negative impacts that are difficult to predict.
Alternatively, from a consequentialist perspective &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:kohno2023ethical&#39;&gt;45&lt;/a&gt; §4.1]&lt;/span&gt;,
one must weigh the benefits of research against its risk of
harms.
&lt;/p&gt;&lt;!-- l. 3042 --&gt;&lt;p class=&#39;indent&#39;&gt;  We identify two high-level sources of potential harm and
negative effects in our research: (1) the data we collected, which
may contain sensitive information, could leak; and (2) the
probes we sent may cause the GFW, or other middleboxes
or end hosts, to crash or malfunction. We have discussed
the first source of risks in Section &lt;a href=&#39;#sec:9a-data-handling&#39;&gt;Section IX-A&lt;/a&gt;.
Below we discuss how we manage the second source of
risks.                                               &lt;/p&gt;&lt;!-- l. 3048 --&gt;&lt;p class=&#39;indent&#39;&gt;    Given that the system we exploit is itself considered by many
  to be a source of harm &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:InternetSociety2023&#39;&gt;10&lt;/a&gt;, &lt;a href=&#39;#cite:Anderson2012b&#39;&gt;11&lt;/a&gt;]&lt;/span&gt;, even if our experiments result in
  damage to the GFW, it will essentially reduce harm to more than
  a billion people by hampering censorship. In particular, any crash
  of the GFW is unlikely to impede network traffic. Past research
  has shown that GFW DNS injectors are on-path devices &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;7&lt;/a&gt;, &lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;8&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2021a&#39;&gt;9&lt;/a&gt;, &lt;a href=&#39;#cite:Duan2012a&#39;&gt;12&lt;/a&gt;, &lt;a href=&#39;#cite:Lowe2007a&#39;&gt;21&lt;/a&gt;, &lt;a href=&#39;#cite:Dong2002a&#39;&gt;39&lt;/a&gt;, &lt;a href=&#39;#cite:Tschantz2016a&#39;&gt;46&lt;/a&gt;, &lt;a href=&#39;#cite:Xu2011a&#39;&gt;47&lt;/a&gt;, &lt;a href=&#39;#cite:Wang2017a&#39;&gt;48&lt;/a&gt;]&lt;/span&gt;; that is, they work by getting a
  mirrored copy of traffic, and are not themselves a link in
  the transmission chain. Finally, prior work has exploited
  vulnerabilities in other harmful systems like botnets and
  middleboxes in order to study those problematic systems &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Bock2021b&#39;&gt;29&lt;/a&gt;, &lt;a href=&#39;#cite:stone2009your&#39;&gt;49&lt;/a&gt;, &lt;a href=&#39;#cite:mirian2023line&#39;&gt;50&lt;/a&gt;, &lt;a href=&#39;#cite:kanich2008spamalytics&#39;&gt;51&lt;/a&gt;, &lt;a href=&#39;#cite:Bock2021a&#39;&gt;52&lt;/a&gt;]&lt;/span&gt;.
  &lt;/p&gt;&lt;!-- l. 3064 --&gt;&lt;p class=&#39;indent&#39;&gt;    To minimize the risk of crashing other middleboxes and end
  hosts, we cautiously only sent traffic to hosts under our control
  during the first 18 months of experiments. Only after observing a
  lack of adverse effects did we start Internet-wide scans.
  Following best practices for Internet scanning &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:zmap&#39;&gt;27&lt;/a&gt;]&lt;/span&gt;, we limited
  the  traffic  volume  to  each  host  not  under  our  control  to
  only one UDP packet per 15 minutes. We hosted a web
  page at the source IP address of our scans, displaying a
  project description and explaining how to opt out of scanning.
  We received and honored one opt-out request in the course of the
  study.
  &lt;/p&gt;&lt;!-- l. 3078 --&gt;&lt;p class=&#39;indent&#39;&gt;
  &lt;a id=&#39;x1-64r3&#39;&gt;&lt;/a&gt;
  &lt;/p&gt;&lt;!-- l. 3078 --&gt;
  &lt;h3 class=&#34;subsectionHead&#34; id=&#34;9c&#34;&gt; &lt;a id=&#34;sec:9c-whether-to-disclose-and-how&#34; href=&#34;#sec:9c-whether-to-disclose-and-how&#34;&gt;&lt;span
    class=&#34;titlemark&#34;&gt;C.&lt;/span&gt; Whether to disclose, and how&lt;/a&gt;
  &lt;/h3&gt;
  &lt;!-- l. 3081 --&gt;&lt;p class=&#39;indent&#39;&gt;    Disclosing a bug of this nature is also complicated. By reporting
  the vulnerability, are we ultimately “helping” the Great Firewall?
  There is also a trade-off to consider between immediate and
  delayed disclosure: remove the privacy risk to users now, or take
  time to gain a greater understanding of the censorship system, in
  order to perhaps avoid even greater risks and harm in the
  future?
  &lt;/p&gt;&lt;!-- l. 3089 --&gt;&lt;p class=&#39;indent&#39;&gt;    We decided on a strategy of coordinated disclosure, but only
  after taking advantage of the opportunity occasioned by the
  vulnerability to learn as much about the DNS injection subsystem
  as possible. Two factors led us to the decision to eventually
  disclose. The first is the risk to the privacy of users. Once the
  unpatched bug was made public, it could be used by others who
  do not have regard for users’ safety. The second is that the
  Wallbleed vulnerability does not reduce the effectiveness of the
  DNS censorship system. With Wallbleed fixed, the injectors carry
  on interfering with connections as before, but they do not do &lt;span class=&#39;ptmri8t-&#39;&gt;more&lt;/span&gt;
  of it.
  &lt;/p&gt;&lt;!-- l. 3101 --&gt;&lt;p class=&#39;indent&#39;&gt;    This ethical calculus is specific to this situation. Under other
  circumstances we might come to a different decision. If there
  were an implementation error in the Great Firewall that caused it
  to fail to censor some fraction of connections, and otherwise did
  not increase risk to users, we would not be obligated to report it.
  Our allegiance is not to bug-fixing in the abstract, but to the
  security of users. We maintain that the only correct fix for a bug
  like Wallbleed is the removal of affected devices (i.e., the
  GFW injectors) from the network: the real “bug” is their
  very  presence,  not  in  the  specific  implementation  errors


they undoubtedly have. The incomplete patch in November
2023 that led to the Wallbleed v2 variant reinforces the
point: as long as the injectors exist, they will pose a risk to
users.
&lt;/p&gt;&lt;!-- l. 3119 --&gt;&lt;p class=&#39;indent&#39;&gt;  In the end, our decision to disclose was made moot by
the patching of the vulnerability, before we were able to
report the issue to CNCERT. This paper, too, forms part of
our disclosure strategy: documenting and publicizing this
vulnerability will draw more attention to the many dangers of
censorship.
&lt;/p&gt;&lt;!-- l. 3127 --&gt;&lt;p class=&#39;indent&#39;&gt;
&lt;a id=&#39;x1-65r10&#39;&gt;&lt;/a&gt;
&lt;/p&gt;&lt;!-- l. 3127 --&gt;
&lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;10&#34;&gt;&lt;a id=&#34;sec:10-lesson-learned-for-future-work&#34;
  href=&#34;#sec:10-lesson-learned-for-future-work&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;X.&lt;/span&gt; Lesson learned for future work&lt;/a&gt;
&lt;/h2&gt;
&lt;!-- l. 3135 --&gt;&lt;p class=&#39;indent&#39;&gt;  Our study provides a unique case study of the balance between
protecting user data and utility of research data in understanding a
system. While in hindsight it is possible to see areas where we
could have chosen to collect less data (and thus reduced the risk
of collecting personal information), we note that it is difficult to
know the optimal boundaries of unstructured data ahead of time.
For instance, we learned of the 4-byte “digest bytes” feature
by studying a large number of full payloads. In hindsight,
we might still have discovered this feature of the GFW by
leaking only 4 bytes, so it may appear unnecessary to collect
more than that. But without knowledge of the nature of this
feature ahead of time, it would be difficult to know that
4 bytes would be sufficient. Likewise, when choosing how
many bytes to leak, we are faced with a difficult trade-off:
leak more bytes at the risk of collecting personal data (but
potentially learn more about a yet-unknown feature of the
GFW), or leak fewer bytes at the risk of learning less (but
limit the potential collection of sensitive data). This type
of trade-off should be considered carefully for all work,
and we hope that by documenting our thought process, we
inspire further discussion and debate among the research
community.
&lt;/p&gt;&lt;!-- l. 3158 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;IRB decisions.   &lt;/span&gt;We were asked to push back on our Institutional
Review Board’s decision to mark our work as exempt, as
reviewers felt that there were additional ethical considerations of
our work not captured by that decision. We agree that our work
has complex ethical considerations, but disagree that these
considerations fall explicitly within the bounds of an IRB, or that
authors should be required to push back on IRB decisions they
disagree with.
&lt;/p&gt;&lt;!-- l. 3173 --&gt;&lt;p class=&#39;indent&#39;&gt;  We were transparent in the protocol we submitted to the IRB,
including that the collected data may contain third-party network
traffic. This is an excerpt from our submitted protocol:
&lt;/p&gt;&lt;!-- l. 3177 --&gt;
&lt;div class=&#34;px-5&#34;&gt;
&lt;p class=&#39;indent&#39;&gt;
     “We  have  discovered  that,  in  processing  certain
    malformed DNS queries, the subsystem may include
    fragments   of   unrelated   system   memory   in   its
    injected   response.   In   short,   the   firewall   ‘leaks’
    small fragments of memory, which may incidentally
    include  other  people’s  network  traffic  that  passes          by  the  GFW.  The  discovery  is  significant  both  for
                                                      network  security  and  for  understanding  the  Great
                                                      Firewall.  While  the  contents  of  the  leaked  memory
                                                      are   unpredictable,   it   is   possible   that   they   may
                                                      contain  personally  identifiable  information,  such  as
                                                      IP  addresses.  Therefore,  we  are  seeking  the  IRB’s
                                                      guidance  on  how  to  proceed,  and  in  particular,  on
                                                      whether this research requires full IRB review.”
                                                    &lt;/div&gt;
                                                  &lt;!-- l. 3185 --&gt;&lt;p class=&#39;indent&#39;&gt;  We recognize that IRB exemption is not the same thing as the
                                                  IRB making an ethical determination about the work, nor does it
                                                  necessarily mean the IRB feels there is no potential harm or
                                                  ethical considerations needed. Rather, an exemption means that
                                                  the IRB has determined it does not fall within a narrow definition
                                                  of “human subjects research” &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:CFR32_219_102&#39;&gt;53&lt;/a&gt; § 219.102]&lt;/span&gt;. To this end, we
                                                  treated the data we collected as sensitive, and have deleted it
                                                  prior to publication as a precaution against potential abuse.
                                                  Nonetheless, we feel it is important for our community to
                                                  understand the limitations of IRBs, and to avoid using them as a
                                                  stand-in for ethical decisions.
                                                  &lt;/p&gt;&lt;!-- l. 3199 --&gt;&lt;p class=&#39;indent&#39;&gt;
                                                  &lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;11&#34;&gt;
                                                    &lt;a id=&#34;sec:11-conclusion&#34; href=&#34;#sec:11-conclusion&#34;&gt;
                                                        &lt;span class=&#34;titlemark&#34;&gt;XI.&lt;/span&gt; Conclusion&lt;/a&gt;
                                                  &lt;/h2&gt;
                                                  &lt;!-- l. 3202 --&gt;&lt;p class=&#39;indent&#39;&gt;  In this work, we present and study Wallbleed, a buffer
                                                  over-read vulnerability in the DNS injection subsystem of the
                                                  Great Firewall of China (GFW). We conducted longitudinal and
                                                  Internet-wide measurements to understand the cause and
                                                  implications of Wallbleed. We also revealed details of the
                                                  GFW’s internal architecture and operations that would not
                                                  be possible to learn about without Wallbleed. Wallbleed
                                                  exemplifies that the harm censorship middleboxes impose on
                                                  Internet users goes even beyond the direct (and designed) harm
                                                  of censorship: it can severely violate users’ privacy and
                                                  confidentiality.
                                                  &lt;/p&gt;&lt;!-- l. 3214 --&gt;
                                                  &lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;availability&#34;&gt;
                                                    &lt;a id=&#34;sec:availability&#34; href=&#34;#sec:availability&#34;&gt;
                                                        &lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt;Availability&lt;/a&gt;
                                                  &lt;/h2&gt;
                                                  &lt;!-- l. 3221 --&gt;&lt;p class=&#39;indent&#39;&gt;  To encourage future research and promote transparency and
                                                  reproducibility, we have made the code, anonymized data, and
                                                  additional context about our work and publishing process publicly
                                                  available. For improved accessibility, we offer both English and
                                                  Chinese HTML versions of the paper. The project homepage is at:
                                                  &lt;a class=&#39;url&#39; href=&#39;https://gfw.report/publications/ndss25/en&#39;&gt;https://gfw.report/publications/ndss25/en&lt;/a&gt;.
                                                  &lt;/p&gt;&lt;!-- l. 3231 --&gt;&lt;p class=&#39;indent&#39;&gt;
                                                  &lt;/p&gt;&lt;!-- l. 3231 --&gt;
                                                  &lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;acknowledgments&#34;&gt;
                                                    &lt;a id=&#34;sec:acknowledgments&#34; href=&#34;#sec:acknowledgments&#34;&gt;
                                                        &lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt;Acknowledgments&lt;/a&gt;
                                                  &lt;/h2&gt;
                                                  &lt;!-- l. 3233 --&gt;&lt;p class=&#39;indent&#39;&gt;  We are deeply grateful to several colleagues who wish to
                                                  remain unnamed for their valuable contributions and guidance
                                                  throughout the entire project. We are also thankful to klzgrad
                                                  from gfwrev for their inspiring pioneering work in 2010, and
                                                  for providing rounds of thoughtful comments in this study.
                                                  In addition, we thank Alberto Dainotti, Ali Zohaib, Cecylia
                                                  Bocovich, Diogo Barradas, J. Alex Halderman, Jakub Dalek,
                                                  Jeffrey Knockel, Michael Carl Tschantz, Nadia Heninger, Philipp
                                                  Winter, ppmaootc, Prateek Mittal, Xiao Qiang, and Zakir
                                                  Durumeric. We also thank the anonymous reviewers for their


helpful comments and guidance.

&lt;a id=&#39;x1-67r0&#39;&gt;&lt;/a&gt;
&lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;references&#34;&gt;
    &lt;a id=&#34;sec:references&#34; href=&#34;#sec:references&#34;&gt;
        References&lt;/a&gt;
&lt;/h2&gt;

&lt;div class=&#34;bibliography&#34;&gt;
    &lt;ol class=&#34;citation-numbering&#34;&gt;
        &lt;!-- 1 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Heartbleed&#34;&gt;&lt;/a&gt; Z. Durumeric, F. Li, J. Kasten, J. Amann, J. Beekman,
            M. Payer, N. Weaver, D. Adrian, V. Paxson, M. Bailey,
            and J. A. Halderman, “The matter of Heartbleed,” in Internet
            Measurement Conference. ACM, 2014. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://dl.acm.org/doi/10.1145/2663716.2663755&#34;&gt;https://dl.acm.org/doi/10.1145/2663716.2663755&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 2 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Ticketbleed&#34;&gt;&lt;/a&gt; F. Valsorda. (2016) Ticketbleed (CVE-2016-9244). [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://filippo.io/Ticketbleed/&#34;&gt;https://filippo.io/Ticketbleed/&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 3 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Cloudbleed-post-1&#34;&gt;&lt;/a&gt; J. Graham-Cumming. (2017, Feb.) Incident report on
            memory leak caused by Cloudflare parser bug. [Online].
            Available: &lt;a class=&#34;url&#34; href=&#34;https://blog.cloudflare.com/incident-report-on-memory-leak-caused-by-cloudflare-parser-bug/&#34;&gt;https://blog.cloudflare.com/incident-report-on-memory-leak-caused-by-cloudflare-parser-bug/&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 4 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Cloudbleed-post-2&#34;&gt;&lt;/a&gt; M. Prince. (2017, Mar.) Quantifying the impact of “Cloudbleed”.
          [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://blog.cloudflare.com/quantifying-the-impact-of-cloudbleed/&#34;&gt;https://blog.cloudflare.com/quantifying-the-impact-of-cloudbleed/&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 5 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:gfw-looking-glass-twitter&#34;&gt;&lt;/a&gt; gfwrev. (2010, Sep.) “gfw-looking-glass.sh: while true; do printf
          &#34;\0\0\1\0\0\1\0\0\0\0\0\0\6wux.ru\300&#34; | nc -uq1 $SOME_IP 53 |
          hd -s20; done”. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://twitter.com/gfwrev/status/25220534979/&#34;&gt;https://twitter.com/gfwrev/status/25220534979/&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 6 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:gfw-looking-glass-post&#34;&gt;&lt;/a&gt; Anonymous. (2020, Mar.) GFW archaeology: gfw-looking-glass.sh.
          [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/25&#34;&gt;https://github.com/net4people/bbs/issues/25&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 7 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Anonymous2014a&#34;&gt;&lt;/a&gt; ——, “Towards a comprehensive picture of the Great Firewall’s
          DNS censorship,” in Free and Open Communications on the Internet.
          USENIX, 2014. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci14/foci14-anonymous.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci14/foci14-anonymous.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 8 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Anonymous2020a&#34;&gt;&lt;/a&gt; Anonymous, A. A. Niaki, N. P. Hoang, P. Gill, and A. Houmansadr,
            “Triplet censors: Demystifying Great Firewall’s DNS censorship
            behavior,” in Free and Open Communications on the Internet. USENIX,
            2020. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/foci20-paper-anonymous_0.pdf&#34;&gt;https://www.usenix.org/system/files/foci20-paper-anonymous_0.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 9 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Hoang2021a&#34;&gt;&lt;/a&gt; N. P. Hoang, A. A. Niaki, J. Dalek, J. Knockel, P. Lin, B. Marczak,
            M. Crete-Nishihata, P. Gill, and M. Polychronakis, “How great
            is the Great Firewall? Measuring China’s DNS censorship,” in
            USENIX Security Symposium. USENIX, 2021. [Online]. Available:
            &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/sec21-hoang.pdf&#34;&gt;https://www.usenix.org/system/files/sec21-hoang.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 10 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:InternetSociety2023&#34;&gt;&lt;/a&gt;Internet Society. (2023, Dec.) When is the Internet not the Internet?
          [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.internetsociety.org/resources/internet-fragmentation/the-chinese-firewall/&#34;&gt;https://www.internetsociety.org/resources/internet-fragmentation/the-chinese-firewall/&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 11 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Anderson2012b&#34;&gt;&lt;/a&gt;D. Anderson, “Splinternet behind the Great Firewall of China: Once
          China opened its door to the world, it could not close it again,” Queue,
          vol. 10, no. 11, pp. 40–49, Nov. 2012. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://queue.acm.org/detail.cfm?id=2405036&amp;doi=10.1145%2F2390756.2405036&#34;&gt;https://queue.acm.org/detail.cfm?id=2405036&amp;doi=10.1145%2F2390756.2405036&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 12 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Duan2012a&#34;&gt;&lt;/a&gt; H. Duan, N. Weaver, Z. Zhao, M. Hu, J. Liang, J. Jiang, K. Li, and
          V. Paxson, “Hold-On: Protecting against on-path DNS poisoning,” in
          Securing and Trusting Internet Names. National Physical Laboratory,
          2012. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.icir.org/vern/papers/hold-on.satin12.pdf&#34;&gt;https://www.icir.org/vern/papers/hold-on.satin12.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 13 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:gfwrev-understanding-dns-poisoning&#34;&gt;&lt;/a&gt;gfwrev. (2009, Nov.) 深入理解GFW：DNS污染. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://gfwrev.blogspot.com/2009/11/gfwdns.html&#34;&gt;https://gfwrev.blogspot.com/2009/11/gfwdns.html&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 14 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Chai2019a&#34;&gt;&lt;/a&gt; Z. Chai, A. Ghafari, and A. Houmansadr, “On the importance of
            encrypted-SNI (ESNI) to censorship circumvention,” in Free and Open
            Communications on the Internet. USENIX, 2019. [Online]. Available:
            &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/foci19-paper_chai_update.pdf&#34;&gt;https://www.usenix.org/system/files/foci19-paper_chai_update.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 15 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Bock2021c&#34;&gt;&lt;/a&gt; K. Bock, G. Naval, K. Reese, and D. Levin, “Even censors have a
            backup: Examining China’s double HTTPS censorship middleboxes,”
            in Free and Open Communications on the Internet. ACM, 2021.
            [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://doi.org/10.1145/3473604.3474559&#34;&gt;https://doi.org/10.1145/3473604.3474559&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 16 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Hoang2024a&#34;&gt;&lt;/a&gt; N. P. Hoang, J. Dalek, M. Crete-Nishihata, N. Christin, V. Yegneswaran,
          M. Polychronakis, and N. Feamster, “GFWeb: Measuring the Great
          Firewall’s Web censorship at scale,” in USENIX Security Symposium.
          USENIX, 2024. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/sec24fall-prepub-310-hoang.pdf&#34;&gt;https://www.usenix.org/system/files/sec24fall-prepub-310-hoang.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 17 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Bock2020ESNI&#34;&gt;&lt;/a&gt; K. Bock, iyouport, Anonymous, L.-H. Merino, D. Fifield,
            A. Houmansadr, and D. Levin. (2020, Aug.) Exposing and
            circumventing China’s censorship of ESNI. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/43&#34;&gt;https://github.com/net4people/bbs/issues/43&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 18 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Master2023a&#34;&gt;&lt;/a&gt; A. Master and C. Garman, “A worldwide view of nation-state Internet
            censorship,” in Free and Open Communications on the Internet,
            2023. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.petsymposium.org/foci/2023/foci-2023-0008.pdf&#34;&gt;https://www.petsymposium.org/foci/2023/foci-2023-0008.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 19 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Nourin2023a&#34;&gt;&lt;/a&gt; S. Nourin, V. Tran, X. Jiang, K. Bock, N. Feamster, N. P. Hoang,
            and D. Levin, “Measuring and evading Turkmenistan’s internet
            censorship,” in The International World Wide Web Conference. ACM,
            2023. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://dl.acm.org/doi/abs/10.1145/3543507.3583189&#34;&gt;https://dl.acm.org/doi/abs/10.1145/3543507.3583189&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 20 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:rfc1035&#34;&gt;&lt;/a&gt; P. Mockapetris, “Domain names - implementation and specification,” RFC 1035, Nov. 1987. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.rfc-editor.org/info/rfc1035&#34;&gt;https://www.rfc-editor.org/info/rfc1035&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 21 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Lowe2007a&#34;&gt;&lt;/a&gt; G. Lowe, P. Winters, and M. L. Marcus, “The great DNS wall of China,” New York University, Tech. Rep., 2007. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://censorbib.nymity.ch/pdf/Lowe2007a.pdf&#34;&gt;https://censorbib.nymity.ch/pdf/Lowe2007a.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 22 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Bhaskar2022a&#34;&gt;&lt;/a&gt; A. Bhaskar and P. Pearce, “Many roads lead to Rome: How packet headers influence DNS censorship measurement,” in USENIX Security Symposium. USENIX, 2022. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/sec22-bhaskar.pdf&#34;&gt;https://www.usenix.org/system/files/sec22-bhaskar.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 23 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:rfc1918&#34;&gt;&lt;/a&gt; R. Moskowitz, D. Karrenberg, Y. Rekhter, E. Lear, and G. J. de Groot, “Address allocation for private Internets,” RFC 1918, Feb. 1996. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.rfc-editor.org/info/rfc1918&#34;&gt;https://www.rfc-editor.org/info/rfc1918&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 24 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:glibc-canary&#34;&gt;&lt;/a&gt; hugsy, “Playing with canaries,” Jan. 2017. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.elttam.com/blog/playing-with-canaries/#glibc-analysis&#34;&gt;https://www.elttam.com/blog/playing-with-canaries/#glibc-analysis&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 25 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:phaedrus_windows_update&#34;&gt;&lt;/a&gt; M. Phaedrus, “Some technical details behind the mundane Windows update,” 2022. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://great-computing.quora.com/Some-technical-details-behind-the-mundane-Windows-Update-https-www-quora-com-Does-the-Windows-update-use-HTTP-answer&#34;&gt;https://great-computing.quora.com/Some-technical-details-behind-the-mundane-Windows-Update-https-www-quora-com-Does-the-Windows-update-use-HTTP-answer&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 26 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:MaxMind&#34;&gt;&lt;/a&gt; “MaxMind GeoLite2 geolocation database.” [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://dev.maxmind.com/geoip/geolite2-free-geolocation-data&#34;&gt;https://dev.maxmind.com/geoip/geolite2-free-geolocation-data&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 27 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:zmap&#34;&gt;&lt;/a&gt; Z. Durumeric, E. Wustrow, and J. A. Halderman, “ZMap: Fast Internet-wide scanning and its security applications,” in USENIX Security Symposium. USENIX, Aug. 2013. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/conference/usenixsecurity13/technical-sessions/paper/durumeric&#34;&gt;https://www.usenix.org/conference/usenixsecurity13/technical-sessions/paper/durumeric&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 28 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:cngov_decree_292&#34;&gt;&lt;/a&gt; State Council of the People’s Republic of China, “互联网信息服务管理办法 (Measures for the Administration of Internet Information Services),” Sep. 2000. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.gov.cn/gongbao/content/2000/content_60531.htm&#34;&gt;https://www.gov.cn/gongbao/content/2000/content_60531.htm&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 29 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Bock2021b&#34;&gt;&lt;/a&gt; K. Bock, A. Alaraj, Y. Fax, K. Hurley, E. Wustrow, and D. Levin, “Weaponizing middleboxes for TCP reflected amplification,” in USENIX Security Symposium. USENIX, 2021. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/sec21-bock.pdf&#34;&gt;https://www.usenix.org/system/files/sec21-bock.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 30 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Alaraj2023a&#34;&gt;&lt;/a&gt; A. Alaraj, K. Bock, D. Levin, and E. Wustrow, “A global measurement of routing loops on the Internet,” in Passive and Active Measurement. Springer Nature Switzerland, 2023, pp. 373–399. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://link.springer.com/chapter/10.1007/978-3-031-28486-1_16&#34;&gt;https://link.springer.com/chapter/10.1007/978-3-031-28486-1_16&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 31 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:ip2location&#34;&gt;&lt;/a&gt; “IP2Location LITE IP address geolocation database.” [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.ip2location.com/database/ip2location&#34;&gt;https://www.ip2location.com/database/ip2location&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 32 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:caida-asn&#34;&gt;&lt;/a&gt; CAIDA, “CAIDA AS to organization mapping dataset.” [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.caida.org/catalog/datasets/request_user_info_forms/as_organizations/&#34;&gt;https://www.caida.org/catalog/datasets/request_user_info_forms/as_organizations/&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 33 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Sparks2012a&#34;&gt;&lt;/a&gt; Sparks, Neo, Tank, Smith, and Dozer, “The collateral damage of Internet censorship by DNS injection,” SIGCOMM Computer Communication Review, vol. 42, no. 3, pp. 21–27, 2012. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://conferences.sigcomm.org/sigcomm/2012/paper/ccr-paper266.pdf&#34;&gt;https://conferences.sigcomm.org/sigcomm/2012/paper/ccr-paper266.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 34 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:proxies-lie&#34;&gt;&lt;/a&gt; Z. Weinberg, S. Cho, N. Christin, V. Sekar, and P. Gill, “How to catch when proxies lie: Verifying the physical locations of network proxies with active geolocation,” in Internet Measurement Conference. ACM, 2018. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.contrib.andrew.cmu.edu/~nicolasc/publications/Weinberg-IMC18.pdf&#34;&gt;https://www.contrib.andrew.cmu.edu/~nicolasc/publications/Weinberg-IMC18.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 35 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:ipgeolocation-io&#34;&gt;&lt;/a&gt; “IPGeolocation.io IP geolocation API.” [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://ipgeolocation.io/documentation/ip-geolocation-api.html&#34;&gt;https://ipgeolocation.io/documentation/ip-geolocation-api.html&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 36 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:team-cymru-asn&#34;&gt;&lt;/a&gt; Team Cymru, “Team Cymru IP to ASN lookup v1.0.” [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://asn.cymru.com/&#34;&gt;https://asn.cymru.com/&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 37 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Mexico2021dns&#34;&gt;&lt;/a&gt; Q. Lone. (2022, Apr.) Detecting DNS root manipulation. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://labs.ripe.net/author/qasim-lone/detecting-dns-root-manipulation/&#34;&gt;https://labs.ripe.net/author/qasim-lone/detecting-dns-root-manipulation/&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 38 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Nosyk2023a&#34;&gt;&lt;/a&gt; Y. Nosyk, Q. Lone, Y. Zhauniarovich, C. H. Gañán, E. Aben, G. C. M. Moura, S. Tajalizadehkhoob, A. Duda, and M. Korczy´nski, “Intercept and inject: DNS response manipulation in the wild,” in Passive and Active Measurement. Springer Nature Switzerland, 2023. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://link.springer.com/chapter/10.1007/978-3-031-28486-1_19&#34;&gt;https://link.springer.com/chapter/10.1007/978-3-031-28486-1_19&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 39 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Dong2002a&#34;&gt;&lt;/a&gt; B. Dong, “A report about national DNS spoofing in China on Sept. 28th,” Dynamic Internet Technology, Inc., Tech. Rep., Oct. 2002. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://web.archive.org/web/20021015121616/http://www.dit-inc.us/hj-09-02.html&#34;&gt;https://web.archive.org/web/20021015121616/http://www.dit-inc.us/hj-09-02.html&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 40 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Zittrain2003a&#34;&gt;&lt;/a&gt; J. Zittrain and B. G. Edelman, “Internet filtering in China,” IEEE Internet Computing, vol. 7, no. 2, pp. 70–77, Mar. 2003. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://nrs.harvard.edu/urn-3:HUL.InstRepos:9696319&#34;&gt;https://nrs.harvard.edu/urn-3:HUL.InstRepos:9696319&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 41 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Farnan2016a&#34;&gt;&lt;/a&gt; O. Farnan, A. Darer, and J. Wright, “Poisoning the well – exploring the Great Firewall’s poisoned DNS responses,” in Workshop on Privacy in the Electronic Society. ACM, 2016. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://dl.acm.org/authorize?N25517&#34;&gt;https://dl.acm.org/authorize?N25517&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 42 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Pearce2017b&#34;&gt;&lt;/a&gt; P. Pearce, B. Jones, F. Li, R. Ensafi, N. Feamster, N. Weaver, and V. Paxson, “Global measurement of DNS manipulation,” in USENIX Security Symposium. USENIX, 2017. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/usenixsecurity17/sec17-pearce.pdf&#34;&gt;https://www.usenix.org/system/files/conference/usenixsecurity17/sec17-pearce.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 43 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:klzgrad-gist-dns-compression-pointer-mutation&#34;&gt;&lt;/a&gt; klzgrad. (2014, Nov.) DNS compression pointer mutation. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://gist.github.com/klzgrad/f124065c0616022b65e5&#34;&gt;https://gist.github.com/klzgrad/f124065c0616022b65e5&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 44 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Sakamoto2024a&#34;&gt;&lt;/a&gt; Sakamoto and E. Wedwards, “Bleeding wall: A hematologic examination on the Great Firewall,” in Free and Open Communications on the Internet, 2024. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.petsymposium.org/foci/2024/foci-2024-0002.pdf&#34;&gt;https://www.petsymposium.org/foci/2024/foci-2024-0002.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 45 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:kohno2023ethical&#34;&gt;&lt;/a&gt; T. Kohno, Y. Acar, and W. Loh, “Ethical frameworks and computer security trolley problems: Foundations for conversations,” in 32nd USENIX Security Symposium (USENIX Security 23), 2023, pp. 5145–5162. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://securityethics.cs.washington.edu/&#34;&gt;https://securityethics.cs.washington.edu/&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 46 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Tschantz2016a&#34;&gt;&lt;/a&gt; M. C. Tschantz, S. Afroz, Anonymous, and V. Paxson, “SoK: Towards grounding censorship circumvention in empiricism,” in Symposium on Security &amp; Privacy. IEEE, 2016. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.eecs.berkeley.edu/~sa499/papers/oakland2016.pdf&#34;&gt;https://www.eecs.berkeley.edu/~sa499/papers/oakland2016.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 47 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Xu2011a&#34;&gt;&lt;/a&gt; X. Xu, Z. M. Mao, and J. A. Halderman, “Internet censorship in China: Where does the filtering occur?” in Passive and Active Measurement Conference. Springer, 2011, pp. 133–142. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://web.eecs.umich.edu/~zmao/Papers/china-censorship-pam11.pdf&#34;&gt;https://web.eecs.umich.edu/~zmao/Papers/china-censorship-pam11.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 48 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Wang2017a&#34;&gt;&lt;/a&gt; Z. Wang, Y. Cao, Z. Qian, C. Song, and S. V. Krishnamurthy, “Your state is not mine: A closer look at evading stateful Internet censorship,” in Internet Measurement Conference. ACM, 2017. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.cs.ucr.edu/~krish/imc17.pdf&#34;&gt;https://www.cs.ucr.edu/~krish/imc17.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 49 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:stone2009your&#34;&gt;&lt;/a&gt; B. Stone-Gross, M. Cova, L. Cavallaro, B. Gilbert, M. Szydlowski, R. Kemmerer, C. Kruegel, and G. Vigna, “Your botnet is my botnet: analysis of a botnet takeover,” in Proceedings of the 16th ACM conference on Computer and communications security, 2009, pp. 635–647. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://sites.cs.ucsb.edu/~chris/research/doc/ccs09_botnet.pdf&#34;&gt;https://sites.cs.ucsb.edu/~chris/research/doc/ccs09_botnet.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 50 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:mirian2023line&#34;&gt;&lt;/a&gt; A. Mirian, A. Ukani, I. Foster, G. Akiwate, T. Halicioglu, C. T. Moore, A. C. Snoeren, G. M. Voelker, and S. Savage, “In the line of fire: Risks of DPI-triggered data collection,” in Proceedings of the 16th Cyber Security Experimentation and Test Workshop, 2023, pp. 57–63. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://arianamirian.com/docs/cset2023_fireye.pdf&#34;&gt;https://arianamirian.com/docs/cset2023_fireye.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 51 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:kanich2008spamalytics&#34;&gt;&lt;/a&gt; C. Kanich, C. Kreibich, K. Levchenko, B. Enright, G. M. Voelker, V. Paxson, and S. Savage, “Spamalytics: An empirical analysis of spam marketing conversion,” in Proceedings of the 15th ACM conference on Computer and communications security, 2008, pp. 3–14. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.icir.org/christian/publications/2008-ccs-spamalytics.pdf&#34;&gt;https://www.icir.org/christian/publications/2008-ccs-spamalytics.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 52 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Bock2021a&#34;&gt;&lt;/a&gt; K. Bock, P. Bharadwaj, J. Singh, and D. Levin, “Your censor is my censor: Weaponizing censorship infrastructure for availability attacks,” in Workshop on Offensive Technologies. IEEE, 2021. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.cs.umd.edu/~dml/papers/weaponizing_woot21.pdf&#34;&gt;https://www.cs.umd.edu/~dml/papers/weaponizing_woot21.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 53 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:CFR32_219_102&#34;&gt;&lt;/a&gt; U.S. Government, “Title 32 of the Code of Federal Regulations § 219.102: Definitions,” 2024. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.ecfr.gov/on/2024-11-27/title-32/subtitle-A/chapter-I/subchapter-M/part-219/section-219.102&#34;&gt;https://www.ecfr.gov/on/2024-11-27/title-32/subtitle-A/chapter-I/subchapter-M/part-219/section-219.102&lt;/a&gt;.
        &lt;/li&gt;
    &lt;/ol&gt;
&lt;/div&gt;
&lt;h2 id=&#34;an-example-ordered-pool-of-fake-ip-address&#34; data-heading-label=&#34;Appendix A: An example ordered pool of fake IP address&#34;&gt;
  &lt;a id=&#34;app:a-an-example-ordered-pool-of-fake-ip-address&#34;
      href=&#34;#app:a-an-example-ordered-pool-of-fake-ip-address&#34;&gt;
      &lt;span class=&#34;h2 sectionHead small-caps&#34;&gt;Appendix A&lt;/span&gt;
      &lt;span class=&#34;h2 sectionHead small-caps&#34;&gt;An example ordered pool of fake IP address&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;!-- l. 3285 --&gt;&lt;p class=&#39;indent&#39;&gt;  Below are the ordered lists of 592 IPv4 and 30 IPv6 addresses used by the Wallbleed-affected DNS injectors when forging responses
to A and AAAA queries, respectively, for the DNS name &lt;span class=&#39;cmtt-10&#39;&gt;4.tt&lt;/span&gt;. The pools for other injectors and other query names may differ &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;8&lt;/a&gt; § 3.2]&lt;/span&gt; &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;9&lt;/a&gt; § 5.2]&lt;/span&gt;. When an injector process injects a DNS response, it takes the next IP address from its ordered list,
cycling back to the beginning after reaching the end. This fact becomes evident when collecting injected responses at a
sufficiently high sample rate (around 100 packets per second or more). The selection of a “first” address in each cycle is
arbitrary.
&lt;/p&gt;&lt;!-- l. 3297 --&gt;&lt;p class=&#39;indent&#39;&gt;  We put the ordered lists to two uses: in &lt;a href=&#34;#sec:6c-analysis-of-responding-ip-addresses&#34;&gt;Section VI-C&lt;/a&gt;, to filter Wallbleed-related DNS responses from other
responses; and in &lt;a href=&#34;#sec:5b-the-ordering-of-phony-ip-addresses&#34;&gt;Section V-B&lt;/a&gt;, to isolate the multiple independent processes within each injector device.
Machine-readable versions are included with the data published alongside this paper.


&lt;div class=&#39;minipage&#39;&gt;
  &lt;dl class=&#39;enumerate-enumitem row&#39;&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;1)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;208.77.47.172&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;2)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.252.88.133&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;3)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.252.88.67&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;4)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.170.45&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;5)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.10.32&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;6)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;174.36.196.242&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;7)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;174.36.228.136&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;8)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;174.37.154.236&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;9)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;174.37.175.229&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;10)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;174.37.54.20&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;11)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.60.216.11&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;12)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.60.216.50&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;13)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.158.12&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;14)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.158.182&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;15)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.158.8&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;16)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.158.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;17)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.96&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;18)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.229&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;19)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.20&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;20)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.17.35&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;21)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.94.37&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;22)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.68.169&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;23)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.88.26&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;24)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.88.169&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;25)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.94.36&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;26)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.94.49&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;27)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.94.41&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;28)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.94.10&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;29)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.73.169&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;30)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.73.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.112.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;32)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.106.4&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;33)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.96.195&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;34)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.82.169&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;35)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.86.21&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;36)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.85.169&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;37)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.85.53&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;38)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.96.194&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;39)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.96.208&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;40)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.96.193&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;41)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.96.192&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;42)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.112.4&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;43)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.80.169&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;44)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.95.169&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;45)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.136&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;46)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.61.1&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;47)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.52&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;48)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.6&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;49)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.0.18&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;50)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.231&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;51)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.35&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;52)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;66.220.148.145&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;53)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.95.34&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;54)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.95.48&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;55)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.252.105.21&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;56)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.95.35&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;57)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.0.35&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;58)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.252.108.21&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;59)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.11.40&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;60)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.167&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;61)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.150.39&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;62)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.230&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;63)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.208&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;64)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.158.104&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;65)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.156.38&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;66)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;96.44.137.28&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;67)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.50.221.20&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;68)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.30.25.21&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.197.153.180&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;70)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.162.134.178&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;71)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;65.49.26.99&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;72)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;65.49.26.98&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;73)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;65.49.26.97&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;74)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;50.23.209.199&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;75)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.150.45&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;76)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.150.44&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;77)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.150.43&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;78)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.150.40&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;79)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.150.13&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;80)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.150.12&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;81)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.239&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;82)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.238&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;83)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.237&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;84)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.236&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;85)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.235&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;86)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.234&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;87)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.232&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;88)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.231&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;89)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.210&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;90)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.207&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;91)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.206&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;92)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.205&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;93)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.203&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;94)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.202&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;95)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.201&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;96)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;97)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.89&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;98)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.8&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;99)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.7&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;100)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.6&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;101)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.247&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;102)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.246&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.222&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.206&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;105)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.202&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;106)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.201&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;107)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.15&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.147&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;109)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.106&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;110)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.102&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;111)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.156.75&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;112)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.156.71&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;113)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.156.39&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;114)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.156.11&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;115)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.156.103&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;116)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;184.72.1.148&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;117)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;182.50.139.56&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;118)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.255.213.90&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;119)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.255.209.47&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;120)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.252.248.244&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;121)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.236.212.42&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;122)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.236.182.137&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;123)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.234.53.168&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;124)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.231.12.107&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;125)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.208.182.68&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;126)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;168.143.171.93&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;127)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;168.143.171.189&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;168.143.171.186&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;129)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;168.143.171.154&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;130)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;168.143.162.58&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;131)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;168.143.162.42&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;132)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.250.157&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;133)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.250.155&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;134)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.250.148&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;135)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.245.93&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;136)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.245.43&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;137)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.245.29&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;138)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.245.253&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;139)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.245.244&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;140)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.245.221&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;141)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.245.212&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;142)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.245.189&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;143)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.245.180&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;144)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.245.157&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;145)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.245.125&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;146)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.93&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;147)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.61&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;148)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.29&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;149)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.253&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;150)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.244&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;151)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.221&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;152)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.218&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;153)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.212&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;154)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.189&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;155)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.180&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;156)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.157&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.125&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;158)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.121.243.77&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;159)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.121.243.76&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;160)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.121.243.75&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;161)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.121.243.107&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.121.243.106&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;163)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;122.248.226.57&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;164)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;159.106.121.75&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;165)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;59.24.3.173&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;166)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;66.220.146.94&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;167)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;66.220.147.11&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;168)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;66.220.149.18&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;169)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;66.220.149.32&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;170)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.171.224.40&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;171)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.171.227.37&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;172)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.171.228.74&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.171.229.11&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;174)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.171.229.73&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;175)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.171.234.48&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;176)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.171.242.11&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;177)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.171.247.32&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;178)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.171.247.71&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;179)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.176.143&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;180)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.176.15&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;181)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.176.59&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;182)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.178.13&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;183)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.180.173&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;184)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.181.12&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.184.14&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;186)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.184.142&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;187)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.184.30&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;188)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.186.30&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;189)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.186.31&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;190)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.187.12&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;191)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.190.26&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;192)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;67.15.100.252&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;193)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;67.15.129.210&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;194)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.156.40&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;195)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.156.7&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;196)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.158.190&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;197)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.209&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;198)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.97&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.136&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;200)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.244&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;201)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.150.49&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;88.191.249.182&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;203)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;88.191.249.183&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;204)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;208.101.21.43&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;205)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;208.101.60.87&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;206)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;208.43.170.231&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;207)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;208.43.237.140&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;208)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;67.228.102.32&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;209)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;67.228.235.91&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;210)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;67.228.235.93&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;211)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;74.86.118.24&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;212)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;74.86.12.172&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;213)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;74.86.12.173&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;214)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;74.86.142.55&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;215)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;74.86.151.162&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;216)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;74.86.151.167&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;217)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;74.86.17.48&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;218)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;74.86.226.234&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;219)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;74.86.228.110&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;220)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;74.86.3.208&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;221)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;75.126.115.192&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;222)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;75.126.124.162&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;223)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;75.126.135.131&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;224)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;75.126.150.210&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;225)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;75.126.164.178&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;226)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;75.126.33.156&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;227)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;205.186.152.122&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;228)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;64.13.192.74&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;229)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;64.13.192.76&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;230)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.16.252.55&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;231)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.16.251.55&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;232)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;210.56.51.193&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;233)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;23.234.30.58&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;234)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;210.56.51.192&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;235)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.53.137.209&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;236)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;156.233.67.243&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;237)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;154.85.102.32&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;238)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;154.92.16.97&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;239)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;154.83.15.20&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;240)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;154.85.102.30&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;241)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;154.83.15.45&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;242)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;154.83.14.134&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;243)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.214.168.106&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;244)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;150.107.3.176&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;245)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.97.176.73&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;246)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.73.161.52&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;247)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.200.31.172&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;248)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;52.175.9.80&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;249)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;159.65.107.38&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;250)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;59.188.250.54&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;251)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;4.78.139.50&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;252)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;93.179.102.140&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;253)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;148.163.48.215&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;254)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;54.89.135.129&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;255)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;4.78.139.54&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;256)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;23.101.24.70&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;257)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.193.116.105&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;258)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.220.12.226&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;259)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;98.159.108.61&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;260)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;50.87.93.246&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;261)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;47.88.58.234&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;262)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;98.159.108.58&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;263)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;67.230.169.182&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;264)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;159.138.20.20&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;265)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;124.11.210.175&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;266)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;98.159.108.57&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;267)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;111.243.214.169&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;268)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.42.176.244&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;269)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;210.209.84.142&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;270)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;107.181.166.244&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;271)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;98.159.108.71&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;272)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;23.225.141.210&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;273)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;114.43.24.59&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;274)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;45.77.186.255&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;275)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.182.98.125&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;276)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;45.114.11.25&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;277)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;203.111.254.117&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;278)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.240.180.117&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;279)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;45.114.11.238&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;280)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;43.226.16.8&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;281)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;116.89.243.8&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;282)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;80.87.199.46&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;283)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;198.27.124.186&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;284)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;39.109.122.128&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;285)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.228.130.27&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;286)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;118.107.180.216&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;287)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.97.3.19&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;288)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.56.16.112&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;289)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;115.126.100.160&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;290)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;118.193.202.219&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;291)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;118.184.78.78&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;292)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;118.193.240.41&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;293)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;118.184.26.113&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;294)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.39.76.66&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;295)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.240.182.55&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;296)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.230.123.190&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;297)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.246.246.144&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;298)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.200.30.143&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;299)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;118.193.240.37&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;300)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;198.44.185.131&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;301)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;211.104.160.39&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;302)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.228.130.61&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;303)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;122.10.85.4&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;304)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.226.246.99&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;305)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;208.31.254.33&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;306)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;50.117.117.42&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;307)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.15.8&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;308)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.13.8&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;309)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.1.33&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;310)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.12.5&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;311)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.87.34&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;312)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.91.33&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;313)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.90.33&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;314)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.87.33&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;315)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.90.19&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;316)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.95.18&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;317)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.87.19&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;318)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.83.34&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;319)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.84.34&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;320)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.85.34&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;321)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.82.33&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;322)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.76.99&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;323)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.76.65&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;324)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.75.12&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;325)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.71.19&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;326)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.70.33&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;327)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.7.5&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;328)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.70.13&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;329)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.67.33&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;330)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.7.8&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;331)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.92.5&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;332)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.91.6&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;333)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.84.2&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;334)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.87.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;335)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.83.2&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;336)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.85.2&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;337)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.75.5&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;338)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.70.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;339)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.57&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;340)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.204&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;341)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.128.16&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;342)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.58.15&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;343)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.45.6.103&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;344)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.128.203&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;345)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.165&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;346)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.63.177&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;347)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.252.115.53&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;348)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.17&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;349)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.128.210&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;350)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.211&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;351)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.130.52&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;352)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.5&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;353)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.59.19&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;354)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.85&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;355)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.129.6&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;356)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.252.114.101&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;357)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.252.115.59&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;358)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.252.115.49&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;359)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.63.53&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;360)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;192.133.77.197&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;361)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.62.41&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;362)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.234&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;363)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.128.40&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;364)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.128.96&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;365)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;192.133.77.189&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;366)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.128.14&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;367)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.59.95&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;368)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.104&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;369)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;192.133.77.191&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;370)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;192.133.77.145&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;371)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.57&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;372)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.45.7.185&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;373)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.208&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;374)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.186&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;375)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.208&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;376)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.252.114.11&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;377)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.129.37&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;378)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.62.75&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;379)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.58.85&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;380)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.185&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;381)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.45.7.97&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;382)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.93&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;383)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.229&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;384)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.182&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;385)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.128.195&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;386)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.45.6.57&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;387)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.63.163&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;388)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.58.177&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;389)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.59.61&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;390)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.63.75&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;391)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;392)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.128.238&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;393)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.21&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;394)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.252.115.153&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;395)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.58.157&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;396)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;192.133.77.59&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;397)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.128.205&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;398)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.62.21&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;399)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.130.118&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;400)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.228&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;401)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.130.66&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;402)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.45.7.189&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;403)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;192.133.77.133&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;404)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.45.7.165&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;405)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.130.145&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;406)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.128&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;407)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.129.36&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;408)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.252.115.221&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;409)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.252.114.61&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;410)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.58.105&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;411)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.252.115.169&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;412)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.246&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;413)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.248&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;414)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.63&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;415)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.130.117&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;416)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.52&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;417)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.62.17&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;418)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.129.164&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;419)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;179.60.193.16&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;420)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.3.50&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;421)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.16.50&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;422)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.2.50&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;423)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.60.218.50&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;424)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.83.1&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;425)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.6.1&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;426)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.8.1&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;427)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.95.17&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;428)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.17.14&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;429)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.2.36&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;430)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.60.216.36&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;431)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.60.219.36&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;432)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.2.14&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;433)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.60.216.169&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;434)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.8.50&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;435)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.8.41&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;436)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.3.8&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;437)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.60.219.41&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;438)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.12.50&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;439)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.95.38&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;440)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.81.4&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;441)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.67.19&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;442)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.6.35&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;443)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.94.7&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;444)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.20.18&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;445)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;179.60.193.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;446)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.94.23&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;447)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.80.54&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;448)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.69.169&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;449)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.67.41&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;450)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.64.7&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;451)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.21.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;452)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.20.8&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;453)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.17.41&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;454)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.18.18&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;455)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.10.41&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;456)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.1.50&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;457)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.12.35&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;458)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.1.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;459)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.244.217.42&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;460)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.244.209.150&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;461)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;209.95.56.60&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;462)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.95.37&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;463)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.80.37&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;464)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.8.36&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;465)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.9.36&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;466)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.17.36&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;467)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.12.36&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;468)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.10.36&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;469)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.252.108.3&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;470)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.69.245&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;471)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.244&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;472)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.45.246&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;473)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.71&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;474)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.32.6&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;475)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.18.129&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;476)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.80.5&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;477)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.32.10&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;478)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.17.131&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;479)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.32.15&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;480)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.2.6&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;481)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.80.6&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;482)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.80.3&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;483)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.2.3&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;484)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.34.133&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;485)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.32.12&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;486)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.1.8&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;487)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.18.133&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;488)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.32.2&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;489)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.2.5&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;490)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.32.5&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;491)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.32.13&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;492)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.32.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;493)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.82.7&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;494)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.7.1&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;495)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;119.28.87.227&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;496)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.95.33&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;497)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.23.124.189&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;498)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.23.125.189&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;499)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;130.211.15.150&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;500)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.31.142.88&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;501)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;38.121.72.166&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;502)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;65.49.68.152&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;503)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;204.79.197.217&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;504)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;54.234.18.200&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;505)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;52.58.1.161&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;506)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;184.173.136.86&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;507)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;174.37.243.85&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;508)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.171.224.36&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;509)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.161.20&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;510)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.161.83&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;511)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.162.104&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;512)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.162.102&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;513)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.162.109&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;514)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.162.115&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;515)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.163.106&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;516)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.162.98&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;517)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.162.31&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;518)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.163.102&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;519)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.163.112&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;520)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.163.108&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;521)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.163.116&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;522)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.163.117&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;523)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.147&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;524)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.11&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;525)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.139&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;526)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.141&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;527)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.211&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;528)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.173&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;529)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.212&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;530)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.189&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;531)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.48&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;532)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.53&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;533)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.62&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;534)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.8&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;535)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;536)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.166.137&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;537)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.166.253&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;538)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.166.61&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;539)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.166.148&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;540)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.166.42&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;541)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.166.142&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;542)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.167.147&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;543)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.166.49&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;544)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.166.57&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;545)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.166.62&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;546)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.166.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;547)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.167.30&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;548)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.167.156&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;549)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.167.148&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;550)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.167.165&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;551)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.167.158&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;552)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.169.171&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;553)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.167.159&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;554)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.167.167&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;555)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.167.174&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;556)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.169.178&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;557)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.169.175&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;558)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.169.174&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;559)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.169.179&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;560)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.169.181&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;561)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.170.39&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;562)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.170.33&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;563)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.169.37&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;564)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.169.185&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;565)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.169.186&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;566)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.169.46&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;567)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.169.55&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;568)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.169.54&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;569)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.170.26&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;570)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.170.41&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;571)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.170.43&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;572)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.170.44&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;573)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.172.1&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;574)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.170.52&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;575)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.121.146.101&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;576)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.172.200&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;577)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.172.232&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;578)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.172.208&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;579)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.172.204&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;580)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.173.207&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;581)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.121.146.235&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;582)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.121.243.228&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;583)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.121.146.109&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;584)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.121.146.228&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;585)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.20&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;586)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.59&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;587)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.121.243.235&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;588)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.117&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;589)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.155&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;590)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.149&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;591)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.85&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;592)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.91&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

  &lt;/dl&gt;
&lt;/div&gt;


&lt;!-- l. 3309 --&gt;&lt;p class=&#39;indent&#39;&gt;  Every entry in the IPv6 pool contains the pattern ‘face:b00c’, which is characteristic of genuine IP addresses of
facebook.com. The GFW’s use of well-known addresses of Internet companies has been noted in the past &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;8&lt;/a&gt; §3.2]&lt;/span&gt;, &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;9&lt;/a&gt; §5.1]&lt;/span&gt;.
&lt;/p&gt;&lt;!-- l. 3315 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;/p&gt;
&lt;div class=&#39;minipage&#39;&gt;
  &lt;dl class=&#39;enumerate-enumitem row&#39;&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;1)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f130:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f12c:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;3)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f12c:0183:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;4)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f127:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;5)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f126:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;6)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f129:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;7)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f12a:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;8)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f11f:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;9)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f127:0283:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;10)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f11c:8083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;11)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f11c:8183:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;12)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f11b:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;13)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f11a:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;14)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f10e:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;15)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f117:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;16)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f10c:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;17)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f112:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;18)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f111:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;19)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f10f:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;20)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f10d:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;21)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f10d:0183:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;22)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f10c:0283:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;23)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f10a:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;24)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f102:0183:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;25)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f107:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;26)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f134:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;27)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f136:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;28)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f12d:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;29)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f134:0183:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;30)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f131:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

  &lt;/dl&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a id=&#39;x1-691r2&#39;&gt;&lt;/a&gt;
&lt;/p&gt;&lt;!-- l. 3317 --&gt;&lt;p class=&#39;indent&#39;&gt;
&lt;/p&gt;&lt;!-- l. 3317 --&gt;
&lt;h2 id=&#34;reverse-engineered-dns-parsing-and-injection-algorithm&#34; data-heading-label=&#34;Appendix B: Reverse-engineered DNS parsing and injection algorithm&#34;&gt;
  &lt;a id=&#34;app:b-reverse-engineered-dns-parsing-and-injection-algorithm&#34;
      href=&#34;#app:b-reverse-engineered-dns-parsing-and-injection-algorithm&#34;&gt;
      &lt;span class=&#34;h2 sectionHead small-caps&#34;&gt;Appendix B&lt;/span&gt;
      &lt;span class=&#34;h2 sectionHead small-caps&#34;&gt;Reverse-engineered DNS parsing and injection algorithm&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;!-- l. 3343 --&gt;&lt;p class=&#39;indent&#39;&gt;  The below C code is our attempt to reverse-engineer the faulty DNS query processing algorithm that caused Wallbleed.
It reproduces the behavior of the DNS injectors affected by Wallbleed in all important respects. If &lt;span class=&#39;cmtt-10&#39;&gt;PATCHED &lt;/span&gt;is false, the code
implements the Wallbleed v1 vulnerability; if true, the partially patched Wallbleed v2 (see &lt;a href=&#39;#sec:3c-Incomplete-patch-wallbleed-v2&#39;&gt;Section III-C&lt;/a&gt; and &lt;a href=&#39;#sec:7-monitoring-the-censors-patching-behavior&#39;&gt;Section VII&lt;/a&gt;).
&lt;/p&gt;&lt;!-- l. 3360 --&gt;&lt;p class=&#39;indent&#39;&gt;  Having observed a DNS query and copied it to memory, the injection device parses out the QNAME to decide whether the query is
one to be censored, and prepares a response if so. There are several bugs, the most significant of which is a failure to bounds-check
DNS name label lengths against the message size.
&lt;/p&gt;
&lt;div class=&#39;ajdustwidth&#39; style=&#39;margin-left:0em;margin-right:0em;&#39;&gt;
  &lt;!-- l. 655 --&gt;
  &lt;pre class=&#39;lstinputlisting&#39;
      id=&#39;listing-1&#39;&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-682r1&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 1&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;Check if msg is a DNS query for a name that should be censored.&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-683r2&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 2&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;If so, change msg into a response in place and return the length&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-684r3&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 3&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;of the response. If not, return 0.&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-685r4&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 4&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;size_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;response(unsigned char *msg, size_t msg_len)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-686r5&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 5&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-687r6&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 6&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(msg_len &amp;lt; 12 || (msg[2] &amp;amp; 0x80) != 0)&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;No response if message is too short or not a query.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-688r7&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 7&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;return&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;0;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-689r8&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 8&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-690r9&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 9&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;char&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;qname[126];&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;The dot-delimited, null-terminated representation of &lt;br&gt; QNAME will be stored in qname.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-691r10&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;10&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;size_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;qname_i = 0;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-692r11&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;11&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;QNAME parsing loop.&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-693r12&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;12&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;size_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;msg_i = 12;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;msg_ptr is meant to track msg_i and point just past &lt;br&gt; QNAME at the end of the loop.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-694r13&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;13&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;unsigned&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;char *msg_ptr;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-695r14&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;14&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;for&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(;;) {&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-696r15&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;15&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;size_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;label_len = msg[msg_i++];&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Bug: no check that msg_i is in bounds.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-697r16&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;16&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;msg_ptr&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;= &amp;amp;msg[msg_i];&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Sync msg_ptr with msg_i.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-698r17&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;17&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-699r18&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;18&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(label_len == 0)&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Exit condition 1: an empty label.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-700r19&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;19&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;            &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;break&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-701r20&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;20&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(msg_i &amp;gt; msg_len)&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Exit condition 2: the label length prefix just parsed &lt;br&gt; was outside the end message bounds.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-702r21&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;21&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;            &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;break&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-703r22&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;22&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-715r23&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;23&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;#&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;!PATCHED&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-704r23&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;24&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(qname_i + 1 &amp;gt; 124)&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Exit condition 3: not enough room for at least one &lt;br&gt; byte of label (with a dot and a null terminator). &lt;br&gt; Append a dot to qname, except before the first label.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-705r24&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;25&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;            &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;break&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-718r26&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;26&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;#&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;else&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39; style=&#39;color:#808080&#39;&gt;&lt;a id=&#39;x1-719r27&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;27&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;msg_i&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;+= MIN(label_len, 124 - qname_i);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39; style=&#39;color:#808080&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Take as much of the label as will fit, leaving room for &lt;br&gt; a dot and a null terminator.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39; style=&#39;color:#808080&#39;&gt;&lt;a id=&#39;x1-720r28&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;28&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39; style=&#39;color:#808080&#39;&gt;&lt;a id=&#39;x1-721r29&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;29&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(qname_i + label_len &amp;gt; 124)&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39; style=&#39;color:#808080&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Exit condition 4: label too long to fit in qname. &lt;br&gt; Bug: msg_ptr ≠ msg + msg_i in this case.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39; style=&#39;color:#808080&#39;&gt;&lt;a id=&#39;x1-722r30&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;30&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;            &lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;break&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-723r31&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;31&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;#&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;endif&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-724r32&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;32&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-725r33&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;33&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(qname_i &amp;gt; 0)&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Append a dot to qname, if not the first label.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-707r26&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;34&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;            &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;qname&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;qname_i&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;++]&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;= ’.’;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-708r27&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;35&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;size_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;n = MIN(label_len, 125 - qname_i);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Copy as much of the label as will fit in qname. &lt;br&gt; Bug: no check that msg_ptr + n is in bounds.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-709r28&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;36&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;memcpy&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;qname&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;+ qname_i, msg_ptr, n);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-710r29&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;37&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;qname_i&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;+= n;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-730r38&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;38&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;#&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;!PATCHED&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-711r30&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;39&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;msg_i&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;+= n;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-712r31&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;40&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(n &amp;lt; label_len)&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Exit condition 4: label too long to fit in qname. &lt;br&gt; Bug: qname_ptr ≠ msg_ptr in this case.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-713r32&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;41&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;            &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;break&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-734r42&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;42&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;#&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;endif&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-714r33&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;43&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-715r34&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;44&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;qname&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;qname_i&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;= ’\0’;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Null-terminate the dot-delimited name string.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-716r35&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;45&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-717r36&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;46&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(!name_matches_blocklist(qname))&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Does the extracted QNAME string match the blocklist? &lt;br&gt; If not, do not send a response.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-718r37&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;47&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;return&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;0;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-719r38&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;48&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-720r39&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;49&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;Read QTYPE.&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-721r40&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;50&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint16_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;qtype&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;ntohs(*(uint16_t *) msg_ptr);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;msg_ptr may not agree with msg_i here.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-743r51&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;51&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;#&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;PATCHED&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39; style=&#39;color:#808080&#39;&gt;&lt;a id=&#39;x1-744r52&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;52&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;Read QCLASS, enforce QCLASS == 1.&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39; style=&#39;color:#808080&#39;&gt;&lt;a id=&#39;x1-745r53&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;53&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint16_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;qclass = ntohs(*(uint16_t *) (msg_ptr + 2));&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39; style=&#39;color:#808080&#39;&gt;&lt;a id=&#39;x1-746r54&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;54&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(qclass != 1)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39; style=&#39;color:#808080&#39;&gt;&lt;a id=&#39;x1-747r55&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;55&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;return&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;0;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-748r56&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;56&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;#&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;endif&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-723r42&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;57&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;Change the query into a response.&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-724r43&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;58&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;size_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;resp_len = msg_i + 4;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Add 4 bytes for the query’s QTYPE and QCLASS.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-725r44&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;59&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;((msg[2] &amp;amp; 0x01) == 0)&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;If the RD flag was not set in the query, set AD in the &lt;br&gt; response.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-726r45&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;60&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;*(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint16_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;*) &amp;amp;msg[2] = htons(0x8400);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-727r46&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;61&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;else&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;If RD was set in the query, set RD and RA in the &lt;br&gt; response.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-728r47&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;62&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;*(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint16_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;*) &amp;amp;msg[2] = htons(0x8180);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-729r48&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;63&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;*(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint16_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;*) &amp;amp;msg[ 4] = htons(1);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;QDCOUNT = 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-730r49&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;64&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;*(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint16_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;*) &amp;amp;msg[ 6] = htons(1);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;ANCOUNT = 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-731r50&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;65&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;*(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint16_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;*) &amp;amp;msg[ 8] = htons(0);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;NSCOUNT = 0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-732r51&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;66&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;*(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint16_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;*) &amp;amp;msg[10] = htons(0);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;ARCOUNT = 0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-733r52&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;67&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;Append an answer section according to QTYPE.&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-734r53&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;68&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;const&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;unsigned char *rdata;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-735r54&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;69&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint32_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;rdlength;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-736r55&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;70&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(qtype == 28) {&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Type AAAA queries get a type AAAA response.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-737r56&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;71&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;rdlength&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;= 16;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-738r57&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;72&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;rdata&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;= next_aaaa_address();&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Get the next IPv6 address from the cyclic pool.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-739r58&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;73&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;else {&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;All other QTYPEs get a type A response.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-740r59&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;74&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;qtype&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;= 1;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-741r60&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;75&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;rdlength&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;= 4;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-742r61&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;76&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;rdata&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;= next_a_address();&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Get the next IPv4 address from the cyclic pool.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-743r62&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;77&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-744r63&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;78&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint32_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;ttl = rand_in_range(64, 254);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;TTL is random between 64 and 254 inclusive.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-745r64&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;79&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;unsigned&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;char rr[] = {&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Construct a resource record.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-746r65&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;80&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;xc0&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;0x0c, // NAME&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Compression pointer pointing back to QNAME.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-747r66&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;81&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;0,&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;0,&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;     &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;TYPE placeholder&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-748r67&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;82&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;x00&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;0x01, // CLASS = IN&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-749r68&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;83&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;0,&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;0, 0, 0, // TTL placeholder&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-750r69&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;84&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;0,&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;0,&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;     &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;RDLENGTH placeholder&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-751r70&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;85&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;};&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-752r71&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;86&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;*(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint16_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;*) &amp;amp;rr[ 2] = htons(qtype);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Set QTYPE.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-753r72&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;87&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;*(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint32_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;*) &amp;amp;rr[ 6] = htonl(ttl);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Set TTL.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-754r73&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;88&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;*(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint16_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;*) &amp;amp;rr[10] = htons(rdlength);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Set RDLENGTH.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-755r74&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;89&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;memcpy&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;msg&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;+ resp_len, rr, sizeof(rr));&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Append the resource record up to RDATA.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-756r75&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;90&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;resp_len&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;+= sizeof(rr);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-757r76&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;91&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;memcpy&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;msg&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;+ resp_len, rdata, rdlength);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Append the RDATA (the false IP address).&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-758r77&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;92&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;resp_len&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;+= rdlength;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-759r78&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;93&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-760r79&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;94&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;return&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;resp_len;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;This query gets an injected response.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-761r80&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;95&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;!-- l. 3373 --&gt;&lt;p class=&#39;indent&#39;&gt;  We do not know exactly how a packet payload arrives in memory after being observed. It may be, for example, a software copy,
    or an automatic DMA transfer from the network interface. However it happens, a few minor peculiarities of the DNS
    injectors’ behavior are best explained as artifacts of how packets are copied into memory. These are: that the 18th
    byte of the memory buffer is always zero &lt;a href=&#39;#fn:minor-subtlety-implicit-null-terminator&#39;&gt;footnote 3&lt;/a&gt;; that at one time, the first 4 bytes of leaked memory were different
    from the others (“digest” bytes, &lt;a href=&#34;#sec:4b-the-four-digest-bytes&#34;&gt;Section IV-B&lt;/a&gt;); and that the &lt;span class=&#39;cmtt-10&#39;&gt;msg_len &lt;/span&gt;limit in the &lt;span class=&#39;cmtt-10&#39;&gt;response &lt;/span&gt;function
    above comes from the UDP header, not the number of bytes actually available in the packet (when those quantities
    differ).
    &lt;/p&gt;

&lt;div class=&#39;ajdustwidth&#39; style=&#39;margin-left:0em;margin-right:0em;&#39;&gt;
  &lt;!-- l. 678 --&gt;
  &lt;pre class=&#39;lstinputlisting&#39;
      id=&#39;listing-2&#39;&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-763r1&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 1&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;Copy an observed UDP packet payload to memory for analysis and&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-764r2&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 2&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;possible modification, and inject a response if it is a DNS&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-765r3&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 3&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;query for a name on the blocklist. hdr_len is the size of the&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-766r4&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 4&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;payload in the UDP header (not counting the header itself).&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-767r5&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 5&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;void&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;udp_packet_callback(const void *data, size_t data_len, size_t hdr_len)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-768r6&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 6&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-769r7&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 7&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;data_len&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;= MIN(data_len, hdr_len);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Trim packet payload to the size in the header.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-770r8&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 8&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;void&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;*work = allocate_memory(hdr_len + 28);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Memory for the query and a response record.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-771r9&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 9&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;memset&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;work&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;0x00, 18);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Clear the beginning of the buffer; see &lt;a href=&#39;#fn:minor-subtlety-implicit-null-terminator&#39;&gt;footnote 3&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-772r10&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;10&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;memcpy&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;work&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;data, data_len);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Copy the packet to working memory. The copy uses &lt;br&gt; data_len, but parsing uses hdr_len.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-773r11&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;11&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-774r12&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;12&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(USE_DIGEST)&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;“Digest” bytes (&lt;a href=&#34;#sec:4b-the-four-digest-bytes&#34;&gt;Section IV-B&lt;/a&gt;)&lt;/span&gt;, when present, are just &lt;br&gt; after the query. We are using a fixed byte pattern.&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-775r13&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;13&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;memset&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;work&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;+ data_len, ’D’, 4);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-776r14&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;14&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;size_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;resp_len = response(work, hdr_len);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Is this packet a DNS query that needs a response?&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-777r15&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;15&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(resp_len &amp;gt; 0)&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;If so, inject the response. We are omitting details of &lt;br&gt; spoofing the source address, etc.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-778r16&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;16&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;inject&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;work&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;resp_len);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-779r17&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;17&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;free_memory&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;work&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-780r18&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;18&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>Wallbleed（墙出血）：中国防火长城中的内存数据泄露漏洞</title>
        <link>https://gfw.report/publications/ndss25/zh/</link>
        <pubDate>Tue, 25 Feb 2025 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/publications/ndss25/zh/</guid>
        
        <description>&lt;!-- use CSS file --&gt;

&lt;!-- use paper-specific CSS --&gt;
&lt;link rel=&#34;stylesheet&#34; href=&#34;../ndss25.css&#34;&gt;

&lt;!-- Used to render latex syntax --&gt;
&lt;script type=&#34;text/javascript&#34; async
  src=&#34;https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML&#34;&gt;
&lt;/script&gt;

&lt;!-- Used to render Table of Content --&gt;
&lt;link href=&#34;./css/tocbot.css&#34; rel=&#39;stylesheet&#39; type=&#39;text/css&#39; /&gt;
&lt;script src=&#34;./js/tocbot.min.js&#34;&gt;&lt;/script&gt;
&lt;script&gt;
    document.addEventListener(&#39;DOMContentLoaded&#39;, function() {
    tocbot.init({
        tocSelector: &#39;.js-toc&#39;,
        contentSelector: &#39;.js-toc-content&#39;,
        headingSelector: &#39;h2, h3&#39;,
        collapseDepth: 3,
        activeLinkClass: &#39;&#39;
    });
    });
&lt;/script&gt;

&lt;!-- &lt;div class=&#39;tcolorbox tcolorbox&#39; id=&#39;tcolobox-3&#39;&gt;
&lt;div class=&#39;tcolorbox-content&#39;&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-x-x-90&#39;&gt;NDSS 2025声明&lt;/span&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;：NDSS 2025程序委员会赞赏本论文所做的技术贡献、对先前工作的验证（这些工作原本无法直接复现），以及对未来反审查研究的促进作用，但同时也认为本文具有高度争议性，因为作者进行的实验引发了伦理问题。本文经过了常规程序委员会审查之外的多个利益相关方的严格审查，包括NDSS&#39;25伦理审查委员会的评估以及指导委员会和ISOC的咨询。虽然在数据汇总和删除后，伦理模糊性被认为得到了补救，但作者从其机构获得的IRB豁免决定本应受到质疑和否决，因为其中涉及明显的人身风险。质疑这样的IRB决定应当是安全研究社区研究人员的责任。此外，程序委员会认为自己无权对本研究的法律影响做出判断。我们承认在更广泛的审查过程中，对于该研究的收益是否大于风险存在不同意见。我们希望接受本文能帮助社区理解研究工作的潜在影响，建立更好的机制来处理类似案例，并有助于制定关于何时以及如何进行此类攻击性研究的公认标准。接受本文并不意味着程序委员会认可所使用的方法。我们建议作者在进行可能影响关键目标的安全研究之前/期间寻求法律建议（如适用，可咨询不同司法管辖区的意见）。&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt; --&gt;
&lt;h1 class=&#34;titleHead&#34;&gt;Wallbleed（墙出血）：中国防火长城中的内存数据泄露漏洞&lt;/h1&gt;

&lt;div class=&#34;authors&#34;&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Shencha Fan&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;GFW Report&lt;/p&gt;
        &lt;p class=&#34;author-email&#34;&gt;gfw.report@protonmail.com&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Jackson Sippe&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;University of Colorado Boulder&lt;/p&gt;
        &lt;p class=&#34;author-email&#34;&gt;Jackson.Sippe@colorado.edu&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Sakamoto San&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;Shinonome Lab&lt;/p&gt;
        &lt;p class=&#34;author-email&#34;&gt;54k4m070@proton.me&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Jade Sheffey&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;University of Massachusetts Amherst&lt;/p&gt;
        &lt;p class=&#34;author-email&#34;&gt;jsheffey@cs.umass.edu&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;David Fifield&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;&lt;br&gt;&lt;/p&gt;
        &lt;p class=&#34;author-email&#34;&gt;david@bamsoftware.com&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Amir Houmansadr&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;University of Massachusetts Amherst&lt;/p&gt;
        &lt;p class=&#34;author-email&#34;&gt;amir@cs.umass.edu&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Elson Wedwards&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;&lt;br&gt;&lt;/p&gt;
        &lt;p class=&#34;author-email&#34;&gt;ElsonWedwards@proton.me&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Eric Wustrow&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;University of Colorado Boulder&lt;/p&gt;
        &lt;p class=&#34;author-email&#34;&gt;ewust@colorado.edu&lt;/p&gt;
    &lt;/div&gt;

&lt;/div&gt;
&lt;!-- Table of Contents place holder --&gt;
&lt;div class=&#34;js-toc&#34;&gt;&lt;/div&gt;

&lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;abstract&#34;&gt;&lt;a id=&#34;sec:abstract&#34; href=&#34;#sec:abstract&#34;&gt;摘要&lt;/a&gt;&lt;/h2&gt;

&lt;p class=&#39;indent&#39;&gt;&lt;span&gt;
    我们发现了一个名为&lt;span style=&#34;font-style: italic;&#34;&gt;Wallbleed（墙出血）&lt;/span&gt;的缓冲区过度读取漏洞，该漏洞存在于中国防火长城（GFW）的DNS注入子系统中。Wallbleed导致某些影响全国范围的审查设备在处理特制的DNS请求时会泄露至多125字节的内存数据。这一漏洞为我们提供了一个难得的机会，以深入了解防火长城最著名的网络攻击手段之一——DNS注入——的内部架构，以及审查者的操作行为。&lt;/span&gt;
&lt;/p&gt;
&lt;!-- l. 212 --&gt;
&lt;p class=&#39;indent&#39;&gt;&lt;span&gt;为了理解Wallbleed的形成原因和影响，我们从2021年10月开始进行了为期两年的持续性、全网范围的测量。我们（1）逆向工程了DNS注入器的解析逻辑，（2）评估了哪些信息被泄露以及中国国内和海外的互联网用户受到何种影响，并且（3）实时监测审查者的修补行为。我们识别出可能来自审查系统内部的流量，分析了审查系统的内存管理和负载均衡机制，并观察到注入节点的进程级变化。为了协助分析，我们还利用了一个新的旁路信道来区分注入器的不同进程。我们的监测显示审查者在2023年11月对Wallbleed进行了一次不正确的修补，并在2024年3月完成了彻底修复。&lt;/span&gt;
&lt;/p&gt;&lt;!-- l. 228 --&gt;
&lt;p class=&#39;indent&#39;&gt;&lt;span&gt;Wallbleed漏洞例证了审查设备对互联网用户造成的危害不仅在于其对言论自由的明显侵犯。如果实现不当，审查设备还会对互联网用户的隐私和保密性构成严重威胁。&lt;/span&gt;
&lt;/p&gt;

&lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;1&#34;&gt;&lt;a id=&#34;sec:1-introduction&#34; href=&#34;#sec:1-introduction&#34;&gt;&lt;span
    class=&#34;titlemark&#34;&gt;I.&lt;/span&gt; 引言&lt;/a&gt;&lt;/h2&gt;
&lt;!-- l. 236 --&gt;
&lt;p class=&#39;indent&#39;&gt;中国的国家互联网审查系统，通称为防火长城（GFW），由多个部分和子系统组成，每个部分都采用不同的技术来控制对在线信息的访问。其中一个主要组成部分是&lt;span class=&#39;ptmri8t-&#39;&gt;DNS注入&lt;/span&gt;子系统，该系统伪造对被审查域名的DNS查询响应。直到2024年3月，某些DNS注入设备一直存在一个解析漏洞，该漏洞在特定条件下能使发送的伪造DNS响应包含多达125字节的设备内存。我们将这一漏洞称为Wallbleed，以此向类似的缓冲区过度读取漏洞如Heartbleed &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Heartbleed&#39;&gt;1&lt;/a&gt;]&lt;/span&gt;，Ticketbleed &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Ticketbleed&#39;&gt;2&lt;/a&gt;]&lt;/span&gt;和Cloudbleed &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Cloudbleed-post-1&#39;&gt;3&lt;/a&gt;, &lt;a href=&#39;#cite:Cloudbleed-post-2&#39;&gt;4&lt;/a&gt;]&lt;/span&gt;致敬。&lt;/p&gt;
&lt;!-- l. 253 --&gt;&lt;p class=&#39;indent&#39;&gt;在本研究中，&lt;span class=&#39;footnote-mark&#39;&gt;&lt;a href=&#39;#fn:project-homepage&#39;&gt;&lt;sup class=&#39;textsuperscript&#39;&gt;1&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id=&#39;x1-3f1&#39;&gt;&lt;/a&gt;我们分析了Wallbleed的成因和影响。我们的研究证实Wallbleed至少存在了两年。（类似漏洞的报告最早可追溯到2010年&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:gfw-looking-glass-twitter&#39;&gt;5&lt;/a&gt;], [&lt;a href=&#39;#cite:gfw-looking-glass-post&#39;&gt;6&lt;/a&gt;]&lt;/span&gt;）。我们在2021年10月至2024年4月期间进行了持续监测。该漏洞在2023年11月得到部分修补，但DNS注入器仍然容易受到某些特制查询的攻击，直到2024年3月漏洞才得到彻底修复。&lt;/p&gt;

&lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
  &lt;ol&gt;
      &lt;li class=&#39;footnote-text&#39;&gt;
          &lt;a id=&#39;fn:project-homepage&#39;&gt;&lt;/a&gt;
          &lt;span class=&#39;footnote-mark&#39;&gt;
              &lt;sup class=&#39;textsuperscript&#39;&gt;1&lt;/sup&gt;
          &lt;/span&gt;
          &lt;span class=&#39;footnotes-text&#39;&gt;项目主页：&lt;a href=&#34;https://gfw.report/publications/ndss25/en/&#34;&gt;https://gfw.report/publications/ndss25/en/&lt;/a&gt;.&lt;/span&gt;
      &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;

&lt;!-- l. 264 --&gt;&lt;p class=&#39;indent&#39;&gt;Wallbleed为我们提供了前所未有的机会来了解防火长城（GFW），包括其内部架构和审查者的操作行为。虽然先前的研究已经探讨了中国封锁了哪些域名和资源，但对防火长城网络中间设备的内部运作机制知之甚少&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;7&lt;/a&gt;, &lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;8&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2021a&#39;&gt;9&lt;/a&gt;]&lt;/span&gt;。通过分析Wallbleed泄露的数据，我们能够辨识防火长城的底层架构，我们还逆向工程了导致Wallbleed的解析漏洞，用C语言创建了一个行为完全相同的实现。在研究过程中，我们发现了防火长城DNS注入的一些此前未知特征，例如每个注入进程都独立地按固定顺序循环使用一个虚假IP地址列表，这构成了一个可以区分注入器节点中多个进程的旁路信道。最后，我们进行了长期的、全网范围的测量来监控审查者的修补活动，以利用这个难得的机会来深入了解审查者如何维护防火长城。&lt;/p&gt;
&lt;!-- l. 282 --&gt;&lt;p class=&#39;indent&#39;&gt;我们检查了Wallbleed泄露的内存内容，发现了明显的网络协议头、载荷数据、x86_64栈帧和可执行代码（尽管我们提供了证据表明这不是防火长城本身的代码）。我们发送了带有可识别字节模式的流量，让其通过防火长城，并在某些情况下在后续的Wallbleed响应中找到了这些标记。这一观察证明了该漏洞泄露的数据中至少包含了一些被防火长城看到的流量。在Wallbleed泄露的内存中，我们看到了明文网络流量和协议的样本，包括IP、TCP、UDP和HTTP，并非所有泄漏的流量都与DNS审查有关。我们还进行了全IPv4范围的扫描，以估计中国内外可能有多少IP地址的流量被带有Wallbleed漏洞的审查设备处理。我们发现，即使是源IP地址和目标IP地址都在中国之外的某些流量也可能受到影响，因为这些流量通过中国的网络边界进行路由。&lt;/p&gt;
&lt;!-- l. 300 --&gt;&lt;p class=&#39;indent&#39;&gt;进行此类研究伴随着重大的伦理考量。我们在&lt;a href=&#39;#sec:9-ethics&#39;&gt;第IX节&lt;/a&gt;中对此进行了深入讨论。讨论的内容包括了是否应披露一个存在于被许多人视为有害系统的漏洞&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:InternetSociety2023&#39;&gt;10&lt;/a&gt;, &lt;a href=&#39;#cite:Anderson2012b&#39;&gt;11&lt;/a&gt;]&lt;/span&gt;。注入伪造的DNS响应是防火长城每天进行的众多持续性网络攻击中的一种。这些攻击的意图和效果是众所周知的：限制人们获取信息。Wallbleed可以作为一个例子，说明审查设备不仅明显侵犯言论自由，而且还会带来安全和隐私风险。虽然这个特定的漏洞最终得到了修复，但只要此类设备存在，就仍然还是一个隐患。
&lt;/p&gt;
  &lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;2&#34;&gt;&lt;a id=&#34;sec:2-backgroud&#34;
    href=&#34;#sec:2-backgroud&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;II.&lt;/span&gt; 背景&lt;/a&gt;
  &lt;/h2&gt;
  &lt;a id=&#39;Q1-1-0&#39;&gt;&lt;/a&gt;
  &lt;!-- l. 323 --&gt;
  &lt;h3 class=&#34;subsectionHead&#34; id=&#34;2a&#34;&gt; &lt;a id=&#34;sec:2a-dns-injection-attacks&#34; href=&#34;#sec:2a-dns-injection-attacks&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;A.&lt;/span&gt; DNS注入攻击&lt;/a&gt;
  &lt;/h3&gt;
  &lt;a id=&#39;Q1-1-0&#39;&gt;&lt;/a&gt;
&lt;!-- l. 326 --&gt;&lt;p class=&#39;indent&#39;&gt;    GFW的DNS注入子系统是部署在中国的网络边界的一系列中间设备，这些设备监控对被封锁域名的DNS查询。当它们检测到这样的查询时，会&lt;span class=&#39;ptmri8t-&#39;&gt;注入&lt;/span&gt;一个DNS响应返回给客户端，伪造源地址，使其看似来自预期的DNS解析服务器。注入的响应是对查询的错误回答，包含一个错误且无用的IP地址。当客户端随后尝试连接到该IP地址时，它不会连接到预期的目标服务器，而是会遇到错误。这些注入的中间设备是“旁路（on-path）”设备，而非“直通（in-path）”设备：它们不会阻止查询到达合法的DNS解析器服务器，也不会阻止真实的响应到达客户端。但由于注入的伪造响应会更快到达客户端（因为它们的注入地点在网络路径中比真正的解析服务器更靠近客户端），所以其抢答会“胜出” &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Duan2012a&#39;&gt;12&lt;/a&gt;]&lt;/span&gt;。在正常情况下，每个查询仅预期接收一个DNS响应，因此客户端会接受最先收到的响应。
&lt;/p&gt;
&lt;!-- l. 348 --&gt;&lt;p class=&#39;indent&#39;&gt;    DNS注入子系统是&lt;span class=&#39;ptmri8t-&#39;&gt;双向&lt;/span&gt;的：
    它对离开中国或进入中国的查询都做出响应。
    这一特性为分析该系统提供了便利：
    相比于在中国境内获取和维护一个网络观察点，
    从外部向中国发送数据包要容易得多。
    通过向中国境内的非活动IP地址发送DNS查询，
    我们可以确保收到的任何响应都是中间设备伪造的，
    而非终端主机的真实回复。&lt;/p&gt;

&lt;!-- l. 359 --&gt;&lt;p class=&#39;indent&#39;&gt;    正如GFW由不同的组件组成，DNS注入也是由至少三种不同类型的DNS注入器完成的。关于DNS注入这个主题的基础研究包括2009年gfwrev的工作&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:gfwrev-understanding-dns-poisoning&#39;&gt;13&lt;/a&gt;]&lt;/span&gt;，2014年Anonymous的工作&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;7&lt;/a&gt;]&lt;/span&gt;，2020年Anonymous等人的“三重审查(Triplet censors)”&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;8&lt;/a&gt;]&lt;/span&gt;，以及2021年Hoang等人的“防火长城有多强大？（How great is the Great Firewall?）”&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;9&lt;/a&gt;]&lt;/span&gt;。不同类型的注入器在封锁列表、IP和DNS层的网络指纹以及解析逻辑的特性上均有所不同。Wallbleed漏洞仅存在于其中一种注入器中，即Anonymous等人称为“3号注入器”(&#34;Injector 3&#34;)的那种&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;8&lt;/a&gt; §4.1]&lt;/span&gt;。
&lt;/p&gt;

&lt;!-- l. 374 --&gt;&lt;p class=&#39;indent&#39;&gt;    DNS注入长期以来一直是GFW的主要技术之一。但仅仅绕过它是不够的，因为还有其他审查系统在运作。即使客户端能够通过某种方式获得正确的DNS响应，其通信仍可能被其他审查方式阻断，例如IP地址过滤&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Chai2019a&#39;&gt;14&lt;/a&gt; §4.1]&lt;/span&gt;，TLS SNI过滤&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Chai2019a&#39;&gt;14&lt;/a&gt;, &lt;a href=&#39;#cite:Bock2021c&#39;&gt;15&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2024a&#39;&gt;16&lt;/a&gt;]&lt;/span&gt;或TLS ESNI过滤&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Chai2019a&#39;&gt;14&lt;/a&gt;, &lt;a href=&#39;#cite:Bock2020ESNI&#39;&gt;17&lt;/a&gt;]&lt;/span&gt;。在本文中，我们只关注DNS注入，并且只关注这一种DNS注入器。
&lt;/p&gt;&lt;!-- l. 384 --&gt;&lt;p class=&#39;indent&#39;&gt;  &lt;p class=&#39;indent&#39;&gt;  中国政府并不是唯一使用DNS注入进行审查的国家。例如，请参阅Master和Garman在2023年调查中的表1“DNS篡改”一栏&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Master2023a&#39;&gt;18&lt;/a&gt;]&lt;/span&gt;，以及Nourin等人对土库曼斯坦的审查设备对DNS和其他协议进行双向注入的研究&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Nourin2023a&#39;&gt;19&lt;/a&gt;]&lt;/span&gt;。
&lt;/p&gt;&lt;!-- l. 396 --&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;2b&#34;&gt; &lt;a id=&#34;sec:2b-The-format-of-dns-messages&#34; href=&#34;#sec:2b-The-format-of-dns-messages&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;B.&lt;/span&gt; DNS消息的格式&lt;/a&gt;
&lt;/h3&gt;

&lt;!-- l. 399 --&gt;&lt;p class=&#39;indent&#39;&gt;  由于Wallbleed漏洞源于低级别的解析错误，了解DNS消息在传输线和内存中的表示方式将非常重要。DNS消息的格式在RFC 1035中指定&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:rfc1035&#39;&gt;20&lt;/a&gt;]&lt;/span&gt;。查询和响应具有相同的基本格式：一个12字节的头部，后跟四个可变长度的部分：&lt;span class=&#39;ptmri8t-&#39;&gt;问题（question）&lt;/span&gt;、&lt;span class=&#39;ptmri8t-&#39;&gt;答案（answer）&lt;/span&gt;、&lt;span class=&#39;ptmri8t-&#39;&gt;授权（authority）&lt;/span&gt;和&lt;span class=&#39;ptmri8t-&#39;&gt;附加（additional）&lt;/span&gt;。我们将只关注问题（question）和答案（answer）部分。问题（question）部分包含被查询的DNS名称（或在响应中，响应所针对的名称）。答案（answer）部分仅在响应中存在，包含查询请求的信息（通常是一个IP地址），以一种称为&lt;span class=&#39;ptmri8t-&#39;&gt;resource record（资源记录）&lt;/span&gt;的数据结构表示。
&lt;/p&gt;&lt;!-- l. 420 --&gt;&lt;p class=&#39;indent&#39;&gt;  &lt;a href=&#39;#fig:1-the-structure-of-an-injected-dns-response&#39;&gt;图1&lt;/a&gt;是一个注入的DNS响应示例。它展示了理解本研究中出现的DNS消息所需的一切。我们将一致地使用这些字段名称和背景颜色。

    &lt;div class=&#34;container-fluid&#34;&gt;
        &lt;div class=&#34;table-responsive&#34;&gt;
    &lt;div class=&#39;figure figure-table&#39; id=&#39;fig:1-the-structure-of-an-injected-dns-response&#39; style=&#34;margin: 0 auto; display: table;&#34;&gt;
  &lt;div class=&#39;tabular&#39;&gt;
      &lt;table class=&#39;tabular&#39; id=&#39;TBL-1&#39;&gt;
          &lt;colgroup id=&#39;TBL-1-1g&#39;&gt;
              &lt;col id=&#39;TBL-1-1&#39; /&gt;
              &lt;col id=&#39;TBL-1-2&#39; /&gt;
          &lt;/colgroup&gt;
          &lt;tr id=&#39;TBL-1-1-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-1-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
                      id=&#39;colorbox418&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;1234&lt;/span&gt;&lt;/span&gt;      &lt;span&gt;ID&lt;/span&gt; &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-1-1-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;6&#34;&gt;
                  &lt;div class=&#39;multirow&#39; style=&#34;width: 5.5em;&#34;&gt;&lt;!--  rows=256  --&gt;
                      &lt;img alt=&#39;}Header&#39; class=&#39;left&#39; src=&#39;../figures/svgs/header.svg&#39; /&gt;
                  &lt;/div&gt;
              &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-2-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-2-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
                      id=&#39;colorbox419&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;8180&lt;/span&gt;&lt;/span&gt;      flags &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-3-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-3-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
                      id=&#39;colorbox420&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;&lt;/span&gt;      QDCOUNT &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-4-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-4-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
                      id=&#39;colorbox421&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;&lt;/span&gt;      ANCOUNT &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-5-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-5-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
                      id=&#39;colorbox422&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;&lt;/span&gt;      NSCOUNT &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-6-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-6-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
                      id=&#39;colorbox423&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;&lt;/span&gt;      ARCOUNT &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-7-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-7-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
                      id=&#39;colorbox424&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox425&#39;&gt;
                      &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox426&#39;&gt; &lt;span
                          class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt;
                  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox427&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;f&lt;/span&gt; &lt;/span&gt;&lt;span
                      class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox428&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
                      id=&#39;colorbox429&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox430&#39;&gt;
                      &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt;
                  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox431&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt; &lt;/span&gt;&lt;span
                      class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox432&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;      QNAME &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-1-7-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt;
                  &lt;div class=&#39;multirow&#39; style=&#34;width: 5.5em;&#34;&gt;&lt;!--  rows=256  --&gt;
                      &lt;img alt=&#39;}Question&#39; class=&#39;left&#39; src=&#39;../figures/svgs/question.svg&#39; /&gt;
                  &lt;/div&gt;
              &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-8-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-8-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
                      id=&#39;colorbox433&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;&lt;/span&gt;      QTYPE (A, IPv4 address) &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-9-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-9-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
                      id=&#39;colorbox434&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;&lt;/span&gt;      QCLASS (IN) &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-10-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-10-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
                      id=&#39;colorbox435&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;c00c&lt;/span&gt;&lt;/span&gt;      NAME (pointer to QNAME) &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-1-10-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;6&#34;&gt;
                  &lt;div class=&#39;multirow&#39; style=&#34;width: 5.5em;&#34;&gt;&lt;!--  rows=256  --&gt;
                      &lt;img alt=&#39;}Answer&#39; class=&#39;left&#39; src=&#39;../figures/svgs/answer.svg&#39; /&gt;
                  &lt;/div&gt;
              &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-11-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-11-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
                      id=&#39;colorbox436&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;&lt;/span&gt;      TYPE (A, IPv4 address) &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-12-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-12-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
                      id=&#39;colorbox437&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;&lt;/span&gt;      CLASS (IN) &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-13-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-13-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox four-byte-width&#39;
                      id=&#39;colorbox438&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;000000ec&lt;/span&gt;&lt;/span&gt;      TTL (236 seconds) &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-14-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-14-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
                      id=&#39;colorbox439&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0004&lt;/span&gt;&lt;/span&gt;      RDLENGTH &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-1-15-&#39;&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-1-15-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
                      id=&#39;colorbox440&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;1f&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
                      id=&#39;colorbox441&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0d&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
                      id=&#39;colorbox442&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;5b&lt;/span&gt;
                  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox443&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;21&lt;/span&gt; &lt;/span&gt;      RDATA
                  (31.13.91.33)
              &lt;/td&gt;
          &lt;/tr&gt;
      &lt;/table&gt;
  &lt;/div&gt;
  &lt;/div&gt;
  &lt;/div&gt;

  &lt;a id=&#39;x1-56r9&#39;&gt;&lt;/a&gt;
  &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:1-the-structure-of-an-injected-dns-response&#34;&gt;Fig. 1&lt;/a&gt;: The structure of an injected DNS response.&lt;/p&gt;

&lt;/div&gt;
&lt;!-- l. 451 --&gt;&lt;p class=&#39;indent&#39;&gt;  &lt;p class=&#39;indent&#39;&gt;  该消息是一个DNS响应（而不是查询），这可以通过标志的最高有效位被设置来识别。它有一个问题（question）和一个答案（answer）；授权（authority）和附加（additional）部分是空的。问题（question）部分中的QNAME是DNS客户端请求解析的名称，&lt;span class=&#39;cmtt-10&#39;&gt;rsf.org&lt;/span&gt;。答案（answer）部分由GFW注入器构建。它声称客户端的QNAME解析为一个不正确的IPv4地址（注入器可能使用的数百个地址之一）。
&lt;/p&gt;&lt;!-- l. 464 --&gt;&lt;p class=&#39;indent&#39;&gt;  最重要的是理解DNS&lt;span class=&#39;ptmri8t-&#39;&gt;名称&lt;/span&gt;的编码。名称在DNS协议中无处不在：每个问题（question）部分（QNAME字段）中都有一个，且每个资源记录（NAME字段）中至少有一个。名称是&lt;span class=&#39;ptmri8t-&#39;&gt;标签&lt;/span&gt;的序列。标签是字节的序列，以一个字节的长度前缀。名称在一个空标签处结束，即仅由长度前缀&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox27x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;&lt;/span&gt;组成。名称&lt;span class=&#39;cmtt-10&#39;&gt;example.com &lt;/span&gt;有三个标签，分别为7、3和0字节。其编码长度为13字节：&lt;span class=&#39;colorbox&#39; id=&#39;colorbox28&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;07&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox29&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox30&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;x&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox31&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;a&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox32x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;m&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox33x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;p&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox34x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;l&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox35x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox36x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox37x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;c&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox38x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox39x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;m&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox40x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;&lt;/span&gt;。
&lt;/p&gt;&lt;!-- l. 485 --&gt;&lt;p class=&#39;indent&#39;&gt;  名称长度前缀编码有一个例外。如果长度前缀的两个最高有效位被设置，那么该字节的其他6位和下一个字节的8位形成一个14位的&lt;span class=&#39;ptmri8t-&#39;&gt;压缩指针&lt;/span&gt;，指示名称中剩余的标签从消息中的给定字节偏移开始。消息压缩很有用，因为DNS消息中通常包含多次相同的名称，或几个具有共同后缀的名称。压缩指针模式&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox41&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;c00c&lt;/span&gt;&lt;/span&gt;是一个需要识别的模式。它指向字节偏移12，即问题（question）部分的QNAME字段的偏移量。Wallbleed易受攻击的注入器不会将QNAME复制到答案（answer）部分，而是用一个&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox42&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;c00c&lt;/span&gt;&lt;/span&gt;压缩指针开始答案（answer）部分。（使用压缩指针并不是GFW独有的；合法的解析器也会使用它们。在GFW中存在的各种DNS注入器中，有些使用&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox43&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;c00c&lt;/span&gt;&lt;/span&gt;，有些则复制QNAME&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;8&lt;/a&gt; §4.1]&lt;/span&gt;。）
&lt;/p&gt;&lt;!-- l. 521 --&gt;&lt;p class=&#39;indent&#39;&gt;  DNS名称的格式，带有长度前缀和指针间接，容易导致解析器的内存安全错误。在处理标签长度前缀时，必须检查标签的结尾是否在消息的边界内。缺乏这样的检查是Wallbleed溢出漏洞的根本原因。
&lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;3&#34;&gt;&lt;a id=&#34;sec:3-demonstrating-overflow&#34;
  href=&#34;#sec:3-demonstrating-overflow&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;III.&lt;/span&gt; 演示溢出&lt;/a&gt;
&lt;/h2&gt;
&lt;a id=&#39;Q1-1-1&#39;&gt;&lt;/a&gt;
&lt;!-- l. 535 --&gt;&lt;p class=&#39;indent&#39;&gt;  这是一个格式良好的查询，其QNAME，&lt;span class=&#39;cmtt-10&#39;&gt;rsf.org&lt;/span&gt;，在GFW的封锁列表上：
&lt;div class=&#34;px-4&#34;&gt;
&lt;!-- l. 551 --&gt;&lt;p class=&#39;indent&#39;&gt;
    &lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox44x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;1234&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox45x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0100&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox46x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox47x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox48x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox49x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox50x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox51x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox52x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox53x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;f&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox54x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox55x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width  cb-light-cyan-CCFDFF&#39; id=&#39;colorbox56x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width  cb-light-cyan-CCFDFF&#39; id=&#39;colorbox57x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox58x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-beige-F5F3E0&#39; id=&#39;colorbox59x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-beige-F5F3E0&#39; id=&#39;colorbox60x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;!-- l. 563 --&gt;&lt;p class=&#39;noindent&#39;&gt;如果我们将这些字节通过UDP数据报发送到目的端口53，从中国境外的主机发送到中国境内的主机，我们会收到一个注入的DNS响应。（实际上会收到多个响应，因为这个QNAME在多种注入器的封锁列表上。）任何中国境内的目标IP地址都可以，即使是一个无响应的地址——查询只需经过一个在途的注入中间设备即可。
  &lt;/p&gt;&lt;!-- l. 574 --&gt;&lt;p class=&#39;indent&#39;&gt;    一个注入的响应如下所示（这是&lt;a href=&#39;#fig:1-the-structure-of-an-injected-dns-response&#39;&gt;图1&lt;/a&gt;的更紧凑形式）：
  &lt;/p&gt;
  &lt;!-- l. 577 --&gt;
  &lt;div class=&#34;px-4&#34;&gt;
  &lt;p class=&#39;indent&#39;&gt;
            &lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox61x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;1234&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox62x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;8180&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox63x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox64x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox65x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox66x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox67x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox cb-light-cyan-CCFDFF&#39; id=&#39;colorbox68x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox69x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox cb-light-cyan-CCFDFF&#39; id=&#39;colorbox70x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;f&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox71x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox72x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox73x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox74x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox75x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-beige-F5F3E0&#39; id=&#39;colorbox76x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-beige-F5F3E0&#39; id=&#39;colorbox77x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox78x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;c00c&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox79x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox80x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox four-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox81x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;000000ec&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox82x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0004&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox83x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;1f&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox84x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0d&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox85x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;5b&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox86x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;21&lt;/span&gt; &lt;/span&gt;
 &lt;/p&gt;
&lt;/div&gt;&lt;!-- l. 595 --&gt;&lt;p class=&#39;noindent&#39;&gt;ID和问题（question）部分是从查询中复制的。标志已设置为适合响应。答案（answer）部分错误地声称名称&lt;span class=&#39;cmtt-10&#39;&gt;rsf.org &lt;/span&gt;（由压缩指针&lt;span class=&#39;colorbox two-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox87x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;c00c&lt;/span&gt;&lt;/span&gt;表示）解析为IPv4地址31.13.91.33（&lt;span class=&#39;colorbox one-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox88x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;1f&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox89x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0d&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox90x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;5b&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-soft-pink-FCE5E5&#39; id=&#39;colorbox91x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;21&lt;/span&gt; &lt;/span&gt;）。如&lt;a href=&#39;#app:a-an-example-ordered-pool-of-fake-ip-address&#39;&gt;附录A&lt;/a&gt;中详细说明的，这个假地址是注入器可能使用的众多地址之一。如果我们再次发送查询，可能会得到不同的地址。
  &lt;/p&gt;&lt;!-- l. 612 --&gt;&lt;p class=&#39;indent&#39;&gt;    现在看看如果我们人为地将&lt;span class=&#39;cmtt-10&#39;&gt;org &lt;/span&gt;标签的长度前缀从&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox92x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt;&lt;/span&gt;（3）增加到&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox93x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;20&lt;/span&gt;&lt;/span&gt;（32）会发生什么：
  &lt;/p&gt;&lt;!-- l. 628 --&gt;
  &lt;div class=&#34;px-4&#34;&gt;
  &lt;p class=&#39;indent&#39;&gt;
            &lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox94x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;1234&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox95x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0100&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox96x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox97x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox98x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox99x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox100x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox101x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox102x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox103x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;f&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox104x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;20&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox105x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox106x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox107x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox108x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox109&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox110&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;
 &lt;/p&gt;
&lt;/div&gt;
 &lt;!-- l. 639 --&gt;&lt;p class=&#39;noindent&#39;&gt;首先，我们现在只得到一个注入的响应：格式错误的查询被Wallbleed以外的注入器忽略。答案部分的TTL和IP地址与之前不同，这是预期的：这些通常在每个响应中都会变化。更重要的是，注入的响应在答案部分之前包含29个额外字节。这些字节来自处理查询的注入设备的内存。在这个例子中，泄露的字节是一个UPnP HTTP头的片段：
  &lt;/p&gt;
  &lt;!-- l. 129 --&gt;
&lt;div class=&#34;px-4&#34;&gt;
&lt;p class=&#39;indent&#39;&gt;
  &lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox68&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;1234&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
      id=&#39;colorbox69&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;8180&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox70&#39;&gt;&lt;span
          class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox71&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox72&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
      id=&#39;colorbox73&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox74&#39;&gt;&lt;span
          class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox75&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox76&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
      id=&#39;colorbox77&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;f&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox78&#39;&gt;&lt;span
          class=&#39;cmtt-10&#39;&gt;20&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox79&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox80&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
      id=&#39;colorbox81&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox82&#39;&gt;&lt;span
          class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox83&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox84&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
      id=&#39;colorbox85&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;C&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox86&#39;&gt; &lt;span
          class=&#39;cmtt-10&#39;&gt;u&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox87&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox88&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;t&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
      id=&#39;colorbox89&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox90&#39;&gt; &lt;span
          class=&#39;cmtt-10&#39;&gt;m&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox91&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;/&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox92&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;1&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
      id=&#39;colorbox93&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;.&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox94&#39;&gt; &lt;span
          class=&#39;cmtt-10&#39;&gt;0&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox95&#39;&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
      id=&#39;colorbox96&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;U&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox97&#39;&gt; &lt;span
          class=&#39;cmtt-10&#39;&gt;P&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox98&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;n&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox99&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;P&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
      id=&#39;colorbox100&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;/&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox101&#39;&gt; &lt;span
          class=&#39;cmtt-10&#39;&gt;1&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox102&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;.&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox103&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
      id=&#39;colorbox104&#39;&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox105&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;P&lt;/span&gt; &lt;/span&gt;&lt;span
      class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox106&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
      id=&#39;colorbox107&#39;&gt;
      &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox108&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;c&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox109&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;/&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
      id=&#39;colorbox110&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;V&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox111&#39;&gt; &lt;span
          class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox112&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox113&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0d&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
      id=&#39;colorbox114&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;c00c&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox115&#39;&gt;&lt;span
          class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox116&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox four-byte-width&#39; id=&#39;colorbox117&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;00000082&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
      id=&#39;colorbox118&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0004&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox119&#39;&gt;&lt;span
          class=&#39;cmtt-10&#39;&gt;68&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox120&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;f4&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox121&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;2e&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox122&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;a5&lt;/span&gt; &lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;!-- l. 671 --&gt;&lt;p class=&#39;noindent&#39;&gt;每当注入器响应这样的查询时，它都会暴露出其内存的一小部分，每次内容都不同。
&lt;/p&gt;&lt;!-- l. 678 --&gt;&lt;p class=&#39;indent&#39;&gt;我们假设注入器设备内部可能发生了如下过程。在其网络接口上观察到DNS查询后，注入器将数据包复制到内存中进行处理。其目标是从查询中解析QNAME，与封锁列表进行比对，并在需要时注入响应。在解析QNAME时，注入器首先看到3字节的标签&lt;span class=&#39;cmtt-10&#39;&gt;rsf&lt;/span&gt;：到目前为止，一切正常。但长度前缀&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox166x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;20&lt;/span&gt;&lt;/span&gt;表示下一个标签长32字节，这超出了&lt;span class=&#39;cmtt-10&#39;&gt;org &lt;/span&gt;标签和空标签、QTYPE和QCLASS字段，并超过了查询的末尾。由于未能执行边界检查，注入器将内存中数据包后面的字节视为查询的一部分——就好像QNAME是38字节
    &lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox124&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt;&lt;/span&gt;&lt;span
    class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox125&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
    id=&#39;colorbox126&#39;&gt;
    &lt;span class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox127&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;f&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox128&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;20&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
    id=&#39;colorbox129&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox130&#39;&gt; &lt;span
        class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox131&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox132&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
    id=&#39;colorbox133&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox134&#39;&gt;&lt;span
        class=&#39;cmtt-10&#39;&gt;01&lt;/span&gt; &lt;/span&gt;⋅⋅⋅&lt;span
    class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox135&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;P&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
    id=&#39;colorbox136&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox137&#39;&gt; &lt;span
        class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox138&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;c&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
    id=&#39;colorbox139&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;/&lt;/span&gt; &lt;/span&gt;。尽管名称末尾有多余的字节，但它仍然匹配封锁列表，原因将在&lt;a href=&#34;#sec:3a-blocklist-matching&#34;&gt;第III-A节&lt;/a&gt;中解释。注入器将整个QNAME（如其所见）复制到DNS响应中。
    接下来的4字节（在此示例中，&lt;span class=&#39;colorbox one-byte-width cb-cream-yellow-F7F3D3&#39; id=&#39;colorbox183x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;V&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cream-yellow-F7F3D3&#39; id=&#39;colorbox184x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cream-yellow-F7F3D3&#39; id=&#39;colorbox185x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cream-yellow-F7F3D3&#39; id=&#39;colorbox186x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0d&lt;/span&gt; &lt;/span&gt;）被解释为查询的QTYPE和QCLASS，并也被复制到响应中。
    &lt;/p&gt;&lt;!-- l. 713 --&gt;&lt;p class=&#39;indent&#39;&gt;为什么解析器在&lt;span class=&#39;colorbox one-byte-width cb-cream-yellow-F7F3D3&#39; id=&#39;colorbox187x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;/&lt;/span&gt; &lt;/span&gt;字节处停止，而不是将其视为长度前缀并读取另一个标签？我们在&lt;a href=&#39;#app:b-reverse-engineered-dns-parsing-and-injection-algorithm&#39;&gt;附录B&lt;/a&gt;中提供了解析算法的精确逆向工程描述，回答了这个和其他问题。在这种情况下，这是因为QNAME解析器在第一个超过查询末尾的标签长度前缀后停止。
  &lt;/p&gt;
&lt;!-- l. 722 --&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3a&#34;&gt; &lt;a id=&#34;sec:3a-blocklist-matching&#34; href=&#34;#sec:3a-blocklist-matching&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;A.&lt;/span&gt; 封锁列表匹配&lt;/a&gt;
&lt;/h3&gt;
&lt;!-- l. 725 --&gt;&lt;p class=&#39;indent&#39;&gt; 当注入器检查名称是否在其封锁列表中时，它不会使用名称的有线格式表示。相反，它将QNAME展平为一个以&lt;span class=&#39;colorbox one-byte-width cb-white-FFFFFF&#39; id=&#39;colorbox188x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;&lt;/span&gt;字节结尾的点分隔字符串。这个字符串被传递给封锁列表查找函数。证据是，当查询中的标签包含ASCII点字符&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox189&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;.&lt;/span&gt; &lt;/span&gt;或空字节&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox190&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;&lt;/span&gt;时，封锁列表匹配器分别将其解释为标签分隔符或名称终止符。例如，如果名称&lt;span class=&#39;cmtt-10&#39;&gt;example.com &lt;/span&gt;在封锁列表上，以下任一QNAME
&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox148&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;07&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox149&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox150&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;x&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox151&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;a&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox152&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;m&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox153&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;p&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox154&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;l&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox155&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox156&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox157&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;c&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox158&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox159&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;m&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox160&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt; 或 &lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox161&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0f&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox162&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox163&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;x&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox164&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;a&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox165&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;m&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox166&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;p&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox167&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;l&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox168&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox169&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;.&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox170&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;c&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox171&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox172&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;m&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox173&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox174&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;a&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox175&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;b&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox176&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;c&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox177&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;
会引发注入。尽管这些名称在DNS级别是不同的（第一个由三个标签组成，分别为7、3和0字节；第二个由两个标签组成，分别为15和0字节），但它们都被展平为相同的有效字符串“example.com”。
&lt;/p&gt;&lt;!-- l. 753 --&gt;&lt;p class=&#39;indent&#39;&gt;  这解释了为什么QNAME
  &lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox178&#39;&gt;&lt;span
    class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox179&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox180&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
id=&#39;colorbox181&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;f&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox182&#39;&gt;&lt;span
    class=&#39;cmtt-10&#39;&gt;20&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox183&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox184&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
id=&#39;colorbox185&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox186&#39;&gt;&lt;span
    class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox187&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox188&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;01&lt;/span&gt; &lt;/span&gt; ⋅⋅⋅ &lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox189&#39;&gt; &lt;span
    class=&#39;cmtt-10&#39;&gt;P&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox190&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox191&#39;&gt;
&lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox192&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox193&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;/&lt;/span&gt; &lt;/span&gt;
在前一个示例中被注入器理解为匹配封锁列表规则&lt;span class=&#39;cmtt-10&#39;&gt;rsf.org&lt;/span&gt;。尽管第二个标签不仅仅是&lt;span class=&#39;cmtt-10&#39;&gt;org&lt;/span&gt;，而是&lt;span class=&#39;cmtt-10&#39;&gt;org&lt;/span&gt;加上许多额外的字节，但这些额外字节中的第一个是&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox237x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;&lt;/span&gt;，当它被展平为字符串时终止了名称。额外的字节包含在注入的DNS响应中，但它们不影响封锁列表匹配。
&lt;/p&gt;&lt;!-- l. 772 --&gt;&lt;p class=&#39;indent&#39;&gt;  这也解释了为什么我们修改了&lt;span class=&#39;cmtt-10&#39;&gt;org&lt;/span&gt;标签的长度前缀，而不是&lt;span class=&#39;cmtt-10&#39;&gt;rsf&lt;/span&gt;标签。如果我们延长了&lt;span class=&#39;cmtt-10&#39;&gt;rsf&lt;/span&gt;标签，&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox238x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt;&lt;/span&gt;在&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox239x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox240x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox241x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt; &lt;/span&gt;之前会被解释为展平名称字符串中的一个字面字符——因为字符串“rsf\x03org”不匹配封锁列表上的任何内容，它不会得到响应。而通过延长&lt;span class=&#39;cmtt-10&#39;&gt;org&lt;/span&gt;标签，&lt;span class=&#39;cmtt-10&#39;&gt;rsf&lt;/span&gt;和&lt;span class=&#39;cmtt-10&#39;&gt;org&lt;/span&gt;仍然是单独的标签，最后的空标签&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox242x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;&lt;/span&gt;成为字符串终止符。改变第一个长度前缀是可行的，但随后第二个长度前缀也必须更改为一个点，以便在最终字符串中分隔标签：
&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox200&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;20&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox201&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox202&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox203&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;f&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox204&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;.&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox205&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox206&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox207&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox208&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;&lt;/span&gt;。
&lt;/p&gt;&lt;!-- l. 800 --&gt;&lt;p class=&#39;indent&#39;&gt;  封锁列表规则不是字面名称，而是&lt;span class=&#39;ptmri8t-&#39;&gt;模式&lt;/span&gt;，类似于正则表达式&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;9&lt;/a&gt; §4.1]&lt;/span&gt;。例如，单个规则可以封锁整个域及其子域。模式的构建并不统一（显示出易错的人为管理迹象）。我们一直使用的&lt;span class=&#39;cmtt-10&#39;&gt;rsf.org &lt;/span&gt;模式是结尾锚定和标签锚定的：&lt;span class=&#39;cmtt-10&#39;&gt;rsf.org &lt;/span&gt;和&lt;span class=&#39;cmtt-10&#39;&gt;x.rsf.org &lt;/span&gt;匹配该模式，但&lt;span class=&#39;cmtt-10&#39;&gt;xrsf.org&lt;/span&gt;、&lt;span class=&#39;cmtt-10&#39;&gt;rsf.org.x&lt;/span&gt;和&lt;span class=&#39;cmtt-10&#39;&gt;rsf.orgx &lt;/span&gt;不匹配。作为正则表达式，它可能是&lt;span class=&#39;obeylines-h&#39;&gt;&lt;code class=&#39;verb&#39;&gt;(.*\.)*rsf\.org$&lt;/code&gt;&lt;/span&gt;。
相比之下，&lt;span class=&#39;cmtt-10&#39;&gt;shadowvpn.com&lt;/span&gt;的模式是开始锚定而不是标签锚定的：&lt;span class=&#39;cmtt-10&#39;&gt;shadowvpn.com&lt;/span&gt;、&lt;span class=&#39;cmtt-10&#39;&gt;shadowvpn.comx&lt;/span&gt;和&lt;span class=&#39;cmtt-10&#39;&gt;shadowvpn.com.x&lt;/span&gt;匹配它，但&lt;span class=&#39;cmtt-10&#39;&gt;xshadowvpn.com&lt;/span&gt;和&lt;span class=&#39;cmtt-10&#39;&gt;x.shadowvpn.com&lt;/span&gt;不匹配。它的正则表达式将是&lt;span class=&#39;obeylines-h&#39;&gt;&lt;code class=&#39;verb&#39;&gt;^shadowvpn\.com.*&lt;/code&gt;&lt;/span&gt;。
&lt;/p&gt;&lt;!-- l. 827 --&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3b&#34;&gt; &lt;a id=&#34;sec:3b-maximizing-leaked-bytes-per-response&#34; href=&#34;#sec:3b-maximizing-leaked-bytes-per-response&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;B.&lt;/span&gt; 最大化每个响应泄露的字节数&lt;/a&gt;
&lt;/h3&gt;
&lt;!-- l. 830 --&gt;&lt;p class=&#39;indent&#39;&gt;单个响应中可能泄露的最大字节数是125。这是因为注入响应中的问题（question）部分最大为131字节，而触发响应的查询中最短的问题（question）部分长度为6字节。响应中的问题（question）部分在开头包含查询中问题（question）部分的副本；其余部分是泄露的内存。为了最大化泄露的内存量，需最小化查询中问题（question）部分的大小（查询实际有多大），并最大化响应中问题（question）部分的大小（注入器&lt;span class=&#39;ptmri8t-&#39;&gt;认为&lt;/span&gt;查询有多大）。
&lt;!-- l. 866 --&gt;&lt;p class=&#39;indent&#39;&gt;最小化查询大小的第一步是省略QTYPE和QCLASS字段。当这些字段缺失时，注入器会从其自身内存中读取它们。QCLASS没有影响，而QTYPE仅控制注入器是生成类型A（IPv4）还是类型AAAA（IPv6）的响应。对于未知的QTYPE，注入器默认为类型A；只有当QTYPE是&lt;span class=&#39;colorbox two-byte-width cb-cream-yellow-F7F3D3&#39; id=&#39;colorbox270x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;001c&lt;/span&gt;&lt;/span&gt;时，它们才发送类型AAAA的响应。在任何情况下，问题（question）部分的大小都是相同的。
&lt;/p&gt;&lt;!-- l. 880 --&gt;&lt;p class=&#39;indent&#39;&gt;最小化查询大小的另一部分是使用短的QNAME。为了找到触发注入响应的短DNS名称，我们枚举了所有形式为&lt;span class=&#39;cmtt-10 formula&#39;&gt;a.b&lt;/span&gt;、&lt;span class=&#39;cmtt-10 formula&#39;&gt;a.bc&lt;/span&gt;和&lt;span class=&#39;cmtt-10 formula&#39;&gt;ab.c&lt;/span&gt;的名称，其中&lt;span class=&#39;cmtt-10 formula&#39;&gt;a&lt;/span&gt;、&lt;span class=&#39;cmtt-10 formula&#39;&gt;b&lt;/span&gt;和&lt;span class=&#39;cmtt-10 formula&#39;&gt;c&lt;/span&gt;的范围包括字符‘&lt;span class=&#39;cmtt-10&#39;&gt;a&lt;/span&gt;’–‘&lt;span class=&#39;cmtt-10&#39;&gt;z&lt;/span&gt;’、‘&lt;span class=&#39;cmtt-10&#39;&gt;0&lt;/span&gt;’–‘&lt;span class=&#39;cmtt-10&#39;&gt;9&lt;/span&gt;’、‘&lt;span class=&#39;cmtt-10&#39;&gt;-&lt;/span&gt;’和‘&lt;span class=&#39;cmtt-10&#39;&gt;_&lt;/span&gt;’，并将它们发送到中国的DNS查询中。我们找到了八个有效的短名称：&lt;span class=&#39;cmtt-10&#39;&gt;3.tt&lt;/span&gt;、&lt;span class=&#39;cmtt-10&#39;&gt;4.tt&lt;/span&gt;、&lt;span class=&#39;cmtt-10&#39;&gt;5.tt&lt;/span&gt;、&lt;span class=&#39;cmtt-10&#39;&gt;6.tt&lt;/span&gt;、&lt;span class=&#39;cmtt-10&#39;&gt;7.tt&lt;/span&gt;、&lt;span class=&#39;cmtt-10&#39;&gt;8.tt&lt;/span&gt;、&lt;span class=&#39;cmtt-10&#39;&gt;9.tt&lt;/span&gt;和&lt;span class=&#39;cmtt-10&#39;&gt;x.co&lt;/span&gt;。
&lt;span class=&#39;footnote-mark&#39;&gt;&lt;a href=&#39;#fn:name-3.tt-has-stopped-triggering-injection&#39;&gt;&lt;sup class=&#39;textsuperscript&#39;&gt;2&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id=&#39;x1-13f2&#39;&gt;&lt;/a&gt;
这些名称中的每一个都需要6字节来编码（例如，&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox228&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;01&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox229&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;3&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox230&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;02&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox231&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;t&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox232&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;t&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox233&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;&lt;/span&gt;）。
&lt;span class=&#39;footnote-mark&#39;&gt;&lt;a href=&#39;#fn:minor-subtlety-implicit-null-terminator&#39;&gt;&lt;sup class=&#39;textsuperscript&#39;&gt;3&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id=&#39;x1-15f3&#39;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
  &lt;ol&gt;
      &lt;li class=&#39;footnote-text&#39;&gt;
          &lt;a id=&#39;fn:name-3.tt-has-stopped-triggering-injection&#39;&gt;&lt;/a&gt;
          &lt;span class=&#39;footnote-mark&#39;&gt;
            &lt;sup class=&#39;textsuperscript&#39;&gt;2&lt;/sup&gt;
        &lt;/span&gt;&lt;span class=&#39;footnotes-text&#39;&gt;我们在2021年11月3日进行了这个实验。名称&lt;span class=&#39;cmtt-8&#39;&gt;3.tt&lt;/span&gt;自2023年8月7日起不再触发注入：详见&lt;a href=&#34;#sec:4-what-information-is-leaked&#34;&gt;第IV节&lt;/a&gt;。
        &lt;/li&gt;
        &lt;li class=&#39;footnote-text&#39;&gt;
        &lt;a id=&#39;fn:minor-subtlety-implicit-null-terminator&#39;&gt;&lt;/a&gt;
        &lt;span class=&#39;footnote-mark&#39;&gt;
        &lt;sup class=&#39;textsuperscript&#39;&gt;3&lt;/sup&gt;
        &lt;/span&gt;&lt;span class=&#39;footnotes-text&#39;&gt;这里有一个小细节。对于这样短的名称，技术上可以省略末尾的&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox234&#39;&gt;&lt;span class=&#39;cmtt-8&#39;&gt;00&lt;/span&gt;&lt;/span&gt;字节，否则需要用于终止从查询解析的平坦名称字符串。注入器似乎会在将查询复制到内存之前将目标缓冲区的第18个字节置零，因此，长度仅为17字节的查询实际上具有隐式空终止符。由于DNS标头占用12个字节，因此，此技巧仅适用于QNAME短至5个字节的情况。但由于在这种情况下，第一个泄漏的字节是一个常量&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox235&#39;&gt;&lt;span class=&#39;cmtt-8&#39;&gt;00&lt;/span&gt;&lt;/span&gt;，所以将QNAME从6个字节缩短到5个字节并不会增加泄漏的信息字节数量。有关此及其他底层细节的算法描述请参见&lt;a href=&#39;#app:b-reverse-engineered-dns-parsing-and-injection-algorithm&#39;&gt;附录B&lt;/a&gt;。
        &lt;/span&gt;
        &lt;/li&gt;
        &lt;/ol&gt;
        &lt;/div&gt;
        &lt;!-- l. 928 --&gt;&lt;p class=&#39;indent&#39;&gt;在&lt;a href=&#34;#sec:3-demonstrating-overflow&#34;&gt;第III节&lt;/a&gt;的开头，我们通过将QNAME标签的长度前缀从3增加到32，导致注入器泄露了29个字节。直观地说，为了泄露更多字节，应该进一步增加标签的长度。这种直觉是正确的，但仅在某个程度上有效。&lt;a href=&#34;#fig:2-question-section-size-label-length-prefix&#34;&gt;图2&lt;/a&gt;显示了随着查询中标签长度的增加，响应中的问题（question）部分大小会发生变化。（我们关注的注入器不会强制执行RFC 1035对标签的63字节长度限制&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:rfc1035&#39;&gt;20&lt;/a&gt; §4.1.4]&lt;/span&gt;，而是简单地将每个字节值解释为长度。）它们逐一增加，直到响应问题（question）部分达到最大131字节。超过该点后，问题（question）部分会略小于最大值，为130字节。
            &lt;div class=&#34;container&#34;&gt;
            &lt;div class=&#39;figure&#39;&gt;
                &lt;!-- l. 340 --&gt;
                &lt;p class=&#39;noindent&#39; id=&#39;fig:2-question-section-size-label-length-prefix&#39;&gt;
                    &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/incremental-qname-change-first-label-2023-08-15_00-49-21.png&#39; /&gt; &lt;a
          id=&#39;x1-6r1&#39;&gt;&lt;/a&gt;
     &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:2-question-section-size-label-length-prefix&#34;&gt;图2&lt;/a&gt;: 注入DNS响应中的问题（question）部分大小与查询中标签长度前缀&lt;span class=&#34;formula&#34;&gt;x&lt;/span&gt;的关系。我们使用&lt;a href=&#34;#sec:3a-blocklist-matching&#34;&gt;第III节&lt;/a&gt;中的“嵌入点字符”和“嵌入空终止符”技巧，将变长标签长度前缀置于问题（question）部分的开头。
        在QNAME查询中&lt;span class=&#39;colorbox one-byte-width formula&#39; id=&#39;colorbox218&#39;&gt;x&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox219&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox220&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox221&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;f&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox222&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;.&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox223&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox224&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox225&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox226&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;。我们使用了&lt;a href=&#34;#sec:3a-blocklist-matching&#34;&gt;第III-A节&lt;/a&gt;中的“嵌入点字符”和“嵌入空终止符”技巧，以便将可变标签长度前缀放置在问题（question）部分的开头。&lt;/p&gt;
            &lt;/div&gt;
            &lt;/div&gt;
&lt;!-- l. 947 --&gt;&lt;p class=&#39;indent&#39;&gt;这种奇怪的行为是由于查询解析算法的混乱逻辑造成的（见&lt;a href=&#39;#app:b-reverse-engineered-dns-parsing-and-injection-algorithm&#39;&gt;附录B&lt;/a&gt;）。导致算法主循环终止的两个条件是：在处理标签内容时，QNAME的总长度超过127字节，以及解析器刚刚读取的长度前缀超出查询的范围。当QNAME恰好为127字节（包括最终的标签长度前缀）时，131字节的sweet spot（最佳点）出现了。在这种情况下，第一个退出条件被避免，允许循环的下一次迭代在退出之前读取1个额外的字节。QNAME的127个字节，加上缺失的QTYPE和QCLASS的4个字节，使得问题（question）部分的总长度为131个字节。
&lt;/p&gt;
&lt;!-- l. 995 --&gt;&lt;p class=&#39;indent&#39;&gt;QNAME长度限制是这种类型注入器的一般特性，与Wallbleed解析错误无关。我们向中国发送了逐渐增长长度的良好格式的查询（&lt;span class=&#39;cmtt-10&#39;&gt;a.google.sm&lt;/span&gt;、&lt;span class=&#39;cmtt-10&#39;&gt;aa.google.sm&lt;/span&gt;、&lt;span class=&#39;cmtt-10&#39;&gt;aaa.google.sm&lt;/span&gt;，...），使用一个已知与封锁列表匹配的基本域&lt;span class=&#39;cmtt-10&#39;&gt;google.sm&lt;/span&gt;。一旦最后一个标签的末尾的&lt;span class=&#39;colorbox&#39; id=&#39;colorbox279&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;m&lt;/span&gt; &lt;/span&gt;字节被推出前127个字节，注入器就停止响应。对于类型A和类型AAAA的查询，以及QNAME中的任何标签数量，限制都是相同的。RFC 1035规定的最大名称长度为255字节&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:rfc1035&#39;&gt;20&lt;/a&gt; §2.3.4]&lt;/span&gt;。
&lt;/p&gt;&lt;!-- l. 1014 --&gt;&lt;p class=&#39;indent&#39;&gt;虽然知道绝对限制及其原因令人满意，但在实践中，130字节和131字节之间几乎没有区别。在本文的许多实验中（一些是在我们理解解析算法的细微差别之前进行的），我们使用了&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox280x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;ff&lt;/span&gt;&lt;/span&gt;的标签长度前缀，这比最大可能值少1字节。对于足够大的长度前缀，130字节的问题（question）部分响应与2012年klzgrad的发现一致&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:gfw-looking-glass-post&#39;&gt;6&lt;/a&gt;]&lt;/span&gt;。
&lt;a id=&#39;x1-18r3&#39;&gt;&lt;/a&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3c&#34;&gt; &lt;a id=&#34;sec:3c-Incomplete-patch-wallbleed-v2&#34; href=&#34;#sec:3c-Incomplete-patch-wallbleed-v2&#34;&gt;&lt;span
    class=&#34;titlemark&#34;&gt;C.&lt;/span&gt; 不完整的补丁（Wallbleed v2）&lt;/a&gt;
&lt;/h3&gt;
&lt;!-- l. 1028 --&gt;&lt;p class=&#39;indent&#39;&gt;  GFW尝试在2023年9月至11月之间修补Wallbleed，增加了对DNS消息解析算法的限制。我们在&lt;a href=&#39;#sec:7-monitoring-the-censors-patching-behavior&#39;&gt;第VII节&lt;/a&gt;中记录了补丁的进展。QTYPE和QCLASS字段不再可以省略，且QCLASS必须为&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox281&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;&lt;/span&gt;。此外，标签长度前缀溢出查询末尾但未达到127字节QNAME长度阈值的查询将被忽略。如下查询不再能泄露DNS注入器内存：
&lt;div class=&#34;px-4&#34;&gt;
&lt;!-- l. 1039 --&gt;&lt;p class=&#39;indent&#39;&gt;
  &lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox238&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
  id=&#39;colorbox239&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0120&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox240&#39;&gt;&lt;span
      class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox241&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox242&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
  id=&#39;colorbox243&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox244&#39;&gt;&lt;span
      class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox245&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;w&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox246&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;w&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
  id=&#39;colorbox247&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;w&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox248&#39;&gt;&lt;span
      class=&#39;cmtt-10&#39;&gt;06&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox249&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox250&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
  id=&#39;colorbox251&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox252&#39;&gt; &lt;span
      class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox253&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;l&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox254&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
  id=&#39;colorbox255&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;ff&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox256&#39;&gt; &lt;span
      class=&#39;cmtt-10&#39;&gt;c&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox257&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox258&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;m&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox303x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;!-- l. 1048 --&gt;&lt;p class=&#39;indent&#39;&gt;  但第一个补丁忽略了解析循环中的一个退出条件。一个带有QTYPE和QCLASS的查询，且最终标签长度前缀超过127字节阈值，仍然会导致解析器认为查询比实际大。稍微修改的探测格式仍然可以引出内存内容：
&lt;/p&gt;&lt;!-- l. 1057 --&gt;
&lt;div class=&#34;px-4&#34;&gt;
  &lt;p class=&#39;indent&#39;&gt;
    &lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox259&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
        id=&#39;colorbox260&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0120&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox261&#39;&gt;&lt;span
            class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox262&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox263&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
        id=&#39;colorbox264&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox265&#39;&gt;&lt;span
            class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox266&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;w&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox267&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;w&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox268&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;w&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox269&#39;&gt;&lt;span
            class=&#39;cmtt-10&#39;&gt;06&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox270&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox271&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox272&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox273&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox274&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;l&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox275&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox276&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox277&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;c&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox278&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox279&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;m&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox325x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;ff&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
        id=&#39;colorbox280&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox281&#39;&gt;&lt;span
            class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;!-- l. 1068 --&gt;&lt;p class=&#39;indent&#39;&gt;  我们将补丁前和补丁后的漏洞分别命名为Wallbleed v1和Wallbleed v2。我们在本文描述的大多数实验中使用了Wallbleed v1探测。在补丁后，我们能够使用修改后的探测恢复实验，直到Wallbleed v2在2024年3月最终被修补。在Wallbleed v2中，只有最大长度溢出是可能的：标签长度为&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox328x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;ff&lt;/span&gt;&lt;/span&gt;有效，但&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox329x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;20&lt;/span&gt;&lt;/span&gt;无效。我们发现最短的域名，如&lt;span class=&#39;cmtt-10&#39;&gt;3.tt&lt;/span&gt;，不再能作为触发器，因此在后来的实验中使用了&lt;span class=&#39;cmtt-10&#39;&gt;te.rs&lt;/span&gt;，下一个最短的有效域名。
  &lt;/p&gt;&lt;!-- l. 1084 --&gt;&lt;p class=&#39;indent&#39;&gt;
  &lt;a id=&#39;x1-19r4&#39;&gt;&lt;/a&gt;  &lt;h3 class=&#34;subsectionHead&#34; id=&#34;3d&#34;&gt; &lt;a id=&#34;sec:3d-other-details-of-injection-triggering&#34; href=&#34;#sec:3d-other-details-of-injection-triggering&#34;&gt;&lt;span
    &lt;h3 class=&#34;subsectionHead&#34; id=&#34;3d&#34;&gt; &lt;a id=&#34;sec:3d-other-details-of-injection-triggering&#34; href=&#34;#sec:3d-other-details-of-injection-triggering&#34;&gt;&lt;span
        class=&#34;titlemark&#34;&gt;D.&lt;/span&gt; 注入触发的其他细节&lt;/a&gt;
      &lt;/h3&gt;
      &lt;!-- l. 1087 --&gt;&lt;p class=&#39;indent&#39;&gt;    这里我们评论了一些触发注入条件的其他细节。请注意，GFW中还有其他类型的DNS注入器&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;8&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2021a&#39;&gt;9&lt;/a&gt;]&lt;/span&gt;，它们有自己的封锁列表和实现上的怪癖。
      &lt;/p&gt;&lt;!-- l. 1092 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;注入器默认响应类型为A。   &lt;/span&gt;DNS注入器仅响应QNAME与某个封锁列表匹配的查询。易受攻击的注入器对类型AAAA的查询注入类型AAAA的响应，对所有其他类型的查询注入类型A的响应。
      &lt;/p&gt;&lt;!-- l. 1099 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;注入器适用于IPv4和IPv6。   &lt;/span&gt;承载DNS查询的UDP数据报可以通过IPv4或IPv6发送；注入器对两者都响应，并根据查询伪造IPv4或IPv6响应。（这里我们指的是查询发送的IP版本，而不是查询的QTYPE。通过IPv4发送的查询可能请求IPv6地址，反之亦然。）2023年5月9日，我们发送了QNAME为
      &lt;span
      class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox407&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;ff&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox408&#39;&gt;
      &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox409&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox410&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;o&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
      id=&#39;colorbox411&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;g&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox412&#39;&gt; &lt;span
          class=&#39;cmtt-10&#39;&gt;l&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox413&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox414&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;.&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
      id=&#39;colorbox415&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox416&#39;&gt; &lt;span
          class=&#39;cmtt-10&#39;&gt;m&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox417&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;
    &lt;/span&gt;
      的Wallbleed探针到阿里云（北京，AS37963）的一个IPv6主机和中国的一个非DNS服务器2400:dd01:103a:4041::101。在这两种情况下，我们都得到了包含泄露内存的注入DNS响应。然而，我们无法在相反方向触发DNS注入，即从中国的VPS发送查询到美国的VPS或其他IPv6地址。这可能是因为注入器没有部署在我们从中国VPS到我们测试的外国目的地的路径上。
      &lt;/p&gt;&lt;!-- l. 1141 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;仅查看目标端口53。   &lt;/span&gt;2023年5月9日，我们从美国的VPS向中国的VPS发送了&lt;span class=&#39;cmtt-10&#39;&gt;google.sm &lt;/span&gt;的查询，UDP目标端口在0到65535之间变化。只有发送到端口53的查询导致了注入。这一观察结果与Lowe等人在2007年&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Lowe2007a&#39;&gt;21&lt;/a&gt; §6.4]&lt;/span&gt;和Anonymous等人在2020年&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;8&lt;/a&gt; §2.1]&lt;/span&gt;的先前发现一致。  &lt;/p&gt;&lt;!-- l. 1152 --&gt;&lt;p class=&#39;indent&#39;&gt;
  &lt;a id=&#39;x1-20r4&#39;&gt;&lt;/a&gt;
  &lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;4&#34;&gt;&lt;a id=&#34;sec:4-what-information-is-leaked&#34;
    href=&#34;#sec:4-what-information-is-leaked&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;IV.&lt;/span&gt; 洩露了哪些信息？&lt;/a&gt;
  &lt;/h2&gt;
  &lt;a id=&#39;Q1-1-3&#39;&gt;&lt;/a&gt;
&lt;!-- l. 1158 --&gt;&lt;p class=&#39;indent&#39;&gt; 为了更好地理解漏洞泄露了哪些信息，我们进行了为期两年的纵向测量，从2021年11月21日到2023年11月29日。&lt;a href=&#34;#tbl:1-experiment-timeline-vantage-points&#34;&gt;表I&lt;/a&gt;总结了这个实验以及后续章节的实验。
&lt;/p&gt;
&lt;!-- l. 967 --&gt;
&lt;div class=&#39;float&#39; id=&#39;tbl:1-experiment-timeline-vantage-points&#39;&gt;
&lt;a id=&#39;x1-17r1&#39;&gt;&lt;/a&gt;
&lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:1-experiment-timeline-vantage-points&#34;&gt;表I&lt;/a&gt;：实验时间线和观察点。总共，我们在腾讯云（TC，北京）（AS45090）使用了三个VPS，在科罗拉多大学博尔德分校（Scan，CO）（AS104）和马萨诸塞大学阿默斯特分校（Long，MA）（AS1249）各使用了一台机器。
&lt;/p&gt;
&lt;div class=&#39;tabular&#39;&gt;
    &lt;table class=&#39;tabular&#39; id=&#39;TBL-1&#39; style=&#34;width: 100%; overflow: auto;&#34;&gt;
        &lt;colgroup id=&#39;TBL-1-1g&#39;&gt;
            &lt;col id=&#39;TBL-1-1&#39; /&gt;
            &lt;col id=&#39;TBL-1-2&#39; /&gt;
            &lt;col id=&#39;TBL-1-3&#39; /&gt;
            &lt;col id=&#39;TBL-1-4&#39; /&gt;
            &lt;col id=&#39;TBL-1-5&#39; /&gt;
            &lt;col id=&#39;TBL-1-6&#39; /&gt;
            &lt;col id=&#39;TBL-1-7&#39; /&gt;
            &lt;col id=&#39;TBL-1-8&#39; /&gt;
        &lt;/colgroup&gt;
        &lt;tr id=&#39;TBL-1-1-&#39;&gt;
            &lt;td class=&#39;td11&#39; id=&#39;TBL-1-1-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;实验 &lt;/td&gt;
            &lt;td class=&#39;td11&#39; colspan=&#39;2&#39; id=&#39;TBL-1-1-2&#39; style=&#39;white-space:nowrap; text-align:center;&#39;&gt;
                &lt;div class=&#39;multicolumn&#39; style=&#39;white-space:nowrap; text-align:center;&#39;&gt;时间跨度&lt;/div&gt;
            &lt;/td&gt;
            &lt;td class=&#39;td00&#39; colspan=&#39;2&#39; id=&#39;TBL-1-1-4&#39; style=&#39;white-space:nowrap; text-align:center;&#39;&gt;
                &lt;div class=&#39;multicolumn&#39; style=&#39;white-space:nowrap; text-align:center;&#39;&gt;持续时间&lt;/div&gt;
            &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-1-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;中国主机 &lt;/td&gt;
            &lt;td class=&#39;td11&#39; id=&#39;TBL-1-1-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;美国主机 &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-1-8&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;章节 &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr id=&#39;TBL-1-2-&#39;&gt;
            &lt;td class=&#39;td11&#39; id=&#39;TBL-1-2-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;特征化 &lt;/td&gt;
            &lt;td class=&#39;td11&#39; id=&#39;TBL-1-2-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 2021年10月2日 – 2022年2月10日
            &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-2-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;  &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-2-4&#39;
                style=&#39;white-space:nowrap; text-align:left; border-right: none !important;&#39;&gt;4 &lt;/td&gt;
            &lt;td class=&#39;td01&#39; id=&#39;TBL-1-2-5&#39;
                style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;月 &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-2-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 1 (TC，北京)  &lt;/td&gt;
            &lt;td class=&#39;td11&#39; id=&#39;TBL-1-2-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;1 (Long, MA) &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-2-8&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;a
                href=&#39;#sec:3b-maximizing-leaked-bytes-per-response&#39;&gt;§III-B&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr id=&#39;TBL-1-3-&#39;&gt;
            &lt;td class=&#39;td11&#39; id=&#39;TBL-1-3-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;重新特征化 &lt;/td&gt;
            &lt;td class=&#39;td11&#39; id=&#39;TBL-1-3-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 2023年5月9日 – 9月10日
            &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-3-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &amp;amp; 2024年2月  &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-3-4&#39;
                style=&#39;white-space:nowrap; text-align:left; border-right: none !important;&#39;&gt;5 &lt;/td&gt;
            &lt;td class=&#39;td01&#39; id=&#39;TBL-1-3-5&#39;
                style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;月 &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-3-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 1 (TC，北京)  &lt;/td&gt;
            &lt;td class=&#39;td11&#39; id=&#39;TBL-1-3-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;1 (Long, MA)	 &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-3-8&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;a
                    href=&#39;#sec:3-demonstrating-overflow&#39;&gt;§III&lt;/a&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr id=&#39;TBL-1-4-&#39;&gt;
            &lt;td class=&#39;td11&#39; id=&#39;TBL-1-4-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;纵向 &lt;/td&gt;
            &lt;td class=&#39;td11&#39; id=&#39;TBL-1-4-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 2021年11月21日 – 2024年4月16日
            &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-4-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;
            &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-4-4&#39;
                style=&#39;white-space:nowrap; text-align:left; border-right: none !important;&#39;&gt;2 &lt;/td&gt;
            &lt;td class=&#39;td01&#39; id=&#39;TBL-1-4-5&#39;
                style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;年 &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-4-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 3 (TC，北京)  &lt;/td&gt;
            &lt;td class=&#39;td11&#39; id=&#39;TBL-1-4-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;1 (Long, MA) &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-4-8&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;a
                    href=&#39;#sec:4-what-information-is-leaked&#39;&gt;§IV&lt;/a&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr id=&#39;TBL-1-5-&#39;&gt;
            &lt;td class=&#39;td11&#39; id=&#39;TBL-1-5-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;观察我们自己的 &lt;/td&gt;
            &lt;td class=&#39;td11&#39; id=&#39;TBL-1-5-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 2023年8月12日 – 9月8日
            &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-5-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &amp;amp; 2024年3月13日  &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-5-4&#39;
                style=&#39;white-space:nowrap; text-align:left; border-right: none !important;&#39;&gt;4 &lt;/td&gt;
            &lt;td class=&#39;td01&#39; id=&#39;TBL-1-5-5&#39;
                style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;周 &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-5-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 1 (TC，北京)  &lt;/td&gt;
            &lt;td class=&#39;td11&#39; id=&#39;TBL-1-5-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;1 (Scan, CO) &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-5-8&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;a
                    href=&#39;#sec:5-seeing-out-own-traffic&#39;&gt;§V&lt;/a&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr id=&#39;TBL-1-6-&#39;&gt;
            &lt;td class=&#39;td11&#39; id=&#39;TBL-1-6-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;互联网扫描 &lt;/td&gt;
            &lt;td class=&#39;td11&#39; id=&#39;TBL-1-6-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 2023年6月25日 &amp;amp; 8月23日
            &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-6-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &amp;amp; 2024年3月6日  &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-6-4&#39;
                style=&#39;white-space:nowrap; text-align:left; border-right: none !important;&#39;&gt;3 &lt;/td&gt;
            &lt;td class=&#39;td01&#39; id=&#39;TBL-1-6-5&#39;
                style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;天 &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-6-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; -  &lt;/td&gt;
            &lt;td class=&#39;td11&#39; id=&#39;TBL-1-6-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;1 (Scan, CO) &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-6-8&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;a
                    href=&#39;#sec:6-ip-addresses-affected-by-wallbleed&#39;&gt;§VI&lt;/a&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr id=&#39;TBL-1-7-&#39;&gt;
            &lt;td class=&#39;td11&#39; id=&#39;TBL-1-7-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;补丁行为 &lt;/td&gt;
            &lt;td class=&#39;td11&#39; id=&#39;TBL-1-7-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 2023年9月6日 – 11月7日
            &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-7-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &amp;amp; 2024年3月6日 –
                4月16日
                2024 &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-7-4&#39;
                style=&#39;white-space:nowrap; text-align:left; border-right: none !important;&#39;&gt;3 &lt;/td&gt;
            &lt;td class=&#39;td01&#39; id=&#39;TBL-1-7-5&#39;
                style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;月 &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-7-6&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 2 (TC，北京)  &lt;/td&gt;
            &lt;td class=&#39;td11&#39; id=&#39;TBL-1-6-7&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt;2 (Scan &amp; Long) &lt;/td&gt;
            &lt;td class=&#39;td10&#39; id=&#39;TBL-1-7-8&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;a
                    href=&#39;#sec:7-monitoring-the-censors-patching-behavior&#39;&gt;§VII&lt;/a&gt;, &lt;a
                    href=&#39;#sec:3c-Incomplete-patch-wallbleed-v2&#39;&gt;§III-C&lt;/a&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- l. 1164 --&gt;&lt;p class=&#39;indent&#39;&gt; 基于&lt;a href=&#39;#sec:3b-maximizing-leaked-bytes-per-response&#39;&gt;第III-B节&lt;/a&gt;中的观察，我们设计了以下&lt;span class=&#39;ptmri8t-&#39;&gt;Wallbleed探针&lt;/span&gt;来触发漏洞：
&lt;/p&gt;&lt;!-- l. 1167 --&gt;
&lt;div class=&#34;px-4&#34;&gt;
  &lt;p class=&#39;indent&#39;&gt;
    &lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox283&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
        id=&#39;colorbox284&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0120&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox285&#39;&gt;&lt;span
            class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox286&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox287&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
        id=&#39;colorbox288&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox289&#39;&gt;&lt;span
            class=&#39;cmtt-10&#39;&gt;01&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox290&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;3&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox291&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;ff&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox292&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;t&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox293&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;t&lt;/span&gt; &lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;!-- l. 1176 --&gt;&lt;p class=&#39;noindent&#39;&gt;该探针是对&lt;span class=&#39;cmtt-10&#39;&gt;3.tt&lt;/span&gt;的查询，但在QNAME的终止空标签之前被截断（省略了QCLASS和QTYPE字段），并且将&lt;span class=&#39;cmtt-10&#39;&gt;tt&lt;/span&gt;标签长度前缀从&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox352x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;02&lt;/span&gt;&lt;/span&gt;增加到&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox353x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;ff&lt;/span&gt;&lt;/span&gt;。（根据&lt;a href=&#39;#fn:minor-subtlety-implicit-null-terminator&#39;&gt;脚注3&lt;/a&gt;，对于这么短的QNAME，不需要最终的&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox354x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;&lt;/span&gt;标签。）如在&lt;a href=&#39;#sec:3b-maximizing-leaked-bytes-per-response&#39;&gt;第III-B节&lt;/a&gt;中解释的那样，这个探针导致了124字节的内存泄漏。
&lt;/p&gt;&lt;!-- l. 1189 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;实验设置。&lt;/span&gt;我们从美国大学的主机向中国的一个IP地址发送了Wallbleed探针。中国的地址是腾讯云（AS45090）下我们控制的一个VPS。我们在一千个端口号（从10001到11000）的范围内变化探针的UDP源端口，因为之前的工作表明源端口号可能会影响DNS注入&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Bhaskar2022a&#39;&gt;22&lt;/a&gt;]&lt;/span&gt;。我们以每秒100个数据包（pps）的速率发送探针，并在两年内收集了51亿个&lt;span class=&#39;ptmri8t-&#39;&gt;Wallbleed响应&lt;/span&gt;。
&lt;/p&gt;&lt;!-- l. 1203 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;查询名称。&lt;/span&gt;我们最初使用的QNAME &lt;span class=&#39;cmtt-10&#39;&gt;3.tt&lt;/span&gt;显然已经从注入器的封锁列表中删除，并于2023年8月7日11:04:01（中国标准时间，UTC+8）停止引发注入响应。我们将QNAME更改为&lt;span class=&#39;cmtt-10&#39;&gt;4.tt&lt;/span&gt;，这是来自&lt;a href=&#39;#sec:3b-maximizing-leaked-bytes-per-response&#39;&gt;第III-B节&lt;/a&gt;的另一个短名称。
&lt;/p&gt;&lt;!-- l. 1215 --&gt;&lt;p class=&#39;indent&#39;&gt;
&lt;a id=&#39;x1-21r1&#39;&gt;&lt;/a&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4a&#34;&gt; &lt;a id=&#34;sec:4a-wallbleed-leaks-network-traffic&#34; href=&#34;#sec:4a-wallbleed-leaks-network-traffic&#34;&gt;&lt;span
    class=&#34;titlemark&#34;&gt;A.&lt;/span&gt; Wallbleed泄露网络流量&lt;/a&gt;
  &lt;/h3&gt;
  &lt;!-- l. 1218 --&gt;&lt;p class=&#39;indent&#39;&gt;  查看124字节泄露的内存片段样本，可以立即发现它们包含&lt;span class=&#39;ptmri8t-&#39;&gt;网络流量片段&lt;/span&gt;。这些片段至少部分来源于通过注入设备的包：在&lt;a href=&#39;#sec:5-seeing-out-own-traffic&#39;&gt;第V节&lt;/a&gt;中，我们展示了我们自己通过GFW发送的包负载的恢复。然而，协议的混合与预期的所有进入或离开中国的流量的统一样本不同。
  &lt;/p&gt;
  &lt;!-- l. 1228 --&gt;&lt;p class=&#39;indent&#39;&gt;  在对响应样本进行初步手动分析后，我们使用正则表达式搜索常见或敏感字符串。为了降低分析可识别个人信息的风险，我们的程序仅输出匹配的数量。如&lt;a href=&#34;#tbl:2-regex-matches-wallbleed-responses-2years&#34;&gt;表II&lt;/a&gt;所示，我们发现了UPnP、SSDP、HTTP、SMTP、SSH和TLS的实例，以及可能的敏感信息，如HTTP cookies和密码。
  &lt;/p&gt;

&lt;div class=&#34;float&#34; id=&#39;tbl:2-regex-matches-wallbleed-responses-2years&#39;&gt;
    &lt;a id=&#39;x1-15r2&#39;&gt;&lt;/a&gt;
    &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:2-regex-matches-wallbleed-responses-2years&#34;&gt;表II&lt;/a&gt;：对观察到的51亿个Wallbleed响应进行正则表达式匹配的次数，历时两年。&lt;/p&gt;

    &lt;div class=&#39;tabular&#39;&gt;
        &lt;table class=&#39;tabular&#39; id=&#39;TBL-2&#39;&gt;
            &lt;colgroup id=&#39;TBL-2-1g&#39;&gt;
                &lt;col id=&#39;TBL-2-1&#39; /&gt;
                &lt;col id=&#39;TBL-2-2&#39; /&gt;
                &lt;col id=&#39;TBL-2-3&#39; /&gt;
                &lt;col id=&#39;TBL-2-4&#39; /&gt;
                &lt;col id=&#39;TBL-2-5&#39; /&gt;
            &lt;/colgroup&gt;
            &lt;tr id=&#39;TBL-2-1-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-1-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 正则表达式 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-1-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 协议 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; colspan=&#39;2&#39; id=&#39;TBL-2-1-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt;
                    &lt;div class=&#39;multicolumn&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt;计数&lt;/div&gt;
                &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-1-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 比例 &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-2-2-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-2-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                        class=&#39;cmtt-10&#39;&gt;ssdp:discover &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-2-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; SSDP &lt;/td&gt;
                &lt;td class=&#39;td10&#39; id=&#39;TBL-2-2-3&#39;
                    style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 184&lt;/td&gt;
                &lt;td class=&#39;td01&#39; id=&#39;TBL-2-2-4&#39;
                    style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;M &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-2-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 3.61% &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-2-3-&#39;&gt;
                &lt;td class=&#39;td
  11&#39; id=&#39;TBL-2-3-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;UPnP/IGD\xml &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-3-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; UPnP &lt;/td&gt;
                &lt;td class=&#39;td10&#39; id=&#39;TBL-2-3-3&#39;
                    style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 174&lt;/td&gt;
                &lt;td class=&#39;td01&#39; id=&#39;TBL-2-3-4&#39;
                    style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;M &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-3-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 3.41% &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-2-4-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-4-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                        class=&#39;cmtt-10&#39;&gt;(?s)[3-4]\xfftt.....-CONTROL&lt;/span&gt; &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-4-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;a
                        href=&#39;#sec:4b-the-four-digest-bytes&#39;&gt;(§IV-B)&lt;/a&gt; &lt;/td&gt;
                &lt;td class=&#39;td10&#39; id=&#39;TBL-2-4-3&#39;
                    style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 121&lt;/td&gt;
                &lt;td class=&#39;td01&#39; id=&#39;TBL-2-4-4&#39;
                    style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;M &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-4-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 2.37% &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-2-5-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-5-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                        class=&#39;cmtt-10&#39;&gt;\x45\x00
                    &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-5-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;a
                  href=&#39;#sec:4a-wallbleed-leaks-network-traffic&#39;&gt;(§IV-A)&lt;/a&gt; &lt;/td&gt;
                &lt;td class=&#39;td10&#39; id=&#39;TBL-2-5-3&#39;
                    style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 2.8&lt;/td&gt;
                &lt;td class=&#39;td01&#39; id=&#39;TBL-2-5-4&#39;
                    style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;M &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-5-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 0.05% &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-2-6-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-6-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                        class=&#39;cmtt-10&#39;&gt;uuid:WAN
                    &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-6-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; SSDP &lt;/td&gt;
                &lt;td class=&#39;td10&#39; id=&#39;TBL-2-6-3&#39;
                    style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 34&lt;/td&gt;
                &lt;td class=&#39;td01&#39; id=&#39;TBL-2-6-4&#39;
                    style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;M &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-6-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 0.67%&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-2-7-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-7-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                        class=&#39;cmtt-10&#39;&gt;Host:␣&lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-7-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; HTTP &lt;/td&gt;
                &lt;td class=&#39;td10&#39; id=&#39;TBL-2-7-3&#39;
                    style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 21&lt;/td&gt;
                &lt;td class=&#39;td01&#39; id=&#39;TBL-2-7-4&#39;
                    style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;M &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-7-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 0.41% &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-2-8-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-8-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                        class=&#39;cmtt-10&#39;&gt;(?i)Date:\s* …&lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-8-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;a
                  href=&#39;#sec:4c-how-long-bytes-remain-in-memory&#39;&gt;(§IV-C)&lt;/a&gt; &lt;/td&gt;
                &lt;td class=&#39;td10&#39; id=&#39;TBL-2-8-3&#39;
                    style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 16&lt;/td&gt;
                &lt;td class=&#39;td01&#39; id=&#39;TBL-2-8-4&#39;
                    style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;M &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-8-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 0.31% &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-2-9-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-9-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                        class=&#39;cmtt-10&#39;&gt;\x7f\x00\x00 &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-9-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;a
                  href=&#39;#sec:4d-inferring-the-gfws-internal-architecture&#39;&gt;(§IV-D)&lt;/a&gt; &lt;/td&gt;
                &lt;td class=&#39;td10&#39; id=&#39;TBL-2-9-3&#39;
                    style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 2.8&lt;/td&gt;
                &lt;td class=&#39;td01&#39; id=&#39;TBL-2-9-4&#39;
                    style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;M &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-9-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 0.05% &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-2-10-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-10-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                        class=&#39;cmtt-10&#39;&gt;Cookie:␣
                      &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-10-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; HTTP &lt;/td&gt;
                &lt;td class=&#39;td10&#39; id=&#39;TBL-2-10-3&#39;
                    style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 2.0&lt;/td&gt;
                &lt;td class=&#39;td01&#39; id=&#39;TBL-2-10-4&#39;
                    style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;M &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-10-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 0.04% &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-2-11-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-11-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                        class=&#39;cmtt-10&#39;&gt;RCPT␣TO
                      &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-11-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; SMTP &lt;/td&gt;
                &lt;td class=&#39;td10&#39; id=&#39;TBL-2-11-3&#39;
                    style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 72.5&lt;/td&gt;
                &lt;td class=&#39;td01&#39; id=&#39;TBL-2-11-4&#39;
                    style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;k &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-11-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 0.0014% &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-2-12-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-12-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                        class=&#39;cmtt-10&#39;&gt;&amp;amp;key=
                    &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-12-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; URL &lt;/td&gt;
                &lt;td class=&#39;td10&#39; id=&#39;TBL-2-12-3&#39;
                    style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 58.1&lt;/td&gt;
                &lt;td class=&#39;td01&#39; id=&#39;TBL-2-12-4&#39;
                    style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;k &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-12-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 0.0011% &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-2-13-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-13-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                        class=&#39;cmtt-10&#39;&gt;MAIL␣FROM
                      &lt;/span&gt;&lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-13-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; SMTP &lt;/td&gt;
                &lt;td class=&#39;td10&#39; id=&#39;TBL-2-13-3&#39;
                    style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 42.4&lt;/td&gt;
                &lt;td class=&#39;td01&#39; id=&#39;TBL-2-13-4&#39;
                    style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;k &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-2-13-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 0.0008% &lt;/td&gt;
            &lt;tr id=&#39;TBL-2-14-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-2-14-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                      class=&#39;cmtt-10&#39;&gt;&amp;amp;password=
                    &lt;/span&gt;&lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-2-14-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; URL &lt;/td&gt;
              &lt;td class=&#39;td10&#39; id=&#39;TBL-2-14-3&#39;
                  style=&#39;white-space:nowrap; text-align:right; border-right: none !important;&#39;&gt; 26.9&lt;/td&gt;
              &lt;td class=&#39;td01&#39; id=&#39;TBL-2-14-4&#39;
                  style=&#39;white-space:nowrap; text-align:left; border-left: none !important;&#39;&gt;k &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-2-14-5&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 0.0005% &lt;/td&gt;

            &lt;/tr&gt;
        &lt;/table&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;!-- l. 1245 --&gt;&lt;p class=&#39;indent&#39;&gt;  值得注意的是，内存中包含了除DNS之外的应用层协议。由于注入器仅在UDP端口53上响应DNS查询（&lt;a href=&#39;#sec:3d-other-details-of-injection-triggering&#39;&gt;第III-D节&lt;/a&gt;），我们可能预期只会看到DNS或仅有UDP端口53的流量；但实际上，我们看到了&lt;span class=&#39;ptmri8t-&#39;&gt;各种协议，包括那些通常在不同端口和传输协议上运行的协议&lt;/span&gt;。相当大的一部分由UPnP（通用即插即用）和SSDP（简单服务发现协议）组成。UPnP使用HTTP——但UPnP的数量比其他形式的HTTP多一个数量级。&lt;a href=&#34;#sec:3-demonstrating-overflow&#34;&gt;第III节&lt;/a&gt;中的示例响应就是一个这样的UPnP实例。我们从1.66亿个UPnP片段中提取了HTTP Location头：在每个案例中，URL的主机部分是RFC 1918&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:rfc1918&#39;&gt;23&lt;/a&gt;]&lt;/span&gt;的私有范围内的字面IP地址。私有地址与UPnP和SSDP一致，后者通常用于本地网络中的服务发现。然而，很难解释为什么它们在易受攻击的注入器的内存中以如此高的频率出现。
&lt;/p&gt;&lt;!-- l. 1277 --&gt;&lt;p class=&#39;indent&#39;&gt;  除了应用层协议，还有网络层和传输层的头和数据包。例如，有&lt;span class=&#39;ptmri8t-&#39;&gt;IPv4头&lt;/span&gt;。为了找到这些，我们首先寻找通常开始于IPv4头的两字节模式&lt;span class=&#39;colorbox one-byte-width cb-white-FFFFFF&#39; id=&#39;colorbox355x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;45&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-white-FFFFFF&#39; id=&#39;colorbox356x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt; &lt;/span&gt;，然后（将后续字节解释为头）过滤出有效的IP校验和。&lt;a href=&#34;#tbl:3-common-protocol-fields-ipv-headers&#34;&gt;表III&lt;/a&gt;显示了181,834个IPv4头中&lt;span class=&#39;cmtt-10&#39;&gt;协议&lt;/span&gt;字段的分布。TCP、UDP和ICMP是最常见的，还有43个其他协议的长尾。
&lt;/p&gt;&lt;!-- l. 1298 --&gt;
&lt;div class=&#39;float&#39; id=&#39;tbl:3-common-protocol-fields-ipv-headers&#39;&gt;


    &lt;a id=&#39;x1-16r3&#39;&gt;&lt;/a&gt;
    &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:3-common-protocol-fields-ipv-headers&#34;&gt;表III&lt;/a&gt;：IPv4头部中最常见的 &lt;span
        class=&#39;cmtt-10&#39;&gt;protocol&lt;/span&gt;（协议）字段。只显示计数超过10次的。&lt;/p&gt;


  &lt;div class=&#39;tabular&#39;&gt;
      &lt;table class=&#39;tabular&#39; id=&#39;TBL-3&#39;&gt;
          &lt;colgroup id=&#39;TBL-3-1g&#39;&gt;
              &lt;col id=&#39;TBL-3-1&#39; /&gt;
              &lt;col id=&#39;TBL-3-2&#39; /&gt;
              &lt;col id=&#39;TBL-3-3&#39; /&gt;
          &lt;/colgroup&gt;
          &lt;tr id=&#39;TBL-3-1-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-1-1&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 编号 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-1-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 协议名称 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-1-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 计数 &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-3-2-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-2-1&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 6 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-2-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; TCP &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-2-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 120,087 &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-3-3-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-3-1&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 17 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-3-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; UDP &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-3-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 59,882 &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-3-4-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-4-1&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 1 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-4-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; ICMP &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-4-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 1,735 &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-3-5-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-5-1&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 50 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-5-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; ESP &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-5-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 38 &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-3-6-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-6-1&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 0 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-6-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; IPv6 Hop-by-Hop Option
              &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-6-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 36 &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-3-7-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-7-1&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 47 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-7-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; GRE &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-3-7-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 12 &lt;/td&gt;
          &lt;/tr&gt;
      &lt;/table&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;!-- l. 1309 --&gt;&lt;p class=&#39;indent&#39;&gt;  有7,743个案例中，IP头后面跟着TCP头和足够的数据，形成了一个完整的TCP段，具有一致的长度字段和有效的IP和TCP校验和。TCP头包含标志和端口号，我们可以通过这些启发式地推断出IP头中的两个IP地址哪个是服务器，哪个是客户端。为了避免分析可识别个人信息，我们将IP地址匿名化为两种粗略的类别：&lt;span class=&#39;ptmri8t-&#39;&gt;私有&lt;/span&gt;（RFC 1918）和&lt;span class=&#39;ptmri8t-&#39;&gt;公共&lt;/span&gt;。然后我们统计了客户端/服务器和私有/公共的比例；结果如&lt;a href=&#34;#tbl:4-client-server-private-public-tcp-flows&#34;&gt;表IV&lt;/a&gt;所示。

&lt;/p&gt;&lt;!-- l. 1324 --&gt;
&lt;div class=&#39;float&#39; id=&#39;tbl:4-client-server-private-public-tcp-flows&#39;&gt;
  &lt;a id=&#39;x1-17r4&#39;&gt;&lt;/a&gt;
  &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:4-client-server-private-public-tcp-flows&#34;&gt;表IV&lt;/a&gt;：从7743个完整的TCP段推断出的客户端/服务器和私有/公共流量。&lt;/p&gt;


  &lt;div class=&#39;tabular&#39;&gt;
      &lt;table class=&#39;tabular&#39; id=&#39;TBL-4&#39;&gt;
          &lt;colgroup id=&#39;TBL-4-1g&#39;&gt;
              &lt;col id=&#39;TBL-4-1&#39; /&gt;
              &lt;col id=&#39;TBL-4-2&#39; /&gt;
              &lt;col id=&#39;TBL-4-3&#39; /&gt;
          &lt;/colgroup&gt;
          &lt;tr id=&#39;TBL-4-1-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-1-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 客户端地址 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-1-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 服务器地址 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-1-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 计数 &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-4-2-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-2-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 私有 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-2-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 私有 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-2-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 384 &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-4-3-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-3-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 私有 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-3-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 公共 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-3-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 6,276&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-4-4-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-4-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 公共 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-4-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 私有 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-4-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 193 &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr id=&#39;TBL-4-5-&#39;&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-5-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 公共 &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-5-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 公共     &lt;/td&gt;
              &lt;td class=&#39;td11&#39; id=&#39;TBL-4-5-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 890 &lt;/td&gt;
          &lt;/tr&gt;
      &lt;/table&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;!-- l. 1333 --&gt;&lt;p class=&#39;indent&#39;&gt;  由于DNS注入器监控公共互联网流量，我们预期从其内存中恢复的TCP段大多会有公共IP地址；然而，只有11%的TCP段是公共到公共的。大多数实际上涉及一个私有客户端和一个公共服务器。因为私有IP地址不是全球可路由的，人们可能会怀疑它们代表了GFW的内部流量（这与上面关于UPnP的观察一致）。然而，内存泄漏的有限大小意味着我们只能统计相对较短的TCP段（最多125字节）。也有可能我们看到的TCP段被封装在一个更高级别的协议中，如GRE，而不是直接路由通过中间设备。
&lt;/p&gt;
&lt;!-- l. 1375 --&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4b&#34;&gt; &lt;a id=&#34;sec:4b-the-four-digest-bytes&#34; href=&#34;#sec:4b-the-four-digest-bytes&#34;&gt;&lt;span
  class=&#34;titlemark&#34;&gt;B.&lt;/span&gt; 四个“摘要”字节&lt;/a&gt;
&lt;/h3&gt;
&lt;!-- l. 1380 --&gt;&lt;p class=&#39;indent&#39;&gt;  在纵向实验的开始，Wallbleed响应中泄露数据的前4个字节与其他字节不同。它们通常看起来更随机，这在泄漏的其他部分由可读的ASCII组成时尤其明显。不同的字节序列可能归因于部分覆盖的内存，但这不同：它始终是前4个字节，&lt;span class=&#39;footnote-mark&#39;&gt;&lt;a href=&#39;#fn:special-case-17-byte-query-digest-bytes&#39;&gt;&lt;sup class=&#39;textsuperscript&#39;&gt;4&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id=&#39;x1-26f4&#39;&gt;&lt;/a&gt;并且它们不像其他字节那样包含网络协议的片段。我们称这些字节为“摘要”字节，假设它们代表查询包的哈希，可能用于负载均衡目的。（这只是一个猜测——我们尝试过，但没有找到能再现摘要字节的哈希算法。）摘要字节在2022年和2023年分两个阶段从Wallbleed响应中消失。
&lt;/p&gt;
&lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
    &lt;ol&gt;
        &lt;li class=&#39;footnote-text&#39;&gt;
            &lt;a id=&#39;fn:special-case-17-byte-query-digest-bytes&#39;&gt;&lt;/a&gt;
            &lt;span class=&#39;footnote-mark&#39;&gt;
                &lt;sup class=&#39;textsuperscript&#39;&gt;4&lt;/sup&gt;
            &lt;/span&gt;&lt;span class=&#39;footnotes-text&#39;&gt;在17字节查询的特殊情况下，包括本节中使用的探针，摘要字节出现在最初的&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox299&#39;&gt;&lt;span class=&#39;cmtt-8&#39;&gt;00&lt;/span&gt;&lt;/span&gt;之后，如&lt;a href=&#34;#fn:minor-subtlety-implicit-null-terminator&#34;&gt;脚注3&lt;/a&gt;中所述。&lt;/span&gt;
        &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/div&gt;
  &lt;!-- l. 1407 --&gt;&lt;p class=&#39;indent&#39;&gt;  摘要字节实际上并不是随机的，而是由DNS查询的内容决定的，包括其UDP四元组。在2022年2月15日（当时所有Wallbleed响应都有摘要字节），我们发送了具有相同有效载荷和源、目标IP地址和端口的Wallbleed探针。在所有114,717个结果注入中，前4个字节完全是&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox300&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;d8&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox301&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;fd&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox302&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;d0&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox303&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;41&lt;/span&gt; &lt;/span&gt;。然而，保持四元组不变并改变有效载荷中的一位，会导致摘要字节发生变化。&lt;span class=&#39;footnote-mark&#39;&gt;&lt;a href=&#39;#fn:changing-a-payload-bit&#39;&gt;&lt;sup class=&#39;textsuperscript&#39;&gt;5&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id=&#39;x1-28f5&#39;&gt;&lt;/a&gt;这可以与&lt;a href=&#34;#sec:5a-timestamped-magic-sequence-probes&#34;&gt;第V-A节&lt;/a&gt;中的注入器进程分配进行比较，后者依赖于四元组而不是有效载荷。
  &lt;/p&gt;

  &lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
    &lt;ol&gt;
        &lt;li class=&#39;footnote-text&#39;&gt;
            &lt;a id=&#39;fn:changing-a-payload-bit&#39;&gt;&lt;/a&gt;
            &lt;span class=&#39;footnote-mark&#39;&gt;
                &lt;sup class=&#39;textsuperscript&#39;&gt;5&lt;/sup&gt;
            &lt;/span&gt;&lt;span class=&#39;footnotes-text&#39;&gt;改变有效载荷的一位也会改变IP校验和，因此摘要字节可能仅依赖于IP和UDP头，或依赖于头和有效载荷。&lt;/span&gt;
        &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/div&gt;

  &lt;!-- l. 1461 --&gt;&lt;p class=&#39;indent&#39;&gt;  我们通过寻找一个特定的字符串&lt;span class=&#39;cmtt-10&#39;&gt;ACHE-CONTROL &lt;/span&gt;（HTTP Cache-Control头的一部分）来测量摘要字节随时间的普遍性，该字符串经常出现在Wallbleed响应的开头（&lt;a href=&#34;#tbl:2-regex-matches-wallbleed-responses-2years&#34;&gt;表II&lt;/a&gt;）。当摘要字节存在时，字符串的前4个字节会被覆盖。&lt;a href=&#34;#fig:3-wallbleed-response-rate-digest-transition&#34;&gt;图3&lt;/a&gt;显示了摘要字节在九个月内分两个阶段消失的过程。当我们开始测量时，所有响应都有摘要字节。第一个缺少摘要字节的响应是在2022年9月3日星期六01:31（中国标准时间，UTC+8）。此后，摘要字节的存在与否取决于探针的源端口，在任何给定时间点，大约一半的端口会引发摘要字节。导致摘要字节的端口映射偶尔会发生变化，但始终保持在50%的比例——我们怀疑这代表了负载均衡。在2023年6月8日星期四15:33（UTC+8）之后，摘要字节几乎完全消失。
  &lt;a id=&#39;x1-31r3&#39;&gt;&lt;/a&gt;

  &lt;div class=&#39;figure&#39;&gt;
    &lt;!-- l. 304 --&gt;
    &lt;p class=&#39;noindent&#39; id=&#39;fig:3-wallbleed-response-rate-digest-transition&#39;&gt;
        &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/mystery-5-heatmap.png&#39; /&gt; &lt;a id=&#39;x1-21r2&#39;&gt;&lt;/a&gt;
        &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:3-wallbleed-response-rate-digest-transition&#34;&gt;图3&lt;/a&gt;：下图显示了Wallbleed响应中带有摘要字节的比例，按一天内所有探针源端口的平均值计算。在2022年9月3日之前，所有响应都有摘要字节；在2023年6月8日之后，没有响应有摘要字节；在此期间，一半有，一半没有。在过渡期内，给定源端口是否引发摘要字节在短时间内是一致的。上图显示了按探针源端口和日期的摘要响应率，始终接近0%或100%。&lt;/p&gt;
  &lt;/div&gt;
  &lt;h3 class=&#34;subsectionHead&#34; id=&#34;4c&#34;&gt; &lt;a id=&#34;sec:4c-how-long-bytes-remain-in-memory&#34; href=&#34;#sec:4c-how-long-bytes-remain-in-memory&#34;&gt;&lt;span
    class=&#34;titlemark&#34;&gt;C.&lt;/span&gt; 字节在内存中停留的时间&lt;/a&gt;
  &lt;/h3&gt;
  &lt;!-- l. 1507 --&gt;&lt;p class=&#39;indent&#39;&gt;  我们通过寻找自然出现的时间戳来估计字节在内存中停留的时间，即HTTP Date头。这些字符串的格式为&lt;span class=&#39;cmtt-10&#39;&gt;Date: Wed, 21 Apr 2021
  00:00:00 GMT&lt;/span&gt;，表示HTTP响应生成的时间。&lt;a href=&#34;#fig:4-cdf-http-date-timestamps-relative-to-capture&#34;&gt;图4&lt;/a&gt;显示了包含完整Date头的1630万Wallbleed响应的&lt;span class=&#39;ptmri8t-&#39;&gt;年龄&lt;/span&gt;分布：即响应接收时间与其Date头中编码的时间戳之间的差异。大多数Date头来自最近的过去：75%在0到5秒之间，7%更老。大约10%在捕获时间相对的未来几乎正好8小时，这可能是服务器错误地将本地时间报告为UTC的结果。

  &lt;!-- l. 1541 --&gt;&lt;p class=&#39;indent&#39;&gt;  在&lt;a href=&#34;#sec:5a-timestamped-magic-sequence-probes&#34;&gt;第V-A节&lt;/a&gt;中，我们进行了类似的
      内存年龄实验，使用我们自己故意放置的时间戳。
      &lt;/p&gt;&lt;!-- l. 1545 --&gt;

  &lt;div class=&#39;figure&#39;&gt;
    &lt;!-- l. 373 --&gt;
    &lt;p class=&#39;noindent&#39; id=&#39;fig:4-cdf-http-date-timestamps-relative-to-capture&#39;&gt;
        &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/http-age-delta-time-cdf.png&#39; /&gt; &lt;a id=&#39;x1-23r3&#39;&gt;&lt;/a&gt;
        &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:4-cdf-http-date-timestamps-relative-to-capture&#34;&gt;图4&lt;/a&gt;：HTTP Date时间戳相对于捕获时间的累积分布。上图的刻度为秒；下图的刻度为小时。大多数时间戳小于5秒。时区错误使得一些看起来在未来8小时。&lt;/p&gt;
  &lt;/div&gt;
  &lt;h3 class=&#34;subsectionHead&#34; id=&#34;4d&#34;&gt; &lt;a id=&#34;sec:4d-inferring-the-gfws-internal-architecture&#34; href=&#34;#sec:4d-inferring-the-gfws-internal-architecture&#34;&gt;&lt;span
    class=&#34;titlemark&#34;&gt;D.&lt;/span&gt; 推断GFW的内部架构&lt;/a&gt;
  &lt;/h3&gt;
  &lt;!-- l. 1548 --&gt;&lt;p class=&#39;indent&#39;&gt;  泄露的内存偶尔包含看起来像x86_64指针的内容。这些是小端字节序的64位值，其最高有效的16位为零，并且位于常规地址范围内。在Linux上，典型的栈指针地址范围是&lt;span class=&#39;cmtt-10&#39;&gt;0x00007f0000000000&lt;/span&gt;–&lt;span class=&#39;cmtt-10&#39;&gt;0x00007fffffffffff&lt;/span&gt;，而代码和堆指针的地址范围是&lt;span class=&#39;cmtt-10&#39;&gt;0x0000550000000000&lt;/span&gt;–&lt;span class=&#39;cmtt-10&#39;&gt;0x000056ffffffffff&lt;/span&gt;。
  &lt;/p&gt;

  &lt;!-- l. 1586 --&gt;&lt;p class=&#39;indent&#39;&gt;  在Linux上，典型的栈包含一个栈地址，后跟一个代码地址（分别对应于保存的帧指针和返回地址）。我们在泄露的有效载荷中寻找这些模式。我们找到了70,497个例子，并注意到几个常见的模式。我们基于每个有效载荷中存在的14个64位字创建了模式模板。例如，一个栈地址（在典型的Linux栈指针范围内的64位值）被替换为单个字符‘&lt;span class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt;’。以这种方式，代码指针（‘&lt;span class=&#39;cmtt-10&#39;&gt;c&lt;/span&gt;’）和常见数字，包括零（‘&lt;span class=&#39;cmtt-10&#39;&gt;0&lt;/span&gt;’）、&lt;span class=&#39;cmsy-10&#39;&gt;−&lt;/span&gt;128（‘&lt;span class=&#39;cmtt-10&#39;&gt;1&lt;/span&gt;’）、22（‘&lt;span class=&#39;cmtt-10&#39;&gt;2&lt;/span&gt;’）和4（‘&lt;span class=&#39;cmtt-10&#39;&gt;4&lt;/span&gt;’）被替换，剩余未标记的字被转换为‘&lt;span class=&#39;cmtt-10&#39;&gt;_&lt;/span&gt;’。这产生了3,559个独特的模式，我们在&lt;a href=&#34;#fig:5-when-we-see-stack-pattern.weekly&#34;&gt;图5&lt;/a&gt;中绘制了最常出现的模式。
  &lt;/p&gt;

  &lt;div class=&#39;figure&#39;&gt;
    &lt;!-- l. 373 --&gt;
    &lt;p class=&#39;noindent&#39; id=&#39;fig:5-when-we-see-stack-pattern.weekly&#39;&gt;
        &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/when-we-see-stack-pattern.weekly.png&#39; /&gt; &lt;a id=&#39;x1-23r3&#39;&gt;&lt;/a&gt;
        &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:5-when-we-see-stack-pattern.weekly&#34;&gt;图5&lt;/a&gt;：泄露内存中常见栈帧模式的计数，按周时间显示。‘s’和‘c’分别对应于栈和代码地址，数字对应于我们观察到的特定常见64位值。红色垂直线表示我们观察到摘要字节模式变化的时间（&lt;a href=&#34;#fig:3-wallbleed-response-rate-digest-transition&#34;&gt;图3&lt;/a&gt;）。&lt;/p&gt;
  &lt;/div&gt;

  &lt;!-- l. 1605 --&gt;&lt;p class=&#39;indent&#39;&gt;  两条红线表示摘要字节转换的阶段，来自&lt;a href=&#34;#fig:3-wallbleed-response-rate-digest-transition&#34;&gt;图3&lt;/a&gt;。第一条线在2023年9月3日，与最常见的栈帧模式的变化相吻合；第二条线在2023年6月8日，没有显示出明显的模式变化。我们无法从这些变化的模式中得出更具体的结论；它们可能纯属巧合。
  &lt;/p&gt;&lt;!-- l. 1612 --&gt;&lt;p class=&#39;indent&#39;&gt;  我们看到的栈帧与启用了ASLR的Linux栈帧一致，表明给定模式在某些位上看到随机化：在栈/代码指针中，最低有效的12位是一致的，对应于4KB页面中的一致偏移。在一些栈帧中，我们还观察到似乎是glibc栈金丝雀&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:glibc-canary&#39;&gt;24&lt;/a&gt;]&lt;/span&gt;，由一个随机值指示，其最低有效的8位设置为0，位于栈/代码地址对之前。
  &lt;/p&gt;&lt;!-- l. 1746 --&gt;&lt;p class=&#39;indent&#39;&gt;  我们还观察到&lt;span class=&#39;ptmri8t-&#39;&gt;x86_64指令序列&lt;/span&gt;，如函数序言。我们认为这些是GFW在网络上看到的代码，而不是GFW本身的代码，原因有二。首先，在基于栈的内存泄露中指令泄露是不可能的，因为Linux在分配前清除页面，并且不允许在可写页面中执行代码。其次，我们还在大学网络监听中观察到x86_64代码，这似乎是微软代码更新发送（签名的）明文二进制文件&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:phaedrus_windows_update&#39;&gt;25&lt;/a&gt;]&lt;/span&gt;。
  &lt;a id=&#39;x1-35r5&#39;&gt;&lt;/a&gt;
  &lt;/p&gt;
  &lt;!-- l. 1758 --&gt;
&lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;5&#34;&gt;&lt;a id=&#34;sec:5-seeing-out-own-traffic&#34;
  href=&#34;#sec:5-seeing-out-own-traffic&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;V.&lt;/span&gt; 观察我们自己的流量&lt;/a&gt;
&lt;/h2&gt;
&lt;!-- l. 1761 --&gt;&lt;p class=&#39;indent&#39;&gt;  在&lt;a href=&#34;#sec:4a-wallbleed-leaks-network-traffic&#34;&gt;第IV-A节&lt;/a&gt;中，我们看到Wallbleed泄露了至少一些网络流量，甚至是非DNS流量，这些流量通过了注入设备。这里我们通过一个专门的实验确认了这一事实。我们将自己标记的流量发送到中国境内，后来能够在Wallbleed响应中恢复其中的一部分。
&lt;/p&gt;&lt;!-- l. 1768 --&gt;&lt;p class=&#39;indent&#39;&gt;  标记流量只能在发送后的几秒钟内恢复。恢复率很低，并且随时间变化。注入设备在内部被划分为多个独立的进程，我们通过一个先前未记录的侧信道揭示了这一点，该侧信道在注入的虚假IP地址的排序中。每个进程都有自己的内存：只有当Wallbleed探针恰好被分配到同一进程时，才能恢复过去的流量。数据包到进程的分配是确定性的，并且至少取决于探针的源端口。通过IPv6发送的探针可能会恢复最初通过IPv4发送的流量，反之亦然。
 &lt;/p&gt;&lt;!-- l. 1780 --&gt;&lt;p class=&#39;indent&#39;&gt;
 &lt;a id=&#39;x1-36r1&#39;&gt;&lt;/a&gt;
 &lt;/p&gt;
 &lt;h3 class=&#34;subsectionHead&#34; id=&#34;5a&#34;&gt; &lt;a id=&#34;sec:5a-timestamped-magic-sequence-probes&#34; href=&#34;#sec:5a-timestamped-magic-sequence-probes&#34;&gt;&lt;span
  class=&#34;titlemark&#34;&gt;A.&lt;/span&gt; 带时间戳的魔法序列探针&lt;/a&gt;
&lt;/h3&gt;
&lt;!-- l. 1783 --&gt;&lt;p class=&#39;indent&#39;&gt;  我们为这个实验开发了一个新的探针。&lt;span class=&#39;ptmri8t-&#39;&gt;魔法序列探针&lt;/span&gt;是一个UDP数据包，发送到端口53，其40字节的有效载荷是20字节序列的两个副本：
 &lt;/p&gt;&lt;!-- l. 1791 --&gt;
 &lt;div class=&#34;px-4&#34;&gt;
  &lt;p class=&#39;indent&#39; id=&#39;payload-sequence&#39;&gt;
    &lt;span class=&#39;colorbox d-inline-flex justify-content-center one-byte-width&#39; id=&#39;colorbox318&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;G&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox d-inline-flex justify-content-center one-byte-width&#39; id=&#39;colorbox319&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;F&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox d-inline-flex justify-content-center one-byte-width&#39; id=&#39;colorbox320&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;W&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox d-inline-flex justify-content-center one-byte-width&#39; id=&#39;colorbox321&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;B&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox d-inline-flex justify-content-center one-byte-width&#39; id=&#39;colorbox322&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;l&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox d-inline-flex justify-content-center one-byte-width&#39; id=&#39;colorbox323&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox d-inline-flex justify-content-center one-byte-width&#39; id=&#39;colorbox324&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox d-inline-flex justify-content-center one-byte-width&#39; id=&#39;colorbox325&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;d&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox d-inline-flex justify-content-center two-byte-width&#39; id=&#39;colorbox326&#39;&gt;&lt;span class=&#39;cmtt-10 formula&#39;&gt;exp&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox d-inline-flex justify-content-center four-byte-width&#39; id=&#39;colorbox327&#39;&gt;&lt;span class=&#39;cmtt-10 formula&#39;&gt;pkt&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox d-inline-flex justify-content-center two-byte-width&#39; id=&#39;colorbox328&#39;&gt;&lt;span class=&#39;cmtt-10 formula&#39;&gt;rep&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox d-inline-flex justify-content-center four-byte-width&#39; id=&#39;colorbox329&#39;&gt;&lt;span class=&#39;cmtt-10 formula&#39;&gt;timestamp&lt;/span&gt;
    &lt;/span&gt;      
  &lt;/p&gt;
&lt;/div&gt;
&lt;!-- l. 1801 --&gt;&lt;p class=&#39;noindent&#39;&gt;其中&lt;code class=&#34;formula&#34;&gt;exp&lt;/code&gt;是实验ID，&lt;code class=&#34;formula&#34;&gt;pkt&lt;/code&gt;是递增的数据包ID，&lt;code class=&#34;formula&#34;&gt;rep&lt;/code&gt;在探针中为序列的第一个副本时为0，第二个副本时为1，&lt;code class=&#34;formula&#34;&gt;timestamp&lt;/code&gt;是一个纪元时间戳。固定字符串“GFWBleed”和唯一ID使得在Wallbleed响应中识别魔法序列变得容易。时间戳让我们可以估计恢复的魔法序列在内存中存在多久。虽然魔法序列探针使用UDP和目标端口53，但其结构与DNS不同。
&lt;/p&gt;&lt;!-- l. 1815 --&gt;&lt;p class=&#39;indent&#39;&gt;在发送魔法序列探针的同时，我们也发送了Wallbleed探针，如&lt;a href=&#39;#sec:4-what-information-is-leaked&#39;&gt;第IV节&lt;/a&gt;中所述，以恢复我们试图放入内存中的序列。我们从美国的一所大学向中国的目的地发送了探针，时间从2023年8月12日到9月8日（&lt;a href=&#34;#tbl:1-experiment-timeline-vantage-points&#34;&gt;表I&lt;/a&gt;）。目的地主机与&lt;a href=&#39;#sec:4-what-information-is-leaked&#39;&gt;第IV节&lt;/a&gt;中使用的不同，以避免两个实验之间的潜在干扰。我们以平均30个数据包每秒的速率从单个源端口10000发送魔法序列探针。我们从199个源端口（范围为20001至20199）以100个数据包每秒的速率发送Wallbleed探针。选择使用单个源端口进行魔法序列探针的决定最终变得非常重要，因为它有助于揭示离散的注入器进程的存在。我们收集了包含魔法序列的3,521个Wallbleed响应。
&lt;/p&gt;

&lt;!-- l. 1854 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;恢复的流量通常不超过1秒钟。&lt;/span&gt;&lt;a href=&#34;#fig:6-cdf-timestamp-magic-sequence-difference&#34;&gt;图6&lt;/a&gt;显示了魔法序列探针中编码的时间戳与在Wallbleed响应中恢复的时间之间的差异。与&lt;a href=&#34;#sec:4c-how-long-bytes-remain-in-memory&#34;&gt;第IV-C节&lt;/a&gt;中的HTTP Date时间戳一样，流量在注入器的内存中存活时间很短：99%的恢复的魔法序列时间戳在过去1.5秒内。&lt;span class=&#39;cmsy-10&#39;&gt;−&lt;/span&gt;1秒到0秒之间的均匀斜率是&lt;code class=&#34;formula&#34;&gt;timestamp&lt;/code&gt;一秒粒度的结果。与HTTP Date实验不同，这里不存在时区混淆的可能性。
&lt;/p&gt;

&lt;div class=&#39;figure&#39;&gt;
  &lt;!-- l. 91 --&gt;
  &lt;p class=&#39;noindent&#39; id=&#39;fig:6-cdf-timestamp-magic-sequence-difference&#39;&gt;
      &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/cdf-delta-time-exp-51.png&#39; /&gt; &lt;a id=&#39;x1-27r4&#39;&gt;&lt;/a&gt;
      &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:6-cdf-timestamp-magic-sequence-difference&#34;&gt;图6&lt;/a&gt;：魔法序列中存储的时间戳与我们在Wallbleed响应中恢复它时的时间差的累积分布。图中显示了2023年8月12日至9月8日期间收集的3,521个包含魔法序列的Wallbleed响应的分布。时间差的范围是−10.19秒到−0.23秒。&lt;/p&gt;
&lt;/div&gt;
&lt;!-- l. 1915 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;恢复流量的可能性在一天的周期中变化。&lt;/span&gt;&lt;a href=&#34;#fig:7-magic-sequence-likelihood-time-of-day&#34;&gt;图7&lt;/a&gt;显示了28天内每小时包含魔法序列的Wallbleed响应的数量。虽然我们以恒定速率发送Wallbleed探针和魔法序列探针，但每小时恢复的探针数量在24小时周期中变化，峰值在04:00到05:00之间，谷值在22:00到23:00之间（中国标准时间，UTC+8）。这与中国互联网流量量的&lt;span class=&#39;ptmri8t-&#39;&gt;反向&lt;/span&gt;昼夜模式一致：注入器处理的流量越多，我们观察到自己数据包的可能性就越小。
&lt;/p&gt;
&lt;div class=&#39;figure&#39;&gt;
    &lt;!-- l. 115 --&gt;
    &lt;p class=&#39;noindent&#39; id=&#39;fig:7-magic-sequence-likelihood-time-of-day&#39;&gt;
        &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/frequency-across-day-exp-51.png&#39; /&gt; &lt;a id=&#39;x1-28r5&#39;&gt;&lt;/a&gt;
        &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:7-magic-sequence-likelihood-time-of-day&#34;&gt;图7&lt;/a&gt;：观察到魔法序列的可能性取决于一天中的时间。淡色背景点代表了从2023年8月14日开始的四周内每小时收到的包含魔法序列的Wallbleed响应数量。深色前景点是所有28天中相应小时的平均值。&lt;/p&gt;
  &lt;/div&gt;
  &lt;!-- l. 1926 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;数据包在内存中具有一致的对齐方式。&lt;/span&gt;当我们恢复一个魔法序列时，我们无法获得完整的40字节。几乎总是，开头部分被触发响应的Wallbleed探针的字节覆盖。使用&lt;a href=&#39;#sec:4-what-information-is-leaked&#39;&gt;第IV节&lt;/a&gt;中的Wallbleed探针，前18字节被覆盖，最后22字节保持完整。注入设备可能在内存中将数据包的第一个字节对齐到一致的位置。其他观察支持这一假设：在&lt;a href=&#34;#sec:4b-the-four-digest-bytes&#34;&gt;第IV-B节&lt;/a&gt;中，我们利用了常见的&lt;span class=&#39;obeylines-h&#39;&gt;&lt;code class=&#39;verb&#39;&gt;ACHE-CONTROL&lt;/code&gt;&lt;/span&gt;字符串的对齐来测试摘要字节的存在。
  &lt;/p&gt;&lt;!-- l. 1959 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;只有一部分源端口&lt;/span&gt;&lt;span class=&#39;ptmbi8t-&#39;&gt;曾经&lt;/span&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;看到过魔法序列。&lt;/span&gt;我们从单个源端口（10000）发送魔法序列探针。尽管我们从199个不同的源端口（20001–20199）发送了Wallbleed探针，但只有64个源端口曾经恢复过魔法序列。（那些恢复的平均恢复了55个魔法序列。）进一步的调查使我们相信，每个DNS注入设备由&lt;span class=&#39;ptmri8t-&#39;&gt;多个独立的进程&lt;/span&gt;组成，每个进程都有自己的内存缓冲区，并且数据包根据包括源端口在内的特征被确定性地分配到一个进程。（但不是有效载荷，因为魔法序列探针具有可变的有效载荷。这与&lt;a href=&#34;#sec:4b-the-four-digest-bytes&#34;&gt;第IV-B节&lt;/a&gt;的摘要字节形成对比，后者确实依赖于有效载荷。）只有当Wallbleed探针被分配到与原始魔法序列探针相同的进程时，它才有机会恢复它。（这可以解释&lt;a href=&#34;#fig:3-wallbleed-response-rate-digest-transition&#34;&gt;图3&lt;/a&gt;中的水平带：在一段时间内，一半的进程使用摘要字节，一半没有。）在下一小节中，我们将展示更多关于多进程假设的证据，以注入的DNS响应的虚假IP地址中一个先前未知的侧信道的形式。
  &lt;a id=&#39;x1-40r2&#39;&gt;&lt;/a&gt;
  &lt;/p&gt;
  &lt;!-- l. 2006 --&gt;
  &lt;h3 class=&#34;subsectionHead&#34; id=&#34;5b&#34;&gt; &lt;a id=&#34;sec:5b-the-ordering-of-phony-ip-addresses&#34; href=&#34;#sec:5b-the-ordering-of-phony-ip-addresses&#34;&gt;&lt;span
    class=&#34;titlemark&#34;&gt;B.&lt;/span&gt; 虚假IP地址的排序&lt;/a&gt;
  &lt;/h3&gt;
  &lt;!-- l. 2009 --&gt;&lt;p class=&#39;indent&#39;&gt;  先前的研究表明，GFW的DNS注入从一个固定的池中提取虚假响应IP地址，并且根据查询的名称使用池的不同子集&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;8&lt;/a&gt; §3.2]&lt;/span&gt;，&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;9&lt;/a&gt; §5.3]&lt;/span&gt;。现在尚未被理解的是，这些池也是&lt;span class=&#39;ptmri8t-&#39;&gt;有序的&lt;/span&gt;和&lt;span class=&#39;ptmri8t-&#39;&gt;循环的&lt;/span&gt;。当以足够高的速率（每秒约100个查询或更多——远高于注入器的自然注入速率）进行探测时，使用一致的查询名称和源/目标IP地址和端口元组，注入的响应会以相同的顺序反复循环通过IP地址（偶尔会有注入器响应其他用户查询的间隙）。通过重复探测，可以获得序列的多个副本，调和间隙，并恢复给定查询名称的完整虚假IP地址有序列表。&lt;span class=&#39;cmtt-10&#39;&gt;4.tt&lt;/span&gt;查询名称的592个IP地址的示例有序列表出现在&lt;a href=&#39;#app:a-an-example-ordered-pool-of-fake-ip-address&#39;&gt;附录A&lt;/a&gt;中。
    &lt;/p&gt;&lt;!-- l. 2032 --&gt;&lt;p class=&#39;indent&#39;&gt;    选择任何IP地址作为循环中的“第一个”，我们可以从IP地址构建到其&lt;span class=&#39;ptmri8t-&#39;&gt;索引&lt;/span&gt;的反向映射。独立于Wallbleed泄漏，每个DNS响应在注入时揭示了注入器的内部索引变量。&lt;a href=&#39;#fig:8-vulnerable-injectors-fake-ip-pool&#39;&gt;图8&lt;/a&gt;显示了在从199个源端口以高速率探测时，Wallbleed响应中包含的IP地址的索引在45秒间隔内的变化。我们看到的不是一个，而是三个大致线性的序列。它们是循环的：当一个达到顶部时，它会回绕到底部。相同的源端口始终映射到相同的序列。对我们来说，这看起来像是注入设备内多个进程上的基于哈希的负载平衡。负载平衡分配的输入包括数据包的UDP四元组，但不包括其数据有效载荷（因为魔法序列探针的有效载荷是可变的）。保持四元组的其余部分不变，源端口根据它们被分配到的注入器进程分为少数等价类。这解释了为什么只有199个源端口中的64个恢复了魔法序列：那些是恰好被分配到与源端口10000的魔法序列探针相同的进程的端口。
    &lt;/p&gt;  &lt;!-- l. 1883 --&gt;

    &lt;div class=&#39;noindent&#39; id=&#39;fig:8-vulnerable-injectors-fake-ip-pool&#39;&gt;
        &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/side-channel-s1692770000-i45.png&#39; style=&#34;width: 100%;&#34;/&gt; &lt;a id=&#39;x1-30r6&#39;&gt;&lt;/a&gt;
        &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:8-vulnerable-injectors-fake-ip-pool&#34;&gt;图8&lt;/a&gt;：2023年8月23日，在45秒内从199个不同的源端口进行高频率探测后收到的Wallbleed响应样本。每个响应中的IP地址已被反向映射到其在&lt;a href=&#39;#app:a-an-example-ordered-pool-of-fake-ip-address&#39;&gt;附录A&lt;/a&gt;中的有序列表中的索引（从1到592）。这些索引不是随机的，而是形成了三个不同的循环序列——每个源端口始终映射到其中一个。每个序列代表DNS注入器中的一个进程，具有自己的地址列表迭代器和内存分配。只有199个源端口中的64个映射到正确的进程以恢复&lt;a href=&#34;#sec:5a-timestamped-magic-sequence-probes&#34;&gt;第V-A节&lt;/a&gt;的魔法序列探针。&lt;/p&gt;
    &lt;/div&gt;

      &lt;!-- l. 2061 --&gt;&lt;p class=&#39;indent&#39;&gt;
      &lt;a id=&#39;x1-41r3&#39;&gt;&lt;/a&gt;
      &lt;/p&gt;
      &lt;!-- l. 2061 --&gt;
      &lt;h3 class=&#34;subsectionHead&#34; id=&#34;5c&#34;&gt; &lt;a id=&#34;sec:5c-ipv4-and-ipv6&#34; href=&#34;#sec:5c-ipv4-and-ipv6&#34;&gt;&lt;span
        class=&#34;titlemark&#34;&gt;C.&lt;/span&gt; IPv4和IPv6&lt;/a&gt;
      &lt;/h3&gt;
      &lt;!-- l. 2064 --&gt;&lt;p class=&#39;indent&#39;&gt;    Wallbleed提供了一种方法来判断IPv4和IPv6数据包是否在相同的GFW节点上处理。如果我们通过GFW发送一个独特的IPv4有效载荷，并在基于IPv6的Wallbleed查询中看到该有效载荷的部分泄露在内存中，那么我们就知道有节点在相同的内存中处理IPv4和IPv6。
      &lt;/p&gt;&lt;!-- l. 2071 --&gt;&lt;p class=&#39;indent&#39;&gt;    我们从MaxMind的GeoLite2国家代码数据库&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:MaxMind&#39;&gt;26&lt;/a&gt;]&lt;/span&gt;（下载于2024年3月12日）中收集了一组地理定位到中国的IPv6前缀，排除了基于RouteViews BGP数据（下载于2024年3月13日）未路由的前缀。我们向每个IPv6前缀中的8个随机地址发送了一个Wallbleed v2探针。如果至少6个响应了Wallbleed泄漏，我们就保留该前缀。我们从这些610个IPv6前缀中抽样得到133k个随机IPv6地址，这些地址很可能通过GFW节点。对于IPv4地址，我们随机抽样了126k个响应于2024年3月6日进行的IPv4范围ZMap扫描的IPv4地址。
      &lt;/p&gt;&lt;!-- l. 2086 --&gt;&lt;p class=&#39;indent&#39;&gt;    对每个IPv4和IPv6地址，我们发送了一个&lt;span class=&#39;ptmri8t-&#39;&gt;针&lt;/span&gt;：一个UDP端口53数据包，具有900字节的有效载荷，由一个8字节字符串、2字节实验ID和4字节索引的重复序列组成，用于标识我们将针发送到哪个IP地址。同时，我们以每秒50个数据包的速度向每个地址发送Wallbleed v2探针，并收集响应以查看是否包含先前发送的针。我们在80分钟内重复了五次这个过程。
    &lt;/p&gt;&lt;!-- l. 2106 --&gt;&lt;p class=&#39;indent&#39;&gt;  有70个实例显示，一个地址接收到的Wallbleed泄漏有效载荷包含一个最初发送到不同地址的针。在这些实例中，12个从IPv4针泄漏到IPv4探测地址，47个从IPv6泄漏到IPv6，8个从IPv4泄漏到IPv6，3个从IPv6泄漏到IPv4。IPv4到IPv6和IPv6到IPv4泄漏的存在表明，易受Wallbleed影响的DNS注入器在相同的内存空间中处理IPv4和IPv6流量。&lt;/p&gt;&lt;!-- l. 2114 --&gt;&lt;p class=&#39;indent&#39;&gt;
&lt;a id=&#39;x1-42r6&#39;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;!-- l. 2114 --&gt;
&lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;6&#34;&gt;&lt;a id=&#34;sec:6-ip-addresses-affected-by-wallbleed&#34;
    href=&#34;#sec:6-ip-addresses-affected-by-wallbleed&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;VI.&lt;/span&gt; 受Wallbleed影响的IP地址&lt;/a&gt;
  &lt;/h2&gt;
  &lt;!-- l. 2117 --&gt;&lt;p class=&#39;indent&#39;&gt;  易受Wallbleed影响的DNS注入器是GFW的一部分。这些注入器是否影响了中国的每个部分，或者中国以外的任何地方？有多少IP地址可能通过了易受攻击的注入器，从而可能被泄露？我们从中国境外进行了IPv4范围的扫描以回答这些问题。Wallbleed v1和v2都影响了中国各地的IP地址，这与在网络边界部署DNS注入的假设一致。在许多情况下，即使是从美国发送到中国以外地方的探针也得到了Wallbleed注入，因为网络路径经过了边界。
  &lt;/p&gt;&lt;!-- l. 2132 --&gt;&lt;p class=&#39;indent&#39;&gt;
  &lt;a id=&#39;x1-43r1&#39;&gt;&lt;/a&gt;
  &lt;/p&gt;
  &lt;!-- l. 2132 --&gt;
  &lt;h3 class=&#34;subsectionHead&#34; id=&#34;6a&#34;&gt; &lt;a id=&#34;sec:6a-ipv4-wide-scan&#34; href=&#34;#sec:6a-ipv4-wide-scan&#34;&gt;&lt;span
    class=&#34;titlemark&#34;&gt;A.&lt;/span&gt; IPv4范围扫描&lt;/a&gt;
  &lt;/h3&gt;
  &lt;!-- l. 2135 --&gt;&lt;p class=&#39;indent&#39;&gt;  我们使用ZMap&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:zmap&#39;&gt;27&lt;/a&gt;]&lt;/span&gt;从美国的一所大学扫描了公共IPv4地址空间。为了发现受Wallbleed v1影响的IP地址，我们将以下有效载荷发送到UDP端口53：
  &lt;div class=&#34;px-4&#34;&gt;
  &lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox330&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
  id=&#39;colorbox331&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0120&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox332&#39;&gt;&lt;span
      class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox333&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox334&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
  id=&#39;colorbox335&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox336&#39;&gt;&lt;span
      class=&#39;cmtt-10&#39;&gt;01&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox337&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;4&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox338&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;10&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
  id=&#39;colorbox339&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;t&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox340&#39;&gt; &lt;span
      class=&#39;cmtt-10&#39;&gt;t&lt;/span&gt; &lt;/span&gt;
  &lt;/div&gt;
      &lt;!-- l. 2152 --&gt;&lt;p class=&#39;noindent&#39;&gt;该有效载荷旨在从Wallbleed注入器中引发溢出，仅需少量（14字节）的溢出即可确认漏洞。如&lt;a href=&#39;#fn:minor-subtlety-implicit-null-terminator&#39;&gt;脚注3&lt;/a&gt;中所述，这个非常短的QNAME不需要尾随的&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox385&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;00&lt;/span&gt;&lt;/span&gt;即可生效。我们以250 Mbps的速率发送数据包，扫描耗时三个小时。
  &lt;/p&gt;&lt;!-- l. 2164 --&gt;&lt;p class=&#39;indent&#39;&gt;  我们选择了名称&lt;span class=&#39;cmtt-10&#39;&gt;4.tt &lt;/span&gt;，因为它不太可能出现在中国以外国家的DNS封锁列表中。直到2020年11月，&lt;span class=&#39;cmtt-10&#39;&gt;4.tt &lt;/span&gt;还是一个中文赌博网站。&lt;span class=&#39;footnote-mark&#39;&gt;&lt;a href=&#39;#fn:6.tt&#39;&gt;&lt;sup class=&#39;textsuperscript&#39;&gt;6&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id=&#39;x1-44f6&#39;&gt;&lt;/a&gt;
  （赌博是GFW封锁的主题之一&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:cngov_decree_292&#39;&gt;28&lt;/a&gt; Art. 15]&lt;/span&gt;，&lt;span class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;9&lt;/a&gt; §4.2]&lt;/span&gt;。）该名称不再解析为IP地址，自至少2023年7月以来一直如此。在我们的扫描中使用一个以中国为重点且已失效的名称减少了触发其他国家DNS注入器的可能性。
  &lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
    &lt;ol&gt;
        &lt;li class=&#39;footnote-text&#39;&gt;
            &lt;a id=&#39;fn:6.tt&#39;&gt;&lt;/a&gt;
            &lt;span class=&#39;footnote-mark&#39;&gt;
                &lt;sup class=&#39;textsuperscript&#39;&gt;6&lt;/sup&gt;
            &lt;/span&gt;&lt;span class=&#39;footnotes-text&#39;&gt;&lt;a
                    href=&#39;https://web.archive.org/web/2020*/http://4.tt/&#39;&gt;https://web.archive.org/web/2020*/http://4.tt/&lt;/a&gt;&lt;/span&gt;
        &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/div&gt;

  &lt;!-- l. 2183 --&gt;&lt;p class=&#39;indent&#39;&gt;  为了发现受Wallbleed v2影响的IP地址，我们将以下有效载荷发送到UDP端口53：
  &lt;div class=&#34;px-4&#34;&gt;
  &lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox342&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
  id=&#39;colorbox343&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0100&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox344&#39;&gt;&lt;span
      class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox345&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox346&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width two-byte-width&#39;
  id=&#39;colorbox347&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox348&#39;&gt;&lt;span
      class=&#39;cmtt-10&#39;&gt;02&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox349&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;t&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox350&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;e&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
  id=&#39;colorbox351&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;02&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox352&#39;&gt; &lt;span
      class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox353&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;s&lt;/span&gt;
  &lt;/span&gt;&lt;span class=&#39;colorbox&#39; id=&#39;colorbox354&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;ff&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
  id=&#39;colorbox355&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox356&#39;&gt;&lt;span
      class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;
  &lt;/div&gt;
  &lt;!-- l. 2201 --&gt;&lt;p class=&#39;indent&#39;&gt;  如&lt;a href=&#39;#sec:3c-Incomplete-patch-wallbleed-v2&#39;&gt;第III-C节&lt;/a&gt;中介绍，&lt;span class=&#39;cmtt-10&#39;&gt;te.rs &lt;/span&gt;是Wallbleed v2的最短有效QNAME，标签长度前缀必须超过解析器中的一个常量阈值。&lt;span class=&#39;footnote-mark&#39;&gt;&lt;a href=&#39;#fn:wallbleed-v2-probes-overflow-limitation&#39;&gt;&lt;sup class=&#39;textsuperscript&#39;&gt;7&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id=&#39;x1-46f7&#39;&gt;&lt;/a&gt;
     &lt;/p&gt;&lt;!-- l. 2212 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;限制。&lt;/span&gt;我们仅进行了三次扫描：2023年6月25日和2023年8月23日针对Wallbleed v1，2024年3月6日针对Wallbleed v2。我们从美国的一个主机进行扫描：其他位置与中国的不同网络路径可能会得到不同的结果。这项快照研究的结果反映了扫描时的路由模式，我们无法预测它们随时间的变化。类似的注入器中间盒——无论是否具有类似Wallbleed的漏洞——可能存在于其他国家，但我们的扫描不会发现它们，因为我们使用了一个特定于中国的被封锁域名。
    &lt;a id=&#39;x1-48r2&#39;&gt;&lt;/a&gt;
    &lt;/p&gt;
    &lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
      &lt;ol&gt;
          &lt;li class=&#39;footnote-text&#39;&gt;
              &lt;a id=&#39;fn:wallbleed-v2-probes-overflow-limitation&#39;&gt;&lt;/a&gt;
              &lt;span class=&#39;footnote-mark&#39;&gt;
                  &lt;sup class=&#39;textsuperscript&#39;&gt;7&lt;/sup&gt;
              &lt;/span&gt;&lt;span class=&#39;footnotes-text&#39;&gt;我们未能像对Wallbleed v1那样限制Wallbleed v2探针的溢出量，这可能是通过在QNAME前添加前缀以使其长度接近注入器的最大长度阈值来实现的。&lt;/span&gt;
          &lt;/li&gt;
      &lt;/ol&gt;
  &lt;/div&gt;  &lt;!-- l. 2229 --&gt;
  &lt;h3 class=&#34;subsectionHead&#34; id=&#34;6b&#34;&gt; &lt;a id=&#34;sec:6b-analysis-of-wallbleed-responses&#34; href=&#34;#sec:6b-analysis-of-wallbleed-responses&#34;&gt;&lt;span
    class=&#34;titlemark&#34;&gt;B.&lt;/span&gt; Wallbleed响应分析&lt;/a&gt;
  &lt;/h3&gt;
  &lt;!-- l. 2238 --&gt;&lt;p class=&#39;indent&#39;&gt;    除非另有说明，本节的分析基于2023年8月23日的扫描。2023年6月25日的Wallbleed v1扫描和2024年3月6日的Wallbleed v2扫描的结果在质量上相似。&lt;span class=&#39;footnote-mark&#39;&gt;&lt;a href=&#39;#fn:wallbleed-v1-v2-subnet-responsiveness&#39;&gt;&lt;sup class=&#39;textsuperscript&#39;&gt;8&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id=&#39;x1-49f8&#39;&gt;&lt;/a&gt;
   该扫描从245.4百万个不同的IP地址中引发了248.3百万个响应。2.17百万个IP地址有多个响应，最多的一个案例有20,270个响应，这可能是路由环路的结果。&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Bock2021b&#39;&gt;29&lt;/a&gt;, &lt;a href=&#39;#cite:Alaraj2023a&#39;&gt;30&lt;/a&gt;]&lt;/span&gt;。
  &lt;/p&gt;
  &lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
    &lt;ol&gt;
        &lt;li class=&#39;footnote-text&#39;&gt;
            &lt;a id=&#39;fn:wallbleed-v1-v2-subnet-responsiveness&#39;&gt;&lt;/a&gt;
            &lt;span class=&#39;footnote-mark&#39;&gt;
                &lt;sup class=&#39;textsuperscript&#39;&gt;8&lt;/sup&gt;
            &lt;/span&gt;&lt;span class=&#39;footnotes-text&#39;&gt;我们未能像对Wallbleed v1那样限制Wallbleed v2探针的溢出量，这可能是通过在QNAME前添加前缀以使其长度接近注入器的最大长度阈值来实现的。&lt;/span&gt;
        &lt;/li&gt;
    &lt;/ol&gt;
&lt;/div&gt;
  &lt;!-- l. 2285 --&gt;&lt;p class=&#39;indent&#39;&gt;    我们使用了两步过滤来将Wallbleed注入与其他响应分开。首先，我们过滤了响应中答案部分包含Wallbleed注入器已知使用的虚假IP地址的响应。具体来说，我们保留了以资源记录形式结束的响应&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox357&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;c00c&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox358&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox359&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox four-byte-width&#39; id=&#39;colorbox360&#39;&gt; &lt;span class=&#39;cmti-10&#39;&gt;TTL&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox361&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0004&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox362&#39;&gt; &lt;span class=&#39;cmmi-10&#39;&gt;a&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox363&#39;&gt; &lt;span class=&#39;cmmi-10&#39;&gt;b&lt;/span&gt;
 &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox364&#39;&gt; &lt;span class=&#39;cmmi-10&#39;&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox365&#39;&gt; &lt;span class=&#39;cmmi-10&#39;&gt;d&lt;/span&gt;
&lt;/span&gt; (类型A)，或&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox366&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;c00c&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox367&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;001c&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox368&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox four-byte-width&#39; id=&#39;colorbox369&#39;&gt; &lt;span class=&#39;cmti-10&#39;&gt;TTL&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox370&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0010&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox371&#39;&gt; &lt;span class=&#39;cmmi-10&#39;&gt;a&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox372&#39;&gt; &lt;span class=&#39;cmmi-10&#39;&gt;b&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox373&#39;&gt; &lt;span class=&#39;cmmi-10&#39;&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox374&#39;&gt; &lt;span class=&#39;cmmi-10&#39;&gt;d&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox375&#39;&gt; &lt;span class=&#39;cmmi-10&#39;&gt;e&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox376&#39;&gt; &lt;span class=&#39;cmmi-10&#39;&gt;f&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox377&#39;&gt; &lt;span class=&#39;cmmi-10&#39;&gt;g&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox378&#39;&gt; &lt;span class=&#39;cmmi-10&#39;&gt;h&lt;/span&gt;
&lt;/span&gt; (类型AAAA)，
  其中&lt;span class=&#39;cmmi-10&#39;&gt;a&lt;/span&gt;.&lt;span class=&#39;cmmi-10&#39;&gt;b&lt;/span&gt;.&lt;span class=&#39;cmmi-10&#39;&gt;c&lt;/span&gt;.&lt;span class=&#39;cmmi-10&#39;&gt;d &lt;/span&gt;或&lt;span class=&#39;cmmi-10&#39;&gt;a&lt;/span&gt;:&lt;span class=&#39;cmmi-10&#39;&gt;b&lt;/span&gt;:&lt;span class=&#39;cmmi-10&#39;&gt;c&lt;/span&gt;:&lt;span class=&#39;cmmi-10&#39;&gt;d&lt;/span&gt;:&lt;span class=&#39;cmmi-10&#39;&gt;e&lt;/span&gt;:&lt;span class=&#39;cmmi-10&#39;&gt;f&lt;/span&gt;:&lt;span class=&#39;cmmi-10&#39;&gt;g&lt;/span&gt;:&lt;span class=&#39;cmmi-10&#39;&gt;h &lt;/span&gt;是&lt;a href=&#39;#app:a-an-example-ordered-pool-of-fake-ip-address&#39;&gt;附录A&lt;/a&gt;中的IP地址之一。（类型A和类型AAAA响应都是可能的，尽管探针没有指定QTYPE。）接下来，
  我们过滤了以字节模式开头的响应
  &lt;span
        class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox379&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
        id=&#39;colorbox380&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;8180&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox381&#39;&gt;&lt;span
            class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox382&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0001&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39; id=&#39;colorbox383&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox two-byte-width&#39;
        id=&#39;colorbox384&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;0000&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox385&#39;&gt;&lt;span
            class=&#39;cmtt-10&#39;&gt;01&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox386&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;4&lt;/span&gt;
    &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox387&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;10&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39;
        id=&#39;colorbox388&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;t&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width&#39; id=&#39;colorbox389&#39;&gt; &lt;span
            class=&#39;cmtt-10&#39;&gt;t&lt;/span&gt; &lt;/span&gt;；即探针的QNAME和ID字段的响应，标志等于&lt;span class=&#39;colorbox two-byte-width cb-gray-F2F2F2&#39; id=&#39;colorbox434x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;8180&lt;/span&gt;&lt;/span&gt;，这是受影响注入器的特征。
  &lt;/p&gt;&lt;!-- l. 2332 --&gt;&lt;p class=&#39;indent&#39;&gt;    过滤后，剩下244,911,941个响应（占所有响应的98.6%）来自242,442,549个不同的IP地址，这些是确定的Wallbleed注入。&lt;a href=&#39;#tbl:5-udp-payload-length-answer-rr-wallbleed-responses-ipv-scan&#39;&gt;表V&lt;/a&gt;显示了UDP有效载荷长度和DNS答案资源记录类型的分布。

&lt;/p&gt;
&lt;!-- l. 2339 --&gt;
&lt;div class=&#39;float&#39; id=&#39;tbl:5-udp-payload-length-answer-rr-wallbleed-responses-ipv-scan&#39;&gt;
    &lt;a id=&#39;x1-37r5&#39;&gt;&lt;/a&gt;
    &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:5-udp-payload-length-answer-rr-wallbleed-responses-ipv-scan&#34;&gt;表V&lt;/a&gt;：Wallbleed v1扫描中Wallbleed响应的UDP长度和DNS资源记录类型。&lt;/p&gt;
    &lt;div class=&#39;tabular&#39;&gt;
        &lt;table class=&#39;tabular&#39; id=&#39;TBL-5&#39;&gt;
            &lt;colgroup id=&#39;TBL-5-1g&#39;&gt;
                &lt;col id=&#39;TBL-5-1&#39; /&gt;
                &lt;col id=&#39;TBL-5-2&#39; /&gt;
                &lt;col id=&#39;TBL-5-3&#39; /&gt;
            &lt;/colgroup&gt;
            &lt;tr id=&#39;TBL-5-1-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-5-1-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; UDP负载长度（字节）
                &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-5-1-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 响应数量 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-5-1-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 类型 &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-5-2-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-5-2-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 52 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-5-2-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 244,881,083 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-5-2-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; A &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-5-3-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-5-3-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 64 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-5-3-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 30,837 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-5-3-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; AAAA &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-5-4-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-5-4-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 33 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-5-4-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 8 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-5-4-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; A &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-5-5-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-5-5-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 48 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-5-5-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 7 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-5-5-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; A &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-5-6-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-5-6-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 45, 46, 50, 51, 158 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-5-6-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 1 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-5-6-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; A &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-5-7-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-5-7-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 68 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-5-7-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 1 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-5-7-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; AAAA &lt;/td&gt;
            &lt;/tr&gt;
        &lt;/table&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- l. 2395 --&gt;&lt;p class=&#39;indent&#39;&gt;  在几乎所有情况下（99.99%），对我们探针的响应是一个52字节的A型（IPv4）响应。52字节是预期的长度，考虑到探针中的标签长度前缀和注入器回答部分的固定大小。在少数情况下，响应是64字节的AAAA型（IPv6）响应。对此效果有一个解释：因为我们的探针没有包含QTYPE字段，注入器从探针后内存中的字节中获取QTYPE。注入器默认是A型响应，但在特殊情况下，如果QTYPE对应的字节值为&lt;span class=&#39;colorbox two-byte-width cb-cream-yellow-F7F3D3&#39; id=&#39;colorbox435x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;001c&lt;/span&gt;&lt;/span&gt;，注入器会生成一个AAAA型响应。
  &lt;/p&gt;
&lt;!-- l. 2423 --&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;6c&#34;&gt; &lt;a id=&#34;sec:6c-analysis-of-responding-ip-addresses&#34; href=&#34;#sec:6c-analysis-of-responding-ip-addresses&#34;&gt;&lt;span
    class=&#34;titlemark&#34;&gt;C.&lt;/span&gt; 响应IP地址分析&lt;/a&gt;
  &lt;/h3&gt;
  &lt;!-- l. 2426 --&gt;&lt;p class=&#39;indent&#39;&gt;  我们使用IP地理定位和IP到ASN映射来查找在水平扫描中接收到Wallbleed响应的IP地址的位置（在过滤掉非Wallbleed响应后，如前一小节所述）。不出所料，几乎所有的IP地址都报告在中国，并且代表了该国的每个地理区域。少数响应的IP地址报告在中国以外（经过多数据库交叉检查以减少地理定位错误的可能性）。
  &lt;/p&gt;&lt;!-- l. 2438 --&gt;&lt;p class=&#39;indent&#39;&gt;  我们在国家级IP2Location LITE DB5数据库&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:ip2location&#39;&gt;31&lt;/a&gt;]&lt;/span&gt;（2023年6月30日）和CAIDA ASN数据库&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:caida-asn&#39;&gt;32&lt;/a&gt;]&lt;/span&gt;（2023年7月18日）中查找了每个受Wallbleed响应影响的IP地址。接收到Wallbleed响应的2.42亿个IP地址映射到32个国家或地区，属于381个AS，拥有554个不同的ASN。&lt;a href=&#34;#tbl:6-ases-greatest-wallbleed-affected-ips-china&#34;&gt;表VI&lt;/a&gt;显示了按响应IP地址数量排列的前十个AS，全部位于中国。
  &lt;/p&gt;&lt;!-- l. 2458 --&gt;
  &lt;div class=&#39;float&#39; id=&#39;tbl:6-ases-greatest-wallbleed-affected-ips-china&#39;&gt;
    &lt;span
        id=&#39;networks-outside-china-for-which-wallbleed-responses-were-received-in-horizontal-scans-from-theus-two-scans-are-represented-one-on-june-and-one-on-august-the-table-shows-the-ten-ases-with-the-greatest-number-of-affected-ip-addresses-intotal-there-were-nonchinese-ases-in-countries-in-the-june-scan-and-ases-in-countries-in-the-august-scan-&#39;&gt;&lt;/span&gt;

    &lt;a id=&#39;x1-39r6&#39;&gt;&lt;/a&gt;
    &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:6-ases-greatest-wallbleed-affected-ips-china&#34;&gt;表VI&lt;/a&gt;：拥有最多Wallbleed受影响IP地址的自治系统（AS）。所有这些自治系统都位于中国，根据地理定位数据库的信息。当一个自治系统拥有多个编号（ASN）时，我们展示受影响IP地址最多的那个编号。&lt;/p&gt;

    &lt;div class=&#39;tabular&#39;&gt;
        &lt;table class=&#39;tabular&#39; id=&#39;TBL-6&#39;&gt;
            &lt;colgroup id=&#39;TBL-6-1g&#39;&gt;
                &lt;col id=&#39;TBL-6-1&#39; /&gt;
                &lt;col id=&#39;TBL-6-2&#39; /&gt;
                &lt;col id=&#39;TBL-6-3&#39; /&gt;
            &lt;/colgroup&gt;
            &lt;tr id=&#39;TBL-6-1-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-1-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 自治系统名称 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-1-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 自治系统编号 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-1-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; # IP数量 &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-6-2-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-2-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; China Telecom &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-2-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 4134, … &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-2-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 104.2 M &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-6-3-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-3-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; China Unicom Backbone
                &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-3-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 4837, … &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-3-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 54.9 M &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-6-4-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-4-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; China Mobile &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-4-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 9808, … &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-4-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 23.9 M &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-6-5-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-5-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; China TieTong &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-5-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 9394, … &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-5-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 12.8 M &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-6-6-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-6-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; China Unicom &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-6-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 4837, … &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-6-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 12.7 M &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-6-7-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-7-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Alibaba &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-7-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 37963, … &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-7-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 7.3 M &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-6-8-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-8-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Tencent &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-8-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 45090, … &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-8-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 5.2 M &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-6-9-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-9-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; China Networks IX &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-9-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 4847 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-9-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 3.7 M &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-6-10-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-10-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; CERNET &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-10-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 4538 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-10-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 3.1 M &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-6-11-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-11-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Oriental Cable Network
                &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-11-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 9812 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-6-11-3&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 1.7 M &lt;/td&gt;
            &lt;/tr&gt;
        &lt;/table&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;!-- l. 2471 --&gt;
  &lt;p class=&#39;indent&#39;&gt;  为了更精细的粒度，我们抽样了10,000个IP地址，这些地址在国家级地理定位中被放置在中国，并在城市和省级IP2Location LITE DB5数据库中查找&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:ip2location&#39;&gt;31&lt;/a&gt;]&lt;/span&gt;（2023年8月24日）。抽样的IP地址代表了中国的所有22个省、5个自治区和4个直辖市。因此，我们推测易受Wallbleed影响的DNS注入器影响了整个国家，而不仅仅是某些地区。
  &lt;/p&gt;

  &lt;div class=&#39;float&#39; id=&#39;tbl:7-networks-outside-china-wallbleed-responses-us-horizontal-scans&#39;&gt;
    &lt;a id=&#39;x1-39r6&#39;&gt;&lt;/a&gt;
    &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#tbl:7-networks-outside-china-wallbleed-responses-us-horizontal-scans&#34;&gt;表VII&lt;/a&gt;：在美国进行水平扫描时接收到Wallbleed响应的中国以外的网络。表中展示了2023年6月25日和2023年8月23日的两次扫描。表格显示了受影响IP地址数量最多的十个自治系统（AS）。在6月的扫描中，总共有来自37个国家的104个非中国自治系统，在8月的扫描中，有来自31个国家的99个自治系统。&lt;/p&gt;

    &lt;div class=&#39;tabular&#39;&gt;
        &lt;table class=&#39;tabular&#39; id=&#39;TBL-7&#39;&gt;
            &lt;colgroup id=&#39;TBL-7-1g&#39;&gt;
                &lt;col id=&#39;TBL-7-1&#39; /&gt;
                &lt;col id=&#39;TBL-7-2&#39; /&gt;
                &lt;col id=&#39;TBL-7-3&#39; /&gt;
                &lt;col id=&#39;TBL-7-4&#39; /&gt;
                &lt;col id=&#39;TBL-7-5&#39; /&gt;
            &lt;/colgroup&gt;
            &lt;tr id=&#39;TBL-7-1-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-1-1&#39; style=&#39;white-space:nowrap; text-align:left; vertical-align: top;&#39; rowspan=&#34;2&#34;&gt; 自治系统名称 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-1-2&#39; style=&#39;white-space:nowrap; text-align:left; vertical-align: top;&#39; rowspan=&#34;2&#34;&gt; 自治系统编号 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-1-3&#39; style=&#39;white-space:nowrap; text-align:left; vertical-align: top;&#39; rowspan=&#34;2&#34;&gt; 国家代码 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; colspan=&#39;2&#39; id=&#39;TBL-7-1-4&#39; style=&#39;white-space:nowrap; text-align:center;&#39;&gt;
                    &lt;div class=&#39;multicolumn&#39; style=&#39;white-space:nowrap; text-align:center;&#39;&gt;# 独立IP数量&lt;/div&gt;
                &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-7-3-&#39;&gt;

                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-3-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 六月 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-3-5&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 八月 &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-7-4-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-4-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Dreamline &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-4-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 9457 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-4-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; KR &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-4-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 1,534 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-4-5&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 1,086 &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-7-5-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-5-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; MASTER-7-AS &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-5-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 26380 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-5-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; AU &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-5-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 315 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-5-5&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 489 &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-7-6-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-6-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Anpple Tech &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-6-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 133847 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-6-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; MY &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-6-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 243 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-6-5&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 257&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-7-7-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-7-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Chinanet Backbone &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-7-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 4134 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-7-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; HK &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-7-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 235 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-7-5&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 248 &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-7-8-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-8-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; AZT &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-8-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 53587 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-8-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; US &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-8-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 186 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-8-5&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 168 &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-7-9-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-9-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Network Joint &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-9-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 133762 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-9-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; HK &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-9-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 63 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-9-5&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 61 &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-7-10-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-10-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; HK Broadband &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-10-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 9269 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-10-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; HK &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-10-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 50 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-10-5&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 85 &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-7-11-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-11-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; STACKS-INC-01 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-11-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 398704 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-11-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; HK &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-11-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 31 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-11-5&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 78 &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-7-12-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-12-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Viettel Group &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-12-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 7552 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-12-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; VN &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-12-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 31 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-12-5&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 30 &lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr id=&#39;TBL-7-13-&#39;&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-13-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; Aofei Data &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-13-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; 135391 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-13-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; HK &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-13-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 29 &lt;/td&gt;
                &lt;td class=&#39;td11&#39; id=&#39;TBL-7-13-5&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; 28 &lt;/td&gt;
            &lt;/tr&gt;
        &lt;/table&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;!-- l. 2496 --&gt;&lt;p class=&#39;indent&#39;&gt;  只有110,676个（0.05%）IP地址在国家级地理定位中被映射到中国以外的国家。考虑到DNS注入已知会影响仅仅经过中国的网络路径，地址在中国以外受到影响并非不可能&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Sparks2012a&#39;&gt;33&lt;/a&gt;]&lt;/span&gt;。但由于地理定位数据库可能不准确&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:proxies-lie&#39;&gt;34&lt;/a&gt; §6.2]&lt;/span&gt;，我们应用了额外的过滤来消除不太确定在中国以外的地址：
      &lt;/p&gt;&lt;dl class=&#39;enumerate-enumitem&#39;&gt;&lt;dt class=&#39;enumerate-enumitem&#39;&gt;
   1) &lt;/dt&gt;&lt;dd class=&#39;enumerate-enumitem&#39;&gt;我们使用了三个不同的数据库：MaxMind GeoLite2 city&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:MaxMind&#39;&gt;26&lt;/a&gt;]&lt;/span&gt;（2023年9月1日）、IP2Location LITE DB5&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:ip2location&#39;&gt;31&lt;/a&gt;]&lt;/span&gt;（2023年8月24日）和IPGeolocation.io&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:ipgeolocation-io&#39;&gt;35&lt;/a&gt;]&lt;/span&gt;（2023年10月2日）。如果一个IP地址在任何数据库中被映射到中国，我们就排除其整个/24网络。
      &lt;/dd&gt;&lt;dt class=&#39;enumerate-enumitem&#39;&gt;
   2) &lt;/dt&gt;&lt;dd class=&#39;enumerate-enumitem&#39;&gt;我们在Team Cymru&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:team-cymru-asn&#39;&gt;36&lt;/a&gt;]&lt;/span&gt;（2023年10月2日）和CAIDA&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:caida-asn&#39;&gt;32&lt;/a&gt;]&lt;/span&gt;（2023年6月27日）的ASN数据库中查找了每个IP地址。当一个ASN的注册国家是中国时，我们也排除其整个/24网络。&lt;/dd&gt;&lt;/dl&gt;

   &lt;p class=&#39;indent&#39;&gt;  过滤器设计为保守型，即它倾向于将IP地址归类为中国。经过过滤后，还剩下6,822个IP地址。&lt;a href=&#34;#tbl:7-networks-outside-china-wallbleed-responses-us-horizontal-scans&#34;&gt;表VII&lt;/a&gt;按AS对其进行了总结，&lt;a href=&#34;#fig:9-geolocation-ip-outside-china-wallbleed-response-us&#34;&gt;图9&lt;/a&gt;展示了它们的地理位置。
   &lt;/p&gt;

   &lt;div class=&#39;figure&#39;&gt;
     &lt;!-- l. 427 --&gt;
     &lt;p class=&#39;noindent&#39; id=&#39;fig:9-geolocation-ip-outside-china-wallbleed-response-us&#39;&gt;
         &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/map-non-cn-filtered-by-subnet-24.png&#39; /&gt; &lt;a id=&#39;x1-41r7&#39;&gt;&lt;/a&gt;
         &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:9-geolocation-ip-outside-china-wallbleed-response-us&#34;&gt;图9&lt;/a&gt;：在美国主机扫描时接收到Wallbleed响应的中国以外IP地址的城市级地理定位。&lt;/p&gt;
   &lt;/div&gt;

   &lt;!-- l. 2594 --&gt;&lt;p class=&#39;indent&#39;&gt;  尽管可能仍然存在一些错误的地理定位，但很明显，一些中国以外的流量可能已暴露于Wallbleed所代表的隐私风险中。2010年，Sparks等人观察到109个地区存在DNS污染，主要是由于GFW在通往TLD服务器的传输路径上进行的DNS注入&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Sparks2012a&#39;&gt;33&lt;/a&gt; §4.4]&lt;/span&gt;。2021年，墨西哥的主机无法访问&lt;span class=&#39;cmtt-10&#39;&gt;whatsapp.net &lt;/span&gt;，因为GFW向中国的根DNS服务器查询注入了伪造的响应&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Mexico2021dns&#39;&gt;37&lt;/a&gt;, &lt;a href=&#39;#cite:Nosyk2023a&#39;&gt;38&lt;/a&gt;]&lt;/span&gt;。
   &lt;a id=&#39;x1-58r7&#39;&gt;&lt;/a&gt;
   &lt;/p&gt;
   &lt;!-- l. 2614 --&gt;
   &lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;7&#34;&gt;&lt;a id=&#34;sec:7-monitoring-the-censors-patching-behavior&#34;
    href=&#34;#sec:7-monitoring-the-censors-patching-behavior&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;VII.&lt;/span&gt; 监控审查者的补丁行为&lt;/a&gt;
  &lt;/h2&gt;
  &lt;!-- l. 2617 --&gt;&lt;p class=&#39;indent&#39;&gt; 我们预计GFW最终会修补Wallbleed漏洞。通过持续监控和全中国范围的扫描，我们记录了2023年9月/10月对Wallbleed v1的补丁过程，以及2024年3月对Wallbleed v2的补丁过程。
  &lt;/p&gt;&lt;!-- l. 2623 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;实验设置。 &lt;/span&gt;为了持续监控，我们从美国向我们在中国控制的IP地址发送Wallbleed探针和普通DNS查询，速率为100 pps。我们使用&lt;span class=&#39;cmtt-10&#39;&gt;4.tt &lt;/span&gt;进行v1探针，使用&lt;span class=&#39;cmtt-10&#39;&gt;te.rs &lt;/span&gt;进行v2探针。普通DNS查询作为对照，用于区分漏洞的修补与注入器离线或QNAME从封锁列表中移除的情况。如果注入器停止响应Wallbleed探针，但继续不间断地响应普通探针，这表明审查者可以在最小停机时间内对GFW进行&lt;span class=&#39;ptmri8t-&#39;&gt;热补丁&lt;/span&gt;。另一方面，如果注入器在一段时间内对两者都停止响应，随后仅恢复对普通探针的响应，那么我们可以测量与补丁相关的停机时间。我们在UMass Amherst使用一台机器，对2023年9月6日至11月7日的Wallbleed v1和2024年3月6日至4月16日的Wallbleed v2进行了持续监控。
  &lt;/p&gt;&lt;!-- l. 2647 --&gt;&lt;p class=&#39;indent&#39;&gt; 我们还对中国的约一百万个地址进行了扫描。这些扫描旨在测试补丁是否会在不同地区的不同时间发生，或在全国范围内同时发生。我们从&lt;a href=&#39;#sec:6-ip-addresses-affected-by-wallbleed&#39;&gt;第VI节&lt;/a&gt;中发现的2.15亿个响应的IPv4地址中，每个/24子网选择一个代表，得到1,130,343个IP地址。我们使用ZMap&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:zmap&#39;&gt;27&lt;/a&gt;]&lt;/span&gt;每15分钟向这些IP地址发送一个Wallbleed探针。我们在科罗拉多大学博尔德分校进行这些扫描，时间为2023年9月6日至11月7日的Wallbleed v1，以及2024年3月28日至4月16日的Wallbleed v2。
  &lt;/p&gt;

  &lt;!-- l. 2694 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;实验结果。 &lt;/span&gt;&lt;a href=&#34;#fig:10-subnets-responded-wallbleedv-us&#34;&gt;图10&lt;/a&gt;显示了在ZMap扫描中响应Wallbleed v1探针的/24子网数量，以及每小时的流失率：即在一个小时内响应但在下一个小时内不响应的IP地址数量，反之亦然。我们按小时聚合响应的IP地址，以减少因数据包丢失导致的假阴性。
  &lt;/p&gt;
&lt;div class=&#39;figure&#39;&gt;
  &lt;!-- l. 83 --&gt;
  &lt;p class=&#39;noindent&#39; id=&#39;fig:10-subnets-responded-wallbleedv-us&#39;&gt;
    &lt;img alt=&#39;PIC&#39; class=&#39;figure-img&#39; src=&#39;../figures/responding-ips-over-time.png&#39; /&gt; &lt;a id=&#39;x1-45r8&#39;&gt;&lt;/a&gt;
    &lt;p class=&#34;caption&#34;&gt;&lt;a href=&#34;#fig:10-subnets-responded-wallbleedv-us&#34;&gt;图10&lt;/a&gt;：我们跟踪了响应Wallbleed v1探针的IPv4 /24子网数量随时间的变化。我们在2023年9月6日至11月7日期间，每15分钟扫描1,130,343个IP地址（每个子网一个）。我们未能在2023年9月17日至10月4日期间收集数据。Wallbleed v1的补丁分为两个主要阶段：2023年9月6日至14日；以及2023年10月22日至11月1日。&lt;/p&gt;
&lt;/div&gt;

&lt;!-- l. 2703 --&gt;&lt;p class=&#39;indent&#39;&gt; 在10月23日之前，响应率有一些变化，当时Wallbleed漏洞在大约一周内被修补。从10月23日开始，我们观察到响应率逐步下降，因为漏洞逐步被修补。最后三个步骤发生在10月30日（星期一）、10月31日（星期二）和11月1日（星期三），每天在同一时间：10:00到12:00（中国标准时间，UTC+8）。在11月1日12:00之后，我们不再看到任何我们扫描的IP地址的Wallbleed v1响应。我们检查了在10月30日步骤中变为无响应的IP地址。39,000个地址中有86%属于一个不再响应的/20子网，这表明这些离散步骤对应于大块IP地址的同步变化，而不是更随机的负载平衡更新方式。
&lt;/p&gt;&lt;!-- l. 2728 --&gt;&lt;p class=&#39;indent&#39;&gt; Wallbleed v2在2024年3月28日被完全修补。不幸的是，我们只捕获了补丁过程的最后60分钟，在四次水平扫描中。与Wallbleed v1类似，Wallbleed v2也是在离散步骤中修补的。我们将Wallbleed v2最终修补的时间隔离在2024年3月28日16:01:30到16:16:30之间（与v1不同的时间）。
&lt;/p&gt;&lt;!-- l. 2750 --&gt;&lt;p class=&#39;indent&#39;&gt; 在最后一小时的捕获中，42,084个IP地址引发了Wallbleed v2响应。有趣的是，其中33,779个（80.3%）地址属于AS4538（CERNET，中国教育和科研网中心），以及属于中国移动和中国各大学的49个自治系统的长尾。这一观察支持了CERNET维护国家GFW基础设施子集的假设。CERNET中的DNS注入器与GFW的其他部分具有共同的Wallbleed v2漏洞，表明统一的管理和协调的补丁。同时，其独特的补丁时间表显示了其在操作和维护中的一定独立性。
&lt;/p&gt;
&lt;!-- l. 2860 --&gt;
&lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;8&#34;&gt;&lt;a id=&#34;sec:8-related-work&#34;
  href=&#34;#sec:8-related-work&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;VIII.&lt;/span&gt; 相关工作&lt;/a&gt;
&lt;/h2&gt;
&lt;!-- l. 2863 --&gt;&lt;p class=&#39;indent&#39;&gt;  GFW的DNS注入是互联网审查中最古老且研究最多的形式之一。我们所知的最早文献记录来自2002年的两个独立研究，一个由Dong进行&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Dong2002a&#39;&gt;39&lt;/a&gt;]&lt;/span&gt;，另一个由Zittrain和Edelman进行&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Zittrain2003a&#39;&gt;40&lt;/a&gt;]&lt;/span&gt;，两者都发现所有注入响应中使用了一个虚假的IP地址。2009年，gfwrev发现了中国的两种DNS注入器，具有不同的指纹，并记录了除2002年使用的IP地址外的另外七个响应IP地址&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:gfwrev-understanding-dns-poisoning&#39;&gt;13&lt;/a&gt;]&lt;/span&gt;。2014年，Anonymous等人分析了注入响应中的IP ID和TTL模式，推断出存在367个独立的注入过程，每秒注入0到60个虚假DNS响应&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;7&lt;/a&gt; §7]&lt;/span&gt;。到2016年，使用的虚假IP地址数量已增长到至少174个&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Farnan2016a&#39;&gt;41&lt;/a&gt;, &lt;a href=&#39;#cite:Pearce2017b&#39;&gt;42&lt;/a&gt;]&lt;/span&gt;。Anonymous等人在2020年区分了至少三种DNS注入器的指纹&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;8&lt;/a&gt;]&lt;/span&gt;。Hoang等人在2021年的大规模测量显示，跟踪GFW的DNS域名封锁列表的变化有助于理解中国的审查趋势&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;9&lt;/a&gt;]&lt;/span&gt;。
 &lt;/p&gt;&lt;!-- l. 2898 --&gt;&lt;p class=&#39;indent&#39;&gt;  最类似并确实启发了我们工作的过去研究是gfw-looking-glass.sh，这是由gfwrev的klzgrad在2010年发布的一个单行shell脚本&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:gfw-looking-glass-twitter&#39;&gt;5&lt;/a&gt;, &lt;a href=&#39;#cite:gfw-looking-glass-post&#39;&gt;6&lt;/a&gt;]&lt;/span&gt;。据我们所知，这是GFW中第一个内存转储漏洞。名称在2字节压缩指针的第一个字节后截断的DNS查询导致GFW的DNS解析器将附近的内存视为名称的一部分，并在注入响应中泄露出来。在我们发现Wallbleed之前，该漏洞已被修复。该脚本顺便证明了包含嵌入点字符的查询名称，
 &lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox436x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;06&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox437x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;w&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox438x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;u&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox439x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;x&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox440x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;.&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox441x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox442x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;u&lt;/span&gt; &lt;/span&gt;，与正确分成独立标签的名称相同，
 &lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox443x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;03&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox444x&#39;&gt; &lt;span class=&#39;cmtt-10x&#39;&gt;w&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox445x&#39;&gt; &lt;span class=&#39;cmtt-10x&#39;&gt;u&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox446x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;x&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-cyan-6FF6FD&#39; id=&#39;colorbox447x&#39;&gt;&lt;span class=&#39;cmtt-10&#39;&gt;02&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox448x&#39;&gt; &lt;span class=&#39;cmtt-10x&#39;&gt;r&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;colorbox one-byte-width cb-light-cyan-CCFDFF&#39; id=&#39;colorbox449x&#39;&gt; &lt;span class=&#39;cmtt-10&#39;&gt;u&lt;/span&gt; &lt;/span&gt;，
 表明当时GFW也是在将名称序列化为点分字符串后再与封锁列表匹配，而不是在结构化标签上匹配。2014年，klzgrad发现GFW的DNS注入器已停止解释压缩指针，开启了使用非常规方式使用指针的查询来规避DNS注入的机会&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:klzgrad-gist-dns-compression-pointer-mutation&#39;&gt;43&lt;/a&gt;]&lt;/span&gt;。
 &lt;/p&gt;&lt;!-- l. 2920 --&gt;&lt;p class=&#39;indent&#39;&gt;  Wallbleed由Sakamoto和Wedwards在2023年独立发现&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Sakamoto2024a&#39;&gt;44&lt;/a&gt;]&lt;/span&gt;。他们分析了泄露的数据，推断出GFW进程的特征，并提出了利用该漏洞的几种攻击。除了确认他们的观察外，我们还通过自2021年10月以来超过两年的纵向和全网测量进一步研究了Wallbleed。我们揭示了Wallbleed的根本原因，重建了C代码中的解析逻辑，使用了一种新颖的旁路信道来识别易受攻击的注入器中的单个进程，检查了受影响的IP地址，并在2023年11月的第一次不完整补丁后发现了Wallbleed v2漏洞。
 &lt;/p&gt;&lt;!-- l. 2937 --&gt;&lt;p class=&#39;indent&#39;&gt;  Wallbleed的命名类似于其他类似的内存泄露漏洞。Heartbleed是OpenSSL中的一个漏洞，允许客户端一次泄露多达64 KB的TLS服务器内存&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Heartbleed&#39;&gt;1&lt;/a&gt;]&lt;/span&gt;。Cloudbleed是2017年在Cloudflare内容分发网络的边缘服务器上使用的HTML解析器中的一个漏洞&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Cloudbleed-post-1&#39;&gt;3&lt;/a&gt;, &lt;a href=&#39;#cite:Cloudbleed-post-2&#39;&gt;4&lt;/a&gt;]&lt;/span&gt;。类似地，Ticketbleed记录了F5中间盒中的一个漏洞&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Ticketbleed&#39;&gt;2&lt;/a&gt;]&lt;/span&gt;。
 &lt;/p&gt;
&lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;9&#34;&gt;&lt;a id=&#34;sec:9-ethics&#34; href=&#34;#sec:9-ethics&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;IX.&lt;/span&gt; 伦理&lt;/a&gt;
&lt;/h2&gt;
&lt;!-- l. 2949 --&gt;&lt;p class=&#39;indent&#39;&gt;  本研究中出现了三个主要的伦理考量。首先是实验数据的处理，例如我们在纵向实验中收集的两年数据。如果我们认为Wallbleed对通过易受攻击注入器的用户流量构成隐私风险，那么泄露数据的存储和分析需要谨慎和小心。第二个是是否或在何种情况下可以利用一个可能被视为敌对网络攻击者的系统中的安全漏洞&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:InternetSociety2023&#39;&gt;10&lt;/a&gt;, &lt;a href=&#39;#cite:Anderson2012b&#39;&gt;11&lt;/a&gt;]&lt;/span&gt;——在这种情况下是GFW。第三个是如何进行披露。
&lt;/p&gt;&lt;!-- l. 2965 --&gt;&lt;p class=&#39;indent&#39;&gt;
&lt;a id=&#39;x1-62r1&#39;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;!-- l. 2965 --&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;9a&#34;&gt; &lt;a id=&#34;sec:9a-data-handling&#34; href=&#34;#sec:9a-data-handling&#34;&gt;&lt;span
  class=&#34;titlemark&#34;&gt;A.&lt;/span&gt; 数据处理&lt;/a&gt;
&lt;/h3&gt;
&lt;!-- l. 2968 --&gt;&lt;p class=&#39;indent&#39;&gt;  &lt;a href=&#39;#sec:5-seeing-out-own-traffic&#39;&gt;第V节&lt;/a&gt;的实验表明，Wallbleed泄露给第三方的至少&lt;span class=&#39;ptmri8t-&#39;&gt;一些&lt;/span&gt;数据源自通过防火墙的流量。这带来了隐私问题：网络流量可能包含敏感信息，如用户名、密码或网页请求。我们将研究计划提交给我们的机构审查委员会（IRB），该委员会豁免了这项研究，因为它不涉及人类受试者。以下是我们对这些数据的考虑和保护措施。
&lt;/p&gt;&lt;!-- l. 2979 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;数据收集。&lt;/span&gt;在减少数据收集和进行有意义的分析之间存在不可避免的权衡。一旦了解了Wallbleed漏洞，泄露一个字节就足以确认其存在，但这种有限的测量无法让我们研究防火墙的架构或互联网用户受到的影响。对内存中（而非存储的）数据的即时分析可以让我们报告一些结果，但我们不会注意到也无法分析意外的变化，例如&lt;a href=&#34;#sec:4b-the-four-digest-bytes&#34;&gt;第IV-B节&lt;/a&gt;中“摘要”字节的逐渐消失。因此，我们专注于保护收集的数据，而不是人为地限制收集的内容。最终，在团队内部和与审稿人讨论后，我们决定在本工作发表后删除收集的数据。
&lt;/p&gt;&lt;!-- l. 3030 --&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;9b&#34;&gt; &lt;a id=&#34;sec:9b-ethics-of-exploitation&#34; href=&#34;#sec:9b-ethics-of-exploitation&#34;&gt;&lt;span
    class=&#34;titlemark&#34;&gt;B.&lt;/span&gt; 利用的伦理&lt;/a&gt;
  &lt;/h3&gt;
  &lt;!-- l. 3033 --&gt;&lt;p class=&#39;indent&#39;&gt;  利用此类漏洞在伦理上是复杂的。从道义论的角度来看&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:kohno2023ethical&#39;&gt;45&lt;/a&gt; §4.1]&lt;/span&gt;，安全研究人员可能会决定在任何情况下都不利用他们无法控制的系统中的漏洞，因为这样做可能会产生难以预测的意外和负面影响。或者，从结果论的角度来看&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:kohno2023ethical&#39;&gt;45&lt;/a&gt; §4.1]&lt;/span&gt;，必须权衡研究的好处与其风险。
  &lt;/p&gt;&lt;!-- l. 3042 --&gt;&lt;p class=&#39;indent&#39;&gt;  我们在研究中识别出两个潜在危害和负面影响的高层次来源：（1）我们收集的数据可能包含敏感信息，可能会泄露；（2）我们发送的探针可能导致GFW或其他中间设备或终端主机崩溃或故障。我们在&lt;a href=&#39;#sec:9a-data-handling&#39;&gt;第IX-A节&lt;/a&gt;中讨论了第一个风险来源。下面我们讨论如何管理第二个风险来源。
  &lt;/p&gt;&lt;!-- l. 3048 --&gt;&lt;p class=&#39;indent&#39;&gt;  鉴于我们利用的系统本身被许多人视为危害的来源&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:InternetSociety2023&#39;&gt;10&lt;/a&gt;, &lt;a href=&#39;#cite:Anderson2012b&#39;&gt;11&lt;/a&gt;]&lt;/span&gt;，即使我们的实验对GFW造成损害，也将通过阻碍审查来减少对超过十亿人的危害。特别是，GFW的任何崩溃都不太可能阻碍网络流量。过去的研究表明，GFW的DNS注入器是路径设备&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;7&lt;/a&gt;, &lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;8&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2021a&#39;&gt;9&lt;/a&gt;, &lt;a href=&#39;#cite:Duan2012a&#39;&gt;12&lt;/a&gt;, &lt;a href=&#39;#cite:Lowe2007a&#39;&gt;21&lt;/a&gt;, &lt;a href=&#39;#cite:Dong2002a&#39;&gt;39&lt;/a&gt;, &lt;a href=&#39;#cite:Tschantz2016a&#39;&gt;46&lt;/a&gt;, &lt;a href=&#39;#cite:Xu2011a&#39;&gt;47&lt;/a&gt;, &lt;a href=&#39;#cite:Wang2017a&#39;&gt;48&lt;/a&gt;]&lt;/span&gt;；也就是说，它们通过获取流量的镜像副本工作，而不是传输链中的一个环节。最后，先前的工作已经利用其他有害系统中的漏洞，如僵尸网络和中间设备，以研究这些问题系统&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Bock2021b&#39;&gt;29&lt;/a&gt;, &lt;a href=&#39;#cite:stone2009your&#39;&gt;49&lt;/a&gt;, &lt;a href=&#39;#cite:mirian2023line&#39;&gt;50&lt;/a&gt;, &lt;a href=&#39;#cite:kanich2008spamalytics&#39;&gt;51&lt;/a&gt;, &lt;a href=&#39;#cite:Bock2021a&#39;&gt;52&lt;/a&gt;]&lt;/span&gt;。
  &lt;/p&gt;&lt;!-- l. 3064 --&gt;&lt;p class=&#39;indent&#39;&gt;  为了最大限度地减少其他中间设备和终端主机崩溃的风险，我们在实验的前18个月内谨慎地仅向我们控制的主机发送流量。只有在观察到没有不利影响后，我们才开始进行全网扫描。遵循互联网扫描的最佳实践&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:zmap&#39;&gt;27&lt;/a&gt;]&lt;/span&gt;，我们将每个不在我们控制下的主机的流量量限制为每15分钟仅一个UDP数据包。我们在扫描的源IP地址上托管了一个网页，显示项目描述并解释如何选择退出扫描。在研究过程中，我们收到并尊重了一次选择退出请求。  &lt;/p&gt;&lt;!-- l. 3078 --&gt;&lt;p class=&#39;indent&#39;&gt;
  &lt;a id=&#39;x1-64r3&#39;&gt;&lt;/a&gt;
  &lt;/p&gt;&lt;!-- l. 3078 --&gt;
  &lt;h3 class=&#34;subsectionHead&#34; id=&#34;9c&#34;&gt; &lt;a id=&#34;sec:9c-whether-to-disclose-and-how&#34; href=&#34;#sec:9c-whether-to-disclose-and-how&#34;&gt;&lt;span
    class=&#34;titlemark&#34;&gt;C.&lt;/span&gt; 是否披露以及如何披露&lt;/a&gt;
  &lt;/h3&gt;
  &lt;!-- l. 3081 --&gt;&lt;p class=&#39;indent&#39;&gt;    披露此类漏洞也是复杂的。通过报告该漏洞，我们是否最终在“帮助”GFW？还需要考虑立即披露和延迟披露之间的权衡：现在消除用户的隐私风险，还是花时间更深入地了解审查系统，以便可能在未来避免更大的风险和危害？
  &lt;/p&gt;&lt;!-- l. 3089 --&gt;&lt;p class=&#39;indent&#39;&gt;    我们决定采取协调披露的策略，但只有在利用漏洞的机会尽可能多地了解DNS注入子系统之后。两个因素促使我们最终决定披露。第一个是用户隐私的风险。一旦未修补的漏洞被公开，可能会被不关心用户安全的其他人利用。第二个是Wallbleed漏洞并没有降低DNS审查系统的有效性。修复Wallbleed后，注入器继续像以前一样干扰连接，但它们不会做得&lt;span class=&#39;ptmri8t-&#39;&gt;更多&lt;/span&gt;。
  &lt;/p&gt;&lt;!-- l. 3101 --&gt;&lt;p class=&#39;indent&#39;&gt;    这种伦理计算是特定于这种情况的。在其他情况下，我们可能会做出不同的决定。如果GFW存在实现错误，导致它未能审查一部分连接，并且未增加对用户的风险，我们就没有义务报告它。我们的义务不是针对抽象的错误修复，而是针对用户的安全。我们坚持认为，像Wallbleed这样的漏洞的唯一正确修复方法是将受影响的设备（即GFW注入器）从网络中移除：真正的“bug”是这些设备的存在，而不是它们无疑存在的特定实现错误。

  它们无疑存在。2023年11月的不完整补丁导致了Wallbleed v2变种的出现，这进一步证明了这一点：只要注入器存在，它们就会对用户构成风险。
  &lt;/p&gt;&lt;!-- l. 3119 --&gt;&lt;p class=&#39;indent&#39;&gt;  最终，我们披露的决定被漏洞修补所无效化，因为我们无法在向CNCERT报告问题之前就已修补了漏洞。这篇论文也是我们披露策略的一部分：记录和公开这个漏洞将引起更多人对审查的许多危险的关注。
  &lt;/p&gt;&lt;!-- l. 3127 --&gt;
  &lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;10&#34;&gt;&lt;a id=&#34;sec:10-lesson-learned-for-future-work&#34;
    href=&#34;#sec:10-lesson-learned-for-future-work&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;X.&lt;/span&gt; 未来工作的经验教训&lt;/a&gt;
    &lt;/h2&gt;
    &lt;!-- l. 3135 --&gt;&lt;p class=&#39;indent&#39;&gt;  我们的研究提供了一个独特的案例研究，展示了在保护用户数据和研究数据的实用性之间的平衡。在事后看来，我们可以看到一些地方我们本可以选择收集更少的数据（从而降低收集个人信息的风险），但我们注意到，事先很难知道非结构化数据的最佳边界。例如，我们通过研究大量完整的负载数据了解到4字节“摘要字节”特性。事后看来，我们可能只需泄露4字节就能发现GFW的这一特性，因此可能看起来不需要收集更多的数据。但如果事先不了解这一特性的性质，就很难知道4字节是否足够。同样，在选择泄露多少字节时，我们面临一个困难的权衡：泄露更多字节可能会收集到个人数据的风险（但可能会更多地了解GFW的未知特性），或者泄露更少字节可能会学到更少（但限制了潜在的敏感数据收集）。这种权衡应该在所有工作中仔细考虑，我们希望通过记录我们的思考过程，激发研究界的进一步讨论和辩论。
    &lt;/p&gt;&lt;!-- l. 3158 --&gt;&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;IRB的决定。&lt;/span&gt;我们被要求对机构审查委员会（IRB）将我们的工作标记为豁免的决定提出异议，因为审稿人认为我们的工作中还有其他伦理考虑未被该决定涵盖。我们同意我们的工作有复杂的伦理考虑，但不同意这些考虑明确属于IRB的范围，或作者应被要求对他们不同意的IRB决定提出异议。
    &lt;/p&gt;&lt;!-- l. 3173 --&gt;&lt;p class=&#39;indent&#39;&gt;  我们在提交给IRB的协议中是透明的，包括收集的数据可能包含第三方网络流量。这是我们提交的协议的摘录：
    &lt;/p&gt;&lt;!-- l. 3177 --&gt;
    &lt;div class=&#34;px-5&#34;&gt;
    &lt;p class=&#39;indent&#39;&gt;
         “我们发现，在处理某些格式错误的DNS查询时，子系统可能在其注入响应中包含不相关的系统内存片段。简而言之，防火墙‘泄露’了小片段的内存，这些内存可能偶然包含通过GFW的其他人的网络流量。该发现对网络安全和理解GFW都具有重要意义。虽然泄露内存的内容是不可预测的，但它们可能包含个人身份信息，如IP地址。因此，我们正在寻求IRB的指导，特别是关于这项研究是否需要全面的IRB审查。”
    &lt;/div&gt;
    &lt;!-- l. 3185 --&gt;&lt;p class=&#39;indent&#39;&gt;  我们认识到IRB豁免并不等同于IRB对工作的伦理判断，也不一定意味着IRB认为不需要考虑潜在的危害或伦理问题。相反，豁免意味着IRB已确定它不属于“人类受试者研究”的狭义定义&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:CFR32_219_102&#39;&gt;53&lt;/a&gt; § 219.102]&lt;/span&gt;。为此，我们将收集的数据视为敏感数据，并在发表前删除，以防止潜在的滥用。尽管如此，我们认为让我们的社区了解IRB的局限性很重要，并避免将其作为伦理决策的替代。                                                  &lt;/p&gt;&lt;!-- l. 3199 --&gt;&lt;p class=&#39;indent&#39;&gt;
        &lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;11&#34;&gt;
            &lt;a id=&#34;sec:11-conclusion&#34; href=&#34;#sec:11-conclusion&#34;&gt;
                &lt;span class=&#34;titlemark&#34;&gt;XI.&lt;/span&gt; 结论&lt;/a&gt;
            &lt;/h2&gt;
            &lt;!-- l. 3202 --&gt;&lt;p class=&#39;indent&#39;&gt;  在这项工作中，我们呈现并研究了Wallbleed，这是中国GFW的DNS注入子系统中的一个缓冲区过读漏洞。我们进行了纵向和全网测量，以了解Wallbleed的成因和影响。我们还揭示了GFW内部架构和操作的细节，这些细节在没有Wallbleed的情况下是不可能了解的。Wallbleed说明了审查设备对互联网用户造成的危害不仅仅局限于审查本身的直接（且预期的）影响：它还可以严重侵犯用户的隐私和保密性。
            &lt;/p&gt;&lt;!-- l. 3214 --&gt;
            &lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;availability&#34;&gt;
            &lt;a id=&#34;sec:availability&#34; href=&#34;#sec:availability&#34;&gt;
                &lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt;可用性&lt;/a&gt;
            &lt;/h2&gt;
            &lt;!-- l. 3221 --&gt;&lt;p class=&#39;indent&#39;&gt;  为了鼓励未来的研究并提倡透明性和可重复性，我们已公开提供代码、匿名化数据以及关于我们研究过程和论文发表过程的额外背景信息。为了提高可访问性，我们提供了论文的英文和中文HTML版本。项目主页在：
            &lt;a class=&#39;url&#39; href=&#39;https://gfw.report/publications/ndss25/en&#39;&gt;https://gfw.report/publications/ndss25/en&lt;/a&gt;。
            &lt;/p&gt;&lt;!-- l. 3231 --&gt;&lt;p class=&#39;indent&#39;&gt;
            &lt;/p&gt;&lt;!-- l. 3231 --&gt;
            &lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;acknowledgments&#34;&gt;
            &lt;a id=&#34;sec:acknowledgments&#34; href=&#34;#sec:acknowledgments&#34;&gt;
                &lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt;致谢&lt;/a&gt;
            &lt;/h2&gt;
            &lt;!-- l. 3233 --&gt;&lt;p class=&#39;indent&#39;&gt;  我们深深感谢几位希望保持匿名的同事，他们在整个项目中提供了宝贵的贡献和指导。我们还感谢来自gfwrev的klzgrad，其在2010年的开创性工作激励了我们，并在本次研究中提供了多轮深思熟虑的评论。此外，我们感谢Alberto Dainotti、Ali Zohaib、Cecylia Bocovich、Diogo Barradas、J. Alex Halderman、Jakub Dalek、Jeffrey Knockel、Michael Carl Tschantz、Nadia Heninger、Philipp Winter、ppmaootc、Prateek Mittal、Xiao Qiang和Zakir Durumeric。我们也感谢匿名审稿人提供的有益评论和指导。

&lt;a id=&#39;x1-67r0&#39;&gt;&lt;/a&gt;
&lt;h2 class=&#34;sectionHead small-caps&#34; id=&#34;references&#34;&gt;
    &lt;a id=&#34;sec:references&#34; href=&#34;#sec:references&#34;&gt;
        引用&lt;/a&gt;
&lt;/h2&gt;

&lt;div class=&#34;bibliography&#34;&gt;
    &lt;ol class=&#34;citation-numbering&#34;&gt;
        &lt;!-- 1 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Heartbleed&#34;&gt;&lt;/a&gt; Z. Durumeric, F. Li, J. Kasten, J. Amann, J. Beekman,
            M. Payer, N. Weaver, D. Adrian, V. Paxson, M. Bailey,
            and J. A. Halderman, “The matter of Heartbleed,” in Internet
            Measurement Conference. ACM, 2014. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://dl.acm.org/doi/10.1145/2663716.2663755&#34;&gt;https://dl.acm.org/doi/10.1145/2663716.2663755&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 2 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Ticketbleed&#34;&gt;&lt;/a&gt; F. Valsorda. (2016) Ticketbleed (CVE-2016-9244). [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://filippo.io/Ticketbleed/&#34;&gt;https://filippo.io/Ticketbleed/&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 3 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Cloudbleed-post-1&#34;&gt;&lt;/a&gt; J. Graham-Cumming. (2017, Feb.) Incident report on
            memory leak caused by Cloudflare parser bug. [Online].
            Available: &lt;a class=&#34;url&#34; href=&#34;https://blog.cloudflare.com/incident-report-on-memory-leak-caused-by-cloudflare-parser-bug/&#34;&gt;https://blog.cloudflare.com/incident-report-on-memory-leak-caused-by-cloudflare-parser-bug/&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 4 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Cloudbleed-post-2&#34;&gt;&lt;/a&gt; M. Prince. (2017, Mar.) Quantifying the impact of “Cloudbleed”.
          [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://blog.cloudflare.com/quantifying-the-impact-of-cloudbleed/&#34;&gt;https://blog.cloudflare.com/quantifying-the-impact-of-cloudbleed/&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 5 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:gfw-looking-glass-twitter&#34;&gt;&lt;/a&gt; gfwrev. (2010, Sep.) “gfw-looking-glass.sh: while true; do printf
          &#34;\0\0\1\0\0\1\0\0\0\0\0\0\6wux.ru\300&#34; | nc -uq1 $SOME_IP 53 |
          hd -s20; done”. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://twitter.com/gfwrev/status/25220534979/&#34;&gt;https://twitter.com/gfwrev/status/25220534979/&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 6 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:gfw-looking-glass-post&#34;&gt;&lt;/a&gt; Anonymous. (2020, Mar.) GFW archaeology: gfw-looking-glass.sh.
          [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/25&#34;&gt;https://github.com/net4people/bbs/issues/25&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 7 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Anonymous2014a&#34;&gt;&lt;/a&gt; ——, “Towards a comprehensive picture of the Great Firewall’s
          DNS censorship,” in Free and Open Communications on the Internet.
          USENIX, 2014. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci14/foci14-anonymous.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci14/foci14-anonymous.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 8 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Anonymous2020a&#34;&gt;&lt;/a&gt; Anonymous, A. A. Niaki, N. P. Hoang, P. Gill, and A. Houmansadr,
            “Triplet censors: Demystifying Great Firewall’s DNS censorship
            behavior,” in Free and Open Communications on the Internet. USENIX,
            2020. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/foci20-paper-anonymous_0.pdf&#34;&gt;https://www.usenix.org/system/files/foci20-paper-anonymous_0.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 9 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Hoang2021a&#34;&gt;&lt;/a&gt; N. P. Hoang, A. A. Niaki, J. Dalek, J. Knockel, P. Lin, B. Marczak,
            M. Crete-Nishihata, P. Gill, and M. Polychronakis, “How great
            is the Great Firewall? Measuring China’s DNS censorship,” in
            USENIX Security Symposium. USENIX, 2021. [Online]. Available:
            &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/sec21-hoang.pdf&#34;&gt;https://www.usenix.org/system/files/sec21-hoang.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 10 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:InternetSociety2023&#34;&gt;&lt;/a&gt;Internet Society. (2023, Dec.) When is the Internet not the Internet?
          [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.internetsociety.org/resources/internet-fragmentation/the-chinese-firewall/&#34;&gt;https://www.internetsociety.org/resources/internet-fragmentation/the-chinese-firewall/&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 11 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Anderson2012b&#34;&gt;&lt;/a&gt;D. Anderson, “Splinternet behind the Great Firewall of China: Once
          China opened its door to the world, it could not close it again,” Queue,
          vol. 10, no. 11, pp. 40–49, Nov. 2012. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://queue.acm.org/detail.cfm?id=2405036&amp;doi=10.1145%2F2390756.2405036&#34;&gt;https://queue.acm.org/detail.cfm?id=2405036&amp;doi=10.1145%2F2390756.2405036&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 12 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Duan2012a&#34;&gt;&lt;/a&gt; H. Duan, N. Weaver, Z. Zhao, M. Hu, J. Liang, J. Jiang, K. Li, and
          V. Paxson, “Hold-On: Protecting against on-path DNS poisoning,” in
          Securing and Trusting Internet Names. National Physical Laboratory,
          2012. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.icir.org/vern/papers/hold-on.satin12.pdf&#34;&gt;https://www.icir.org/vern/papers/hold-on.satin12.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 13 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:gfwrev-understanding-dns-poisoning&#34;&gt;&lt;/a&gt;gfwrev. (2009, Nov.) 深入理解GFW：DNS污染. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://gfwrev.blogspot.com/2009/11/gfwdns.html&#34;&gt;https://gfwrev.blogspot.com/2009/11/gfwdns.html&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 14 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Chai2019a&#34;&gt;&lt;/a&gt; Z. Chai, A. Ghafari, and A. Houmansadr, “On the importance of
            encrypted-SNI (ESNI) to censorship circumvention,” in Free and Open
            Communications on the Internet. USENIX, 2019. [Online]. Available:
            &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/foci19-paper_chai_update.pdf&#34;&gt;https://www.usenix.org/system/files/foci19-paper_chai_update.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 15 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Bock2021c&#34;&gt;&lt;/a&gt; K. Bock, G. Naval, K. Reese, and D. Levin, “Even censors have a
            backup: Examining China’s double HTTPS censorship middleboxes,”
            in Free and Open Communications on the Internet. ACM, 2021.
            [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://doi.org/10.1145/3473604.3474559&#34;&gt;https://doi.org/10.1145/3473604.3474559&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 16 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Hoang2024a&#34;&gt;&lt;/a&gt; N. P. Hoang, J. Dalek, M. Crete-Nishihata, N. Christin, V. Yegneswaran,
          M. Polychronakis, and N. Feamster, “GFWeb: Measuring the Great
          Firewall’s Web censorship at scale,” in USENIX Security Symposium.
          USENIX, 2024. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/sec24fall-prepub-310-hoang.pdf&#34;&gt;https://www.usenix.org/system/files/sec24fall-prepub-310-hoang.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 17 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Bock2020ESNI&#34;&gt;&lt;/a&gt; K. Bock, iyouport, Anonymous, L.-H. Merino, D. Fifield,
            A. Houmansadr, and D. Levin. (2020, Aug.) Exposing and
            circumventing China’s censorship of ESNI. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/43&#34;&gt;https://github.com/net4people/bbs/issues/43&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 18 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Master2023a&#34;&gt;&lt;/a&gt; A. Master and C. Garman, “A worldwide view of nation-state Internet
            censorship,” in Free and Open Communications on the Internet,
            2023. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://www.petsymposium.org/foci/2023/foci-2023-0008.pdf&#34;&gt;https://www.petsymposium.org/foci/2023/foci-2023-0008.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 19 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Nourin2023a&#34;&gt;&lt;/a&gt; S. Nourin, V. Tran, X. Jiang, K. Bock, N. Feamster, N. P. Hoang,
            and D. Levin, “Measuring and evading Turkmenistan’s internet
            censorship,” in The International World Wide Web Conference. ACM,
            2023. [Online]. Available: &lt;a class=&#34;url&#34; href=&#34;https://dl.acm.org/doi/abs/10.1145/3543507.3583189&#34;&gt;https://dl.acm.org/doi/abs/10.1145/3543507.3583189&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 20 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:rfc1035&#34;&gt;&lt;/a&gt; P. Mockapetris, “Domain names - implementation and specification,” RFC 1035, Nov. 1987. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.rfc-editor.org/info/rfc1035&#34;&gt;https://www.rfc-editor.org/info/rfc1035&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 21 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Lowe2007a&#34;&gt;&lt;/a&gt; G. Lowe, P. Winters, and M. L. Marcus, “The great DNS wall of China,” New York University, Tech. Rep., 2007. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://censorbib.nymity.ch/pdf/Lowe2007a.pdf&#34;&gt;https://censorbib.nymity.ch/pdf/Lowe2007a.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 22 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Bhaskar2022a&#34;&gt;&lt;/a&gt; A. Bhaskar and P. Pearce, “Many roads lead to Rome: How packet headers influence DNS censorship measurement,” in USENIX Security Symposium. USENIX, 2022. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/sec22-bhaskar.pdf&#34;&gt;https://www.usenix.org/system/files/sec22-bhaskar.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 23 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:rfc1918&#34;&gt;&lt;/a&gt; R. Moskowitz, D. Karrenberg, Y. Rekhter, E. Lear, and G. J. de Groot, “Address allocation for private Internets,” RFC 1918, Feb. 1996. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.rfc-editor.org/info/rfc1918&#34;&gt;https://www.rfc-editor.org/info/rfc1918&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 24 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:glibc-canary&#34;&gt;&lt;/a&gt; hugsy, “Playing with canaries,” Jan. 2017. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.elttam.com/blog/playing-with-canaries/#glibc-analysis&#34;&gt;https://www.elttam.com/blog/playing-with-canaries/#glibc-analysis&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 25 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:phaedrus_windows_update&#34;&gt;&lt;/a&gt; M. Phaedrus, “Some technical details behind the mundane Windows update,” 2022. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://great-computing.quora.com/Some-technical-details-behind-the-mundane-Windows-Update-https-www-quora-com-Does-the-Windows-update-use-HTTP-answer&#34;&gt;https://great-computing.quora.com/Some-technical-details-behind-the-mundane-Windows-Update-https-www-quora-com-Does-the-Windows-update-use-HTTP-answer&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 26 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:MaxMind&#34;&gt;&lt;/a&gt; “MaxMind GeoLite2 geolocation database.” [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://dev.maxmind.com/geoip/geolite2-free-geolocation-data&#34;&gt;https://dev.maxmind.com/geoip/geolite2-free-geolocation-data&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 27 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:zmap&#34;&gt;&lt;/a&gt; Z. Durumeric, E. Wustrow, and J. A. Halderman, “ZMap: Fast Internet-wide scanning and its security applications,” in USENIX Security Symposium. USENIX, Aug. 2013. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/conference/usenixsecurity13/technical-sessions/paper/durumeric&#34;&gt;https://www.usenix.org/conference/usenixsecurity13/technical-sessions/paper/durumeric&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 28 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:cngov_decree_292&#34;&gt;&lt;/a&gt; State Council of the People’s Republic of China, “互联网信息服务管理办法 (Measures for the Administration of Internet Information Services),” Sep. 2000. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.gov.cn/gongbao/content/2000/content_60531.htm&#34;&gt;https://www.gov.cn/gongbao/content/2000/content_60531.htm&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 29 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Bock2021b&#34;&gt;&lt;/a&gt; K. Bock, A. Alaraj, Y. Fax, K. Hurley, E. Wustrow, and D. Levin, “Weaponizing middleboxes for TCP reflected amplification,” in USENIX Security Symposium. USENIX, 2021. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/sec21-bock.pdf&#34;&gt;https://www.usenix.org/system/files/sec21-bock.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 30 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Alaraj2023a&#34;&gt;&lt;/a&gt; A. Alaraj, K. Bock, D. Levin, and E. Wustrow, “A global measurement of routing loops on the Internet,” in Passive and Active Measurement. Springer Nature Switzerland, 2023, pp. 373–399. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://link.springer.com/chapter/10.1007/978-3-031-28486-1_16&#34;&gt;https://link.springer.com/chapter/10.1007/978-3-031-28486-1_16&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 31 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:ip2location&#34;&gt;&lt;/a&gt; “IP2Location LITE IP address geolocation database.” [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.ip2location.com/database/ip2location&#34;&gt;https://www.ip2location.com/database/ip2location&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 32 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:caida-asn&#34;&gt;&lt;/a&gt; CAIDA, “CAIDA AS to organization mapping dataset.” [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.caida.org/catalog/datasets/request_user_info_forms/as_organizations/&#34;&gt;https://www.caida.org/catalog/datasets/request_user_info_forms/as_organizations/&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 33 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Sparks2012a&#34;&gt;&lt;/a&gt; Sparks, Neo, Tank, Smith, and Dozer, “The collateral damage of Internet censorship by DNS injection,” SIGCOMM Computer Communication Review, vol. 42, no. 3, pp. 21–27, 2012. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://conferences.sigcomm.org/sigcomm/2012/paper/ccr-paper266.pdf&#34;&gt;https://conferences.sigcomm.org/sigcomm/2012/paper/ccr-paper266.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 34 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:proxies-lie&#34;&gt;&lt;/a&gt; Z. Weinberg, S. Cho, N. Christin, V. Sekar, and P. Gill, “How to catch when proxies lie: Verifying the physical locations of network proxies with active geolocation,” in Internet Measurement Conference. ACM, 2018. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.contrib.andrew.cmu.edu/~nicolasc/publications/Weinberg-IMC18.pdf&#34;&gt;https://www.contrib.andrew.cmu.edu/~nicolasc/publications/Weinberg-IMC18.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 35 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:ipgeolocation-io&#34;&gt;&lt;/a&gt; “IPGeolocation.io IP geolocation API.” [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://ipgeolocation.io/documentation/ip-geolocation-api.html&#34;&gt;https://ipgeolocation.io/documentation/ip-geolocation-api.html&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 36 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:team-cymru-asn&#34;&gt;&lt;/a&gt; Team Cymru, “Team Cymru IP to ASN lookup v1.0.” [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://asn.cymru.com/&#34;&gt;https://asn.cymru.com/&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 37 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Mexico2021dns&#34;&gt;&lt;/a&gt; Q. Lone. (2022, Apr.) Detecting DNS root manipulation. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://labs.ripe.net/author/qasim-lone/detecting-dns-root-manipulation/&#34;&gt;https://labs.ripe.net/author/qasim-lone/detecting-dns-root-manipulation/&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 38 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Nosyk2023a&#34;&gt;&lt;/a&gt; Y. Nosyk, Q. Lone, Y. Zhauniarovich, C. H. Gañán, E. Aben, G. C. M. Moura, S. Tajalizadehkhoob, A. Duda, and M. Korczy´nski, “Intercept and inject: DNS response manipulation in the wild,” in Passive and Active Measurement. Springer Nature Switzerland, 2023. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://link.springer.com/chapter/10.1007/978-3-031-28486-1_19&#34;&gt;https://link.springer.com/chapter/10.1007/978-3-031-28486-1_19&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 39 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Dong2002a&#34;&gt;&lt;/a&gt; B. Dong, “A report about national DNS spoofing in China on Sept. 28th,” Dynamic Internet Technology, Inc., Tech. Rep., Oct. 2002. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://web.archive.org/web/20021015121616/http://www.dit-inc.us/hj-09-02.html&#34;&gt;https://web.archive.org/web/20021015121616/http://www.dit-inc.us/hj-09-02.html&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 40 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Zittrain2003a&#34;&gt;&lt;/a&gt; J. Zittrain and B. G. Edelman, “Internet filtering in China,” IEEE Internet Computing, vol. 7, no. 2, pp. 70–77, Mar. 2003. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://nrs.harvard.edu/urn-3:HUL.InstRepos:9696319&#34;&gt;https://nrs.harvard.edu/urn-3:HUL.InstRepos:9696319&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 41 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Farnan2016a&#34;&gt;&lt;/a&gt; O. Farnan, A. Darer, and J. Wright, “Poisoning the well – exploring the Great Firewall’s poisoned DNS responses,” in Workshop on Privacy in the Electronic Society. ACM, 2016. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://dl.acm.org/authorize?N25517&#34;&gt;https://dl.acm.org/authorize?N25517&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 42 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Pearce2017b&#34;&gt;&lt;/a&gt; P. Pearce, B. Jones, F. Li, R. Ensafi, N. Feamster, N. Weaver, and V. Paxson, “Global measurement of DNS manipulation,” in USENIX Security Symposium. USENIX, 2017. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/usenixsecurity17/sec17-pearce.pdf&#34;&gt;https://www.usenix.org/system/files/conference/usenixsecurity17/sec17-pearce.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 43 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:klzgrad-gist-dns-compression-pointer-mutation&#34;&gt;&lt;/a&gt; klzgrad. (2014, Nov.) DNS compression pointer mutation. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://gist.github.com/klzgrad/f124065c0616022b65e5&#34;&gt;https://gist.github.com/klzgrad/f124065c0616022b65e5&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 44 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Sakamoto2024a&#34;&gt;&lt;/a&gt; Sakamoto and E. Wedwards, “Bleeding wall: A hematologic examination on the Great Firewall,” in Free and Open Communications on the Internet, 2024. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.petsymposium.org/foci/2024/foci-2024-0002.pdf&#34;&gt;https://www.petsymposium.org/foci/2024/foci-2024-0002.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 45 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:kohno2023ethical&#34;&gt;&lt;/a&gt; T. Kohno, Y. Acar, and W. Loh, “Ethical frameworks and computer security trolley problems: Foundations for conversations,” in 32nd USENIX Security Symposium (USENIX Security 23), 2023, pp. 5145–5162. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://securityethics.cs.washington.edu/&#34;&gt;https://securityethics.cs.washington.edu/&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 46 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Tschantz2016a&#34;&gt;&lt;/a&gt; M. C. Tschantz, S. Afroz, Anonymous, and V. Paxson, “SoK: Towards grounding censorship circumvention in empiricism,” in Symposium on Security &amp; Privacy. IEEE, 2016. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.eecs.berkeley.edu/~sa499/papers/oakland2016.pdf&#34;&gt;https://www.eecs.berkeley.edu/~sa499/papers/oakland2016.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 47 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Xu2011a&#34;&gt;&lt;/a&gt; X. Xu, Z. M. Mao, and J. A. Halderman, “Internet censorship in China: Where does the filtering occur?” in Passive and Active Measurement Conference. Springer, 2011, pp. 133–142. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://web.eecs.umich.edu/~zmao/Papers/china-censorship-pam11.pdf&#34;&gt;https://web.eecs.umich.edu/~zmao/Papers/china-censorship-pam11.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 48 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Wang2017a&#34;&gt;&lt;/a&gt; Z. Wang, Y. Cao, Z. Qian, C. Song, and S. V. Krishnamurthy, “Your state is not mine: A closer look at evading stateful Internet censorship,” in Internet Measurement Conference. ACM, 2017. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.cs.ucr.edu/~krish/imc17.pdf&#34;&gt;https://www.cs.ucr.edu/~krish/imc17.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 49 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:stone2009your&#34;&gt;&lt;/a&gt; B. Stone-Gross, M. Cova, L. Cavallaro, B. Gilbert, M. Szydlowski, R. Kemmerer, C. Kruegel, and G. Vigna, “Your botnet is my botnet: analysis of a botnet takeover,” in Proceedings of the 16th ACM conference on Computer and communications security, 2009, pp. 635–647. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://sites.cs.ucsb.edu/~chris/research/doc/ccs09_botnet.pdf&#34;&gt;https://sites.cs.ucsb.edu/~chris/research/doc/ccs09_botnet.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 50 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:mirian2023line&#34;&gt;&lt;/a&gt; A. Mirian, A. Ukani, I. Foster, G. Akiwate, T. Halicioglu, C. T. Moore, A. C. Snoeren, G. M. Voelker, and S. Savage, “In the line of fire: Risks of DPI-triggered data collection,” in Proceedings of the 16th Cyber Security Experimentation and Test Workshop, 2023, pp. 57–63. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://arianamirian.com/docs/cset2023_fireye.pdf&#34;&gt;https://arianamirian.com/docs/cset2023_fireye.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 51 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:kanich2008spamalytics&#34;&gt;&lt;/a&gt; C. Kanich, C. Kreibich, K. Levchenko, B. Enright, G. M. Voelker, V. Paxson, and S. Savage, “Spamalytics: An empirical analysis of spam marketing conversion,” in Proceedings of the 15th ACM conference on Computer and communications security, 2008, pp. 3–14. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.icir.org/christian/publications/2008-ccs-spamalytics.pdf&#34;&gt;https://www.icir.org/christian/publications/2008-ccs-spamalytics.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 52 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Bock2021a&#34;&gt;&lt;/a&gt; K. Bock, P. Bharadwaj, J. Singh, and D. Levin, “Your censor is my censor: Weaponizing censorship infrastructure for availability attacks,” in Workshop on Offensive Technologies. IEEE, 2021. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.cs.umd.edu/~dml/papers/weaponizing_woot21.pdf&#34;&gt;https://www.cs.umd.edu/~dml/papers/weaponizing_woot21.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;!-- 53 --&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:CFR32_219_102&#34;&gt;&lt;/a&gt; U.S. Government, “Title 32 of the Code of Federal Regulations § 219.102: Definitions,” 2024. [Online]. Available:
          &lt;a class=&#34;url&#34; href=&#34;https://www.ecfr.gov/on/2024-11-27/title-32/subtitle-A/chapter-I/subchapter-M/part-219/section-219.102&#34;&gt;https://www.ecfr.gov/on/2024-11-27/title-32/subtitle-A/chapter-I/subchapter-M/part-219/section-219.102&lt;/a&gt;.
        &lt;/li&gt;
    &lt;/ol&gt;
&lt;/div&gt;
&lt;h2 id=&#34;an-example-ordered-pool-of-fake-ip-address&#34; data-heading-label=&#34;附录A：一个虚假IP地址的有序池示例&#34;&gt;
    &lt;a id=&#34;app:a-an-example-ordered-pool-of-fake-ip-address&#34;
        href=&#34;#app:a-an-example-ordered-pool-of-fake-ip-address&#34;&gt;
        &lt;span class=&#34;h2 sectionHead small-caps&#34;&gt;附录A&lt;/span&gt;
        &lt;span class=&#34;h2 sectionHead small-caps&#34;&gt;一个虚假IP地址的有序池示例&lt;/span&gt;
        &lt;/a&gt;
        &lt;/h2&gt;
        &lt;!-- l. 3285 --&gt;&lt;p class=&#39;indent&#39;&gt;  以下是拥有Wallbleed漏洞的DNS注入器在伪造对A类和AAAA类查询的响应包时使用的592个IPv4和30个IPv6地址的有序列表，针对查询名称&lt;span class=&#39;cmtt-10&#39;&gt;4.tt&lt;/span&gt;。其他注入器和其他查询名称的池可能有所不同&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;8&lt;/a&gt; § 3.2]&lt;/span&gt; &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;9&lt;/a&gt; § 5.2]&lt;/span&gt;。当一个注入器进程注入DNS响应包时，它从其有序列表中获取下一个IP地址，到达末尾后循环回到开头。当以足够高的采样率（大约每秒100个数据包或更多）收集注入的响应时，这一事实变得显而易见。每个池中&#34;第一个&#34;地址是我们任意选择的。
        &lt;/p&gt;&lt;!-- l. 3297 --&gt;&lt;p class=&#39;indent&#39;&gt;  我们将有序列表用于两个目的：在&lt;a href=&#34;#sec:6c-analysis-of-responding-ip-addresses&#34;&gt;第VI-C节&lt;/a&gt;中，用于从其他响应中过滤与Wallbleed相关的DNS响应；在&lt;a href=&#34;#sec:5b-the-ordering-of-phony-ip-addresses&#34;&gt;第V-B节&lt;/a&gt;中，用于分辨每个注入器设备内的多个独立进程。我们将机器可读版本的序列池实例包含在与本文一起发布的数据中。

&lt;div class=&#39;minipage&#39;&gt;
  &lt;dl class=&#39;enumerate-enumitem row&#39;&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;1)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;208.77.47.172&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;2)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.252.88.133&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;3)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.252.88.67&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;4)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.170.45&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;5)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.10.32&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;6)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;174.36.196.242&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;7)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;174.36.228.136&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;8)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;174.37.154.236&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;9)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;174.37.175.229&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;10)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;174.37.54.20&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;11)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.60.216.11&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;12)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.60.216.50&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;13)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.158.12&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;14)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.158.182&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;15)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.158.8&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;16)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.158.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;17)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.96&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;18)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.229&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;19)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.20&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;20)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.17.35&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;21)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.94.37&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;22)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.68.169&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;23)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.88.26&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;24)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.88.169&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;25)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.94.36&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;26)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.94.49&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;27)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.94.41&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;28)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.94.10&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;29)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.73.169&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;30)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.73.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.112.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;32)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.106.4&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;33)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.96.195&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;34)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.82.169&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;35)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.86.21&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;36)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.85.169&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;37)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.85.53&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;38)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.96.194&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;39)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.96.208&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;40)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.96.193&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;41)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.96.192&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;42)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.112.4&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;43)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.80.169&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;44)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.95.169&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;45)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.136&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;46)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.61.1&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;47)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.52&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;48)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.6&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;49)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.0.18&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;50)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.231&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;51)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.35&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;52)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;66.220.148.145&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;53)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.95.34&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;54)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.95.48&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;55)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.252.105.21&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;56)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.95.35&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;57)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.0.35&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;58)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.252.108.21&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;59)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.11.40&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;60)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.167&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;61)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.150.39&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;62)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.230&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;63)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.208&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;64)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.158.104&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;65)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.156.38&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;66)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;96.44.137.28&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;67)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.50.221.20&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;68)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.30.25.21&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.197.153.180&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;70)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.162.134.178&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;71)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;65.49.26.99&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;72)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;65.49.26.98&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;73)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;65.49.26.97&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;74)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;50.23.209.199&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;75)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.150.45&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;76)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.150.44&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;77)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.150.43&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;78)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.150.40&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;79)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.150.13&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;80)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.150.12&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;81)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.239&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;82)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.238&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;83)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.237&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;84)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.236&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;85)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.235&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;86)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.234&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;87)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.232&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;88)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.231&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;89)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.210&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;90)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.207&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;91)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.206&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;92)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.205&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;93)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.203&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;94)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.202&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;95)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.201&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;96)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;97)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.89&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;98)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.8&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;99)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.7&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;100)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.6&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;101)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.247&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;102)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.246&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.222&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.206&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;105)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.202&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;106)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.201&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;107)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.15&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.147&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;109)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.106&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;110)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.102&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;111)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.156.75&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;112)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.156.71&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;113)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.156.39&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;114)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.156.11&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;115)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.156.103&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;116)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;184.72.1.148&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;117)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;182.50.139.56&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;118)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.255.213.90&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;119)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.255.209.47&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;120)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.252.248.244&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;121)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.236.212.42&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;122)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.236.182.137&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;123)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.234.53.168&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;124)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.231.12.107&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;125)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.208.182.68&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;126)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;168.143.171.93&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;127)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;168.143.171.189&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;168.143.171.186&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;129)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;168.143.171.154&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;130)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;168.143.162.58&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;131)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;168.143.162.42&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;132)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.250.157&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;133)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.250.155&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;134)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.250.148&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;135)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.245.93&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;136)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.245.43&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;137)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.245.29&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;138)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.245.253&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;139)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.245.244&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;140)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.245.221&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;141)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.245.212&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;142)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.245.189&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;143)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.245.180&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;144)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.245.157&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;145)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.245.125&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;146)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.93&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;147)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.61&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;148)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.29&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;149)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.253&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;150)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.244&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;151)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.221&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;152)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.218&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;153)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.212&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;154)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.189&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;155)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.180&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;156)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.157&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.125&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;158)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.121.243.77&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;159)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.121.243.76&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;160)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.121.243.75&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;161)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.121.243.107&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.121.243.106&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;163)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;122.248.226.57&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;164)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;159.106.121.75&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;165)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;59.24.3.173&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;166)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;66.220.146.94&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;167)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;66.220.147.11&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;168)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;66.220.149.18&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;169)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;66.220.149.32&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;170)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.171.224.40&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;171)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.171.227.37&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;172)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.171.228.74&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.171.229.11&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;174)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.171.229.73&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;175)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.171.234.48&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;176)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.171.242.11&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;177)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.171.247.32&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;178)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.171.247.71&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;179)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.176.143&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;180)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.176.15&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;181)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.176.59&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;182)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.178.13&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;183)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.180.173&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;184)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.181.12&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.184.14&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;186)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.184.142&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;187)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.184.30&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;188)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.186.30&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;189)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.186.31&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;190)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.187.12&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;191)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.63.190.26&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;192)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;67.15.100.252&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;193)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;67.15.129.210&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;194)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.156.40&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;195)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.156.7&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;196)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.16.158.190&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;197)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.209&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;198)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.148.97&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.136&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;200)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.244&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;201)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.150.49&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;88.191.249.182&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;203)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;88.191.249.183&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;204)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;208.101.21.43&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;205)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;208.101.60.87&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;206)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;208.43.170.231&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;207)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;208.43.237.140&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;208)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;67.228.102.32&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;209)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;67.228.235.91&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;210)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;67.228.235.93&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;211)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;74.86.118.24&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;212)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;74.86.12.172&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;213)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;74.86.12.173&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;214)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;74.86.142.55&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;215)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;74.86.151.162&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;216)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;74.86.151.167&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;217)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;74.86.17.48&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;218)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;74.86.226.234&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;219)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;74.86.228.110&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;220)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;74.86.3.208&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;221)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;75.126.115.192&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;222)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;75.126.124.162&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;223)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;75.126.135.131&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;224)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;75.126.150.210&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;225)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;75.126.164.178&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;226)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;75.126.33.156&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;227)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;205.186.152.122&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;228)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;64.13.192.74&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;229)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;64.13.192.76&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;230)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.16.252.55&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;231)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.16.251.55&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;232)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;210.56.51.193&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;233)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;23.234.30.58&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;234)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;210.56.51.192&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;235)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.53.137.209&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;236)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;156.233.67.243&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;237)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;154.85.102.32&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;238)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;154.92.16.97&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;239)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;154.83.15.20&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;240)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;154.85.102.30&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;241)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;154.83.15.45&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;242)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;154.83.14.134&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;243)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.214.168.106&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;244)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;150.107.3.176&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;245)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.97.176.73&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;246)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.73.161.52&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;247)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.200.31.172&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;248)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;52.175.9.80&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;249)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;159.65.107.38&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;250)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;59.188.250.54&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;251)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;4.78.139.50&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;252)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;93.179.102.140&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;253)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;148.163.48.215&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;254)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;54.89.135.129&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;255)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;4.78.139.54&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;256)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;23.101.24.70&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;257)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.193.116.105&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;258)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.220.12.226&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;259)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;98.159.108.61&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;260)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;50.87.93.246&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;261)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;47.88.58.234&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;262)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;98.159.108.58&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;263)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;67.230.169.182&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;264)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;159.138.20.20&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;265)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;124.11.210.175&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;266)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;98.159.108.57&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;267)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;111.243.214.169&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;268)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.42.176.244&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;269)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;210.209.84.142&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;270)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;107.181.166.244&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;271)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;98.159.108.71&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;272)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;23.225.141.210&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;273)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;114.43.24.59&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;274)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;45.77.186.255&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;275)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.182.98.125&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;276)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;45.114.11.25&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;277)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;203.111.254.117&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;278)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.240.180.117&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;279)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;45.114.11.238&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;280)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;43.226.16.8&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;281)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;116.89.243.8&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;282)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;80.87.199.46&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;283)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;198.27.124.186&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;284)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;39.109.122.128&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;285)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.228.130.27&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;286)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;118.107.180.216&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;287)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.97.3.19&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;288)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.56.16.112&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;289)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;115.126.100.160&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;290)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;118.193.202.219&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;291)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;118.184.78.78&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;292)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;118.193.240.41&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;293)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;118.184.26.113&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;294)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.39.76.66&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;295)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.240.182.55&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;296)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.230.123.190&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;297)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.246.246.144&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;298)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.200.30.143&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;299)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;118.193.240.37&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;300)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;198.44.185.131&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;301)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;211.104.160.39&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;302)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.228.130.61&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;303)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;122.10.85.4&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;304)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.226.246.99&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;305)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;208.31.254.33&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;306)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;50.117.117.42&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;307)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.15.8&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;308)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.13.8&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;309)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.1.33&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;310)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.12.5&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;311)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.87.34&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;312)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.91.33&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;313)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.90.33&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;314)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.87.33&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;315)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.90.19&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;316)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.95.18&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;317)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.87.19&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;318)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.83.34&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;319)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.84.34&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;320)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.85.34&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;321)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.82.33&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;322)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.76.99&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;323)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.76.65&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;324)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.75.12&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;325)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.71.19&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;326)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.70.33&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;327)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.7.5&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;328)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.70.13&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;329)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.67.33&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;330)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.7.8&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;331)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.92.5&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;332)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.91.6&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;333)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.84.2&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;334)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.87.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;335)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.83.2&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;336)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.85.2&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;337)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.75.5&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;338)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.70.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;339)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.57&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;340)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.59.149.204&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;341)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.128.16&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;342)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.58.15&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;343)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.45.6.103&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;344)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.128.203&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;345)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.165&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;346)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.63.177&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;347)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.252.115.53&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;348)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.17&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;349)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.128.210&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;350)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.211&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;351)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.130.52&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;352)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.5&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;353)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.59.19&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;354)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.85&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;355)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.129.6&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;356)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.252.114.101&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;357)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.252.115.59&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;358)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.252.115.49&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;359)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.63.53&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;360)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;192.133.77.197&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;361)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.62.41&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;362)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.234&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;363)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.128.40&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;364)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.128.96&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;365)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;192.133.77.189&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;366)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.128.14&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;367)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.59.95&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;368)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.104&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;369)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;192.133.77.191&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;370)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;192.133.77.145&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;371)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.57&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;372)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.45.7.185&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;373)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.208&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;374)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.186&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;375)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.208&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;376)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.252.114.11&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;377)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.129.37&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;378)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.62.75&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;379)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.58.85&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;380)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.185&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;381)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.45.7.97&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;382)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.93&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;383)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.229&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;384)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.182&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;385)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.128.195&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;386)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.45.6.57&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;387)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.63.163&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;388)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.58.177&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;389)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.59.61&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;390)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.63.75&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;391)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;392)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.128.238&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;393)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.21&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;394)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.252.115.153&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;395)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.58.157&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;396)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;192.133.77.59&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;397)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.128.205&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;398)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.62.21&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;399)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.130.118&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;400)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.228&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;401)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.130.66&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;402)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.45.7.189&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;403)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;192.133.77.133&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;404)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.45.7.165&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;405)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.130.145&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;406)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.128&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;407)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.129.36&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;408)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.252.115.221&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;409)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.252.114.61&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;410)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.58.105&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;411)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;103.252.115.169&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;412)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.246&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;413)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.43.248&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;414)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.63&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;415)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.130.117&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;416)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.52&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;417)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;199.96.62.17&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;418)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;202.160.129.164&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;419)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;179.60.193.16&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;420)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.3.50&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;421)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.16.50&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;422)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.2.50&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;423)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.60.218.50&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;424)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.83.1&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;425)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.6.1&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;426)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.8.1&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;427)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.95.17&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;428)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.17.14&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;429)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.2.36&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;430)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.60.216.36&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;431)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.60.219.36&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;432)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.2.14&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;433)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.60.216.169&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;434)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.8.50&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;435)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.8.41&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;436)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.3.8&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;437)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;185.60.219.41&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;438)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.12.50&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;439)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.95.38&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;440)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.81.4&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;441)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.67.19&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;442)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.6.35&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;443)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.94.7&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;444)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.20.18&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;445)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;179.60.193.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;446)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.94.23&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;447)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.80.54&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;448)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.69.169&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;449)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.67.41&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;450)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.64.7&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;451)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.21.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;452)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.20.8&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;453)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.17.41&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;454)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.18.18&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;455)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.10.41&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;456)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.1.50&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;457)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.12.35&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;458)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.1.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;459)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.244.217.42&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;460)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.244.209.150&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;461)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;209.95.56.60&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;462)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.95.37&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;463)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.80.37&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;464)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.8.36&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;465)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.9.36&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;466)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.17.36&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;467)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.12.36&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;468)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;157.240.10.36&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;469)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;173.252.108.3&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;470)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.69.245&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;471)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.244&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;472)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.45.246&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;473)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.244.46.71&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;474)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.32.6&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;475)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.18.129&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;476)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.80.5&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;477)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.32.10&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;478)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.17.131&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;479)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.32.15&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;480)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.2.6&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;481)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.80.6&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;482)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.80.3&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;483)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.2.3&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;484)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.34.133&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;485)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.32.12&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;486)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.1.8&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;487)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.18.133&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;488)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.32.2&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;489)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.2.5&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;490)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.32.5&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;491)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.32.13&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;492)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.32.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;493)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.82.7&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;494)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;162.125.7.1&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;495)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;119.28.87.227&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;496)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;31.13.95.33&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;497)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.23.124.189&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;498)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.23.125.189&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;499)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;130.211.15.150&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;500)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;104.31.142.88&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;501)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;38.121.72.166&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;502)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;65.49.68.152&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;503)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;204.79.197.217&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;504)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;54.234.18.200&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;505)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;52.58.1.161&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;506)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;184.173.136.86&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;507)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;174.37.243.85&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;508)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;69.171.224.36&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;509)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.161.20&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;510)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.161.83&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;511)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.162.104&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;512)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.162.102&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;513)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.162.109&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;514)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.162.115&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;515)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.163.106&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;516)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.162.98&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;517)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.162.31&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;518)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.163.102&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;519)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.163.112&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;520)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.163.108&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;521)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.163.116&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;522)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.163.117&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;523)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.147&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;524)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.11&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;525)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.139&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;526)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.141&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;527)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.211&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;528)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.173&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;529)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.212&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;530)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.189&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;531)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.48&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;532)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.53&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;533)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.62&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;534)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.8&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;535)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.165.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;536)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.166.137&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;537)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.166.253&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;538)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.166.61&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;539)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.166.148&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;540)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.166.42&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;541)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.166.142&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;542)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.167.147&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;543)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.166.49&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;544)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.166.57&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;545)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.166.62&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;546)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.166.9&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;547)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.167.30&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;548)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.167.156&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;549)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.167.148&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;550)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.167.165&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;551)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.167.158&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;552)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.169.171&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;553)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.167.159&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;554)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.167.167&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;555)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.167.174&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;556)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.169.178&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;557)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.169.175&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;558)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.169.174&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;559)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.169.179&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;560)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.169.181&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;561)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.170.39&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;562)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.170.33&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;563)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.169.37&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;564)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.169.185&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;565)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.169.186&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;566)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.169.46&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;567)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.169.55&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;568)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.169.54&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;569)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.170.26&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;570)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.170.41&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;571)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.170.43&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;572)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.170.44&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;573)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.172.1&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;574)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.170.52&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;575)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.121.146.101&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;576)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.172.200&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;577)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.172.232&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;578)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.172.208&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;579)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.172.204&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;580)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;108.160.173.207&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;581)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.121.146.235&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;582)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.121.243.228&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;583)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.121.146.109&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;584)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.121.146.228&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;585)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.20&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;586)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.59&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;587)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.121.243.235&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;588)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.117&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;589)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.155&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;590)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.149&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;591)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.85&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-2 col-md-4 col-6 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-a-order&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;592)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-a-item&#39;&gt;
              &lt;span class=&#39;ip-a&#39;&gt;128.242.240.91&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

  &lt;/dl&gt;
&lt;/div&gt;


&lt;!-- l. 3309 --&gt;&lt;p class=&#39;indent&#39;&gt;  IPv6池中的每个地址都包含模式‘face:b00c’，这是facebook.com真实IP地址的特征。GFW使用互联网公司知名地址的情况在过去已被注意到&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2020a&#39;&gt;8&lt;/a&gt; §3.2]&lt;/span&gt;，&lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Hoang2021a&#39;&gt;9&lt;/a&gt; §5.1]&lt;/span&gt;。
&lt;/p&gt;
&lt;div class=&#39;minipage&#39;&gt;
  &lt;dl class=&#39;enumerate-enumitem row&#39;&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;1)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f130:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f12c:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;3)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f12c:0183:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;4)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f127:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;5)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f126:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;6)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f129:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;7)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f12a:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;8)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f11f:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;9)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f127:0283:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;10)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f11c:8083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;11)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f11c:8183:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;12)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f11b:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;13)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f11a:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;14)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f10e:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;15)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f117:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;16)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f10c:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;17)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f112:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;18)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f111:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;19)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f10f:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;20)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f10d:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;21)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f10d:0183:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;22)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f10c:0283:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;23)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f10a:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;24)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f102:0183:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;25)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f107:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;26)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f134:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;27)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f136:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;28)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f12d:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;29)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f134:0183:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

      &lt;div class=&#34;col-xl-4 col-md-6 col-12 md-auto&#34;&gt;
          &lt;dt class=&#39;enumerate-enumitem ip-aaaa-order&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;30)&lt;/span&gt;
          &lt;/dt&gt;
          &lt;dd class=&#39;enumerate-enumitem ip-aaaa-item&#39;&gt;
              &lt;span class=&#39;ip-aaaa&#39;&gt;2a03:2880:f131:0083:face:b00c:0:25de&lt;/span&gt;
          &lt;/dd&gt;
      &lt;/div&gt;

  &lt;/dl&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a id=&#39;x1-691r2&#39;&gt;&lt;/a&gt;
&lt;/p&gt;&lt;!-- l. 3317 --&gt;&lt;p class=&#39;indent&#39;&gt;
&lt;/p&gt;&lt;!-- l. 3317 --&gt;
&lt;h2 id=&#34;reverse-engineered-dns-parsing-and-injection-algorithm&#34; data-heading-label=&#34;附录B：逆向工程的DNS解析和注入算法&#34;&gt;
    &lt;a id=&#34;app:b-reverse-engineered-dns-parsing-and-injection-algorithm&#34;
        href=&#34;#app:b-reverse-engineered-dns-parsing-and-injection-algorithm&#34;&gt;
        &lt;span class=&#34;h2 sectionHead small-caps&#34;&gt;附录B&lt;/span&gt;
        &lt;span class=&#34;h2 sectionHead small-caps&#34;&gt;逆向工程DNS解析和注入算法&lt;/span&gt;
        &lt;/a&gt;
        &lt;/h2&gt;
        &lt;!-- l. 3343 --&gt;&lt;p class=&#39;indent&#39;&gt;  下面的 C 代码是我们对导致 Wallbleed 的错误 DNS 查询处理算法进行逆向工程的尝试。该代码在所有重要方面复现了受 Wallbleed 影响的 DNS 注入器的行为。如果&lt;span class=&#39;cmtt-10&#39;&gt;&lt;/span&gt;PATCHED&lt;/span&gt;为&lt;span class=&#39;cmtt-10&#39;&gt;false&lt;/span&gt;，则代码实现的是Wallbleed v1漏洞；如果为&lt;span class=&#39;cmtt-10&#39;&gt;true&lt;/span&gt;，则实现的是部分修复的Wallbleed v2（参见&lt;a href=&#39;#sec:3c-Incomplete-patch-wallbleed-v2&#39;&gt;第III-C节&lt;/a&gt;和&lt;a href=&#39;#sec:7-monitoring-the-censors-patching-behavior&#39;&gt;第VII节&lt;/a&gt;）。
        &lt;/p&gt;&lt;!-- l. 3360 --&gt;&lt;p class=&#39;indent&#39;&gt;  在观察到DNS查询并将其复制到内存后，注入设备解析出QNAME以决定查询是否需要被审查，如果需要则准备一个响应。GFW的实现中存在多个漏洞，其中最严重的是未能对DNS名称标签长度进行边界检查，以确保其不超出消息本身的大小。
        &lt;/p&gt;&lt;div class=&#39;ajdustwidth&#39; style=&#39;margin-left:0em;margin-right:0em;&#39;&gt;
  &lt;!-- l. 655 --&gt;
  &lt;pre class=&#39;lstinputlisting&#39;
  id=&#39;listing-1&#39;&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-682r1&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 1&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;检查msg是否为应被审查的名称的DNS查询。&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-683r2&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 2&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;如果是，则将msg就地更改为响应并返回响应的长度。&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-684r3&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 3&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;如果不是，则返回0。&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-685r4&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 4&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;size_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;response(unsigned char *msg, size_t msg_len)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-686r5&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 5&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-687r6&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 6&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(msg_len &amp;lt; 12 || (msg[2] &amp;amp; 0x80) != 0)&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;如果 msg 太短或不是查询，则不会响应。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-688r7&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 7&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;return&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;0;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-689r8&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 8&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-690r9&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 9&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;char&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;qname[126];&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;QNAME 的点分隔、空终止表示将存储在 qname 中。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-691r10&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;10&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;size_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;qname_i = 0;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-692r11&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;11&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;循环解析QNAME。&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-693r12&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;12&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;size_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;msg_i = 12;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;msg_ptr 旨在跟踪 msg_i 并指向循环末尾的 QNAME。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-694r13&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;13&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;unsigned&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;char *msg_ptr;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-695r14&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;14&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;for&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(;;) {&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-696r15&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;15&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;size_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;label_len = msg[msg_i++];&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;Bug：没有检查 msg_i 是否在范围内。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-697r16&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;16&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;msg_ptr&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;= &amp;amp;msg[msg_i];&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;将 msg_ptr 与 msg_i 同步。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-698r17&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;17&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-699r18&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;18&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(label_len == 0)&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;退出条件 1：空标签（label）。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-700r19&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;19&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;            &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;break&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-701r20&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;20&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(msg_i &amp;gt; msg_len)&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;退出条件2：刚刚解析的标签长度前缀超出了结束消息的边界。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-702r21&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;21&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;            &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;break&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-703r22&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;22&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-715r23&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;23&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;#&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;!PATCHED&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-704r23&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;24&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(qname_i + 1 &amp;gt; 124)&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;退出条件3：没有足够的空间来至少容纳一个字节的标签&lt;br&gt;（带有一个点和一个空终止符）。&lt;br&gt;在 qname 后追加一个点，除了在第一个标签之前。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-705r24&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;25&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;            &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;break&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-718r26&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;26&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;#&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;else&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39; style=&#39;color:#808080&#39;&gt;&lt;a id=&#39;x1-719r27&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;27&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;msg_i&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;+= MIN(label_len, 124 - qname_i);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39; style=&#39;color:#808080&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;尽可能多地获取标签内容，留出一个点和一个空终止符的空间。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39; style=&#39;color:#808080&#39;&gt;&lt;a id=&#39;x1-720r28&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;28&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39; style=&#39;color:#808080&#39;&gt;&lt;a id=&#39;x1-721r29&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;29&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(qname_i + label_len &amp;gt; 124)&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39; style=&#39;color:#808080&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;退出条件4：标签太长，无法放入qname中。&lt;br&gt;Bug：在这种情况下，msg_ptr ≠ msg + msg_i。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39; style=&#39;color:#808080&#39;&gt;&lt;a id=&#39;x1-722r30&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;30&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;            &lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;break&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-723r31&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;31&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;#&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;endif&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-724r32&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;32&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-725r33&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;33&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(qname_i &amp;gt; 0)&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;如果不是第一个标签，则在qname中追加一个点。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-707r26&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;34&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;            &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;qname&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;qname_i&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;++]&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;= ’.’;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-708r27&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;35&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;size_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;n = MIN(label_len, 125 - qname_i);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;复制尽可能多的标签内容以适应 qname。&lt;br&gt;Bug：没有检查 msg_ptr + n 是否在范围内。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-709r28&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;36&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;memcpy&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;qname&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;+ qname_i, msg_ptr, n);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-710r29&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;37&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;qname_i&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;+= n;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-730r38&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;38&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;#&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;!PATCHED&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-711r30&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;39&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;msg_i&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;+= n;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-712r31&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;40&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(n &amp;lt; label_len)&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;退出条件4：标签太长，无法容纳在qname中。&lt;br&gt;Bug：在这种情况下，qname_ptr ≠ msg_ptr。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-713r32&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;41&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;            &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;break&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-734r42&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;42&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;#&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;endif&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-714r33&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;43&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-715r34&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;44&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;qname&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;qname_i&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;= ’\0’;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;空终止点分隔的名称字符串。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-716r35&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;45&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-717r36&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;46&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(!name_matches_blocklist(qname))&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;提取的QNAME字符串与阻止列表匹配吗？&lt;br&gt;如果不匹配，则不发送响应。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-718r37&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;47&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;return&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;0;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-719r38&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;48&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-720r39&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;49&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;读取QTYPE。.&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-721r40&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;50&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint16_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;qtype&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;ntohs(*(uint16_t *) msg_ptr);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;msg_ptr 可能与此处的 msg_i 不一致。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-743r51&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;51&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;#&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;PATCHED&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39; style=&#39;color:#808080&#39;&gt;&lt;a id=&#39;x1-744r52&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;52&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;读取QCLASS，强制QCLASS == 1。&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39; style=&#39;color:#808080&#39;&gt;&lt;a id=&#39;x1-745r53&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;53&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint16_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;qclass = ntohs(*(uint16_t *) (msg_ptr + 2));&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39; style=&#39;color:#808080&#39;&gt;&lt;a id=&#39;x1-746r54&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;54&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(qclass != 1)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39; style=&#39;color:#808080&#39;&gt;&lt;a id=&#39;x1-747r55&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;55&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;return&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#808080&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;0;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-748r56&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;56&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;#&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;endif&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-723r42&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;57&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;将查询更改为响应。&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-724r43&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;58&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;size_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;resp_len = msg_i + 4;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;为查询的QTYPE和QCLASS添加4个字节。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-725r44&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;59&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;((msg[2] &amp;amp; 0x01) == 0)&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;如果查询中未设置RD标志，则在响应中设置AD。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-726r45&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;60&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;*(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint16_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;*) &amp;amp;msg[2] = htons(0x8400);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-727r46&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;61&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;else&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;如果查询中设置了RD，则在响应中设置RD和RA。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-728r47&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;62&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;*(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint16_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;*) &amp;amp;msg[2] = htons(0x8180);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-729r48&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;63&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;*(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint16_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;*) &amp;amp;msg[ 4] = htons(1);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;QDCOUNT = 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-730r49&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;64&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;*(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint16_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;*) &amp;amp;msg[ 6] = htons(1);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;ANCOUNT = 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-731r50&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;65&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;*(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint16_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;*) &amp;amp;msg[ 8] = htons(0);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;NSCOUNT = 0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-732r51&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;66&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;*(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint16_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;*) &amp;amp;msg[10] = htons(0);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;ARCOUNT = 0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-733r52&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;67&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;根据QTYPE附加一个答案部分。&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-734r53&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;68&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;const&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;unsigned char *rdata;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-735r54&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;69&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint32_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;rdlength;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-736r55&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;70&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(qtype == 28) {&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;AAAA类型的查询会得到一个AAAA类型的响应。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-737r56&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;71&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;rdlength&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;= 16;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-738r57&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;72&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;rdata&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;= next_aaaa_address();&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;从循环池中获取下一个IPv6地址。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-739r58&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;73&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;else {&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;所有其他QTYPE类型都会得到一个A类型的响应。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-740r59&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;74&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;qtype&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;= 1;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-741r60&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;75&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;rdlength&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;= 4;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-742r61&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;76&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;rdata&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;= next_a_address();&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;从循环池中获取下一个IPv4地址。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-743r62&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;77&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-744r63&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;78&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint32_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;ttl = rand_in_range(64, 254);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;TTL在64到254之间（包括64和254）随机选择。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-745r64&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;79&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;unsigned&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;char rr[] = {&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;构造一个资源记录。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-746r65&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;80&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;xc0&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;0x0c, // NAME&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;指向QNAME的压缩指针。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-747r66&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;81&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;0,&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;0,&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;     &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;TYPE占位符&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-748r67&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;82&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;x00&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;0x01, // CLASS = IN&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-749r68&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;83&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;0,&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;0, 0, 0, // TTL占位符&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-750r69&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;84&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;0,&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;0,&lt;/span&gt; &lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;     &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;RDLENGTH占位符&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-751r70&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;85&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;};&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-752r71&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;86&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;*(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint16_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;*) &amp;amp;rr[ 2] = htons(qtype);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;设置QTYPE.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-753r72&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;87&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;*(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint32_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;*) &amp;amp;rr[ 6] = htonl(ttl);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;设置TTL.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-754r73&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;88&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;*(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;uint16_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;*) &amp;amp;rr[10] = htons(rdlength);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;设置RDLENGTH.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-755r74&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;89&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;memcpy&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;msg&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;+ resp_len, rr, sizeof(rr));&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;将资源记录追加到RDATA。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-756r75&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;90&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;resp_len&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;+= sizeof(rr);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-757r76&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;91&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;memcpy&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;msg&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;+ resp_len, rdata, rdlength);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;追加RDATA（虚假的IP地址）。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-758r77&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;92&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;resp_len&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;+= rdlength;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-759r78&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;93&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-760r79&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;94&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;return&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;resp_len;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;这个查询会得到一个注入的响应。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-761r80&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;95&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p class=&#39;indent&#39;&gt;
    我们并不确切知道数据包的载荷在被观察到后是如何存入内存的。例如，它可能是通过软件复制，或者是网络接口的自动 DMA 传输。无论具体过程如何，DNS 注入器的一些细微行为特征，可以用数据包被复制到内存的方式来解释。这些特征包括：内存缓冲区的第 18 个字节始终为零 &lt;a href=&#39;#fn:minor-subtlety-implicit-null-terminator&#39;&gt;脚注 3&lt;/a&gt;；曾经有一段时间，泄露的内存中前 4 个字节与其他部分不同（“摘要”字节，&lt;a href=&#34;#sec:4b-the-four-digest-bytes&#34;&gt;第 IV-B 节&lt;/a&gt;）；以及上述 &lt;span class=&#39;cmtt-10&#39;&gt;response &lt;/span&gt;函数中的 &lt;span class=&#39;cmtt-10&#39;&gt;msg_len &lt;/span&gt; 限制来自 UDP 头部，而不是数据包实际可用的字节数（当这两个值不同时）。
&lt;/p&gt;

&lt;div class=&#39;ajdustwidth&#39; style=&#39;margin-left:0em;margin-right:0em;&#39;&gt;
  &lt;!-- l. 678 --&gt;
  &lt;pre class=&#39;lstinputlisting&#39;
      id=&#39;listing-2&#39;&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-763r1&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 1&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;将观察到的UDP数据包载荷复制到内存中进行分析，并可能修改，&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-764r2&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 2&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;如果它是一个在阻止名单上的DNS查询，则注入一个响应。&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-765r3&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 3&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;hdr_len是UDP头部中代表载荷长度的值（不包括头本身的长度）。&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-766r4&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 4&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-767r5&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 5&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;void&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;udp_packet_callback(const void *data, size_t data_len, size_t hdr_len)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-768r6&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 6&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-769r7&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 7&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;data_len&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;= MIN(data_len, hdr_len);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;将数据包负载修剪到头部中指定的大小。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-770r8&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 8&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;void&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;*work = allocate_memory(hdr_len + 28);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;为查询和响应记录分配内存。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-771r9&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt; 9&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;memset&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;work&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;0x00, 18);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;清除缓冲区开头的内容；请参阅&lt;a href=&#39;#fn:minor-subtlety-implicit-null-terminator&#39;&gt;脚注3&lt;/a&gt;。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-772r10&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;10&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;memcpy&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;work&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;data, data_len);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;将数据包复制到工作内存中。复制使用 &lt;br&gt; data_len，但解析使用 hdr_len。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-773r11&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;11&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-774r12&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;12&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(USE_DIGEST)&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;“Digest”字节(&lt;a href=&#34;#sec:4b-the-four-digest-bytes&#34;&gt;Section IV-B&lt;/a&gt;)&lt;/span&gt;，如果存在，就&lt;br&gt;紧接在查询之后。我们使用的是固定字节模式。&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-775r13&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;13&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;memset&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;work&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;+ data_len, ’D’, 4);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-776r14&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;14&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;size_t&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;resp_len = response(work, hdr_len);&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;这个数据包是需要响应的DNS查询吗？&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-777r15&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;15&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;(resp_len &amp;gt; 0)&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;marginpar&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;如果是，则注入响应。我们省略了伪造源地址等细节。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-778r16&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;16&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;        &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;inject&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;work&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt; &lt;span class=&#39;cmtt-9&#39;&gt;resp_len);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-779r17&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;17&lt;/span&gt;&lt;/span&gt;&lt;span class=&#39;cmtt-9&#39;&gt;    &lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;free_memory&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;work&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#39;label&#39;&gt;&lt;a id=&#39;x1-780r18&#39;&gt;&lt;/a&gt;&lt;span class=&#39;ptmr8t-x-x-90&#39;&gt;18&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:#000000&#39;&gt;&lt;span class=&#39;cmtt-9&#39;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;script src=&#34;./js/tocbot.min.js&#34;&gt;&lt;/script&gt;
&lt;script&gt;
    document.addEventListener(&#39;DOMContentLoaded&#39;, function() {
    tocbot.init({
        tocSelector: &#39;.js-toc&#39;,
        contentSelector: &#39;.js-toc-content&#39;,
        headingSelector: &#39;h2, h3&#39;,
        collapseDepth: 3,
        activeLinkClass: &#39;&#39;
    });
  });
&lt;/script&gt;</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>Many Popular Censorship Circumvention Tools Deleted or Archived since November 2, 2023</title>
        <link>https://gfw.report/blog/developers_deleted_repos/en/</link>
        <pubDate>Thu, 02 Nov 2023 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/developers_deleted_repos/en/</guid>
        
        <description>&lt;p&gt;A significant number of censorship circumvention tools maintained by Chinese developers have been either deleted or archived since Thursday, November 2, 2023 (Beijing Time). These tools have been used by millions of users in China and other heavily censored regions on a daily basis.&lt;/p&gt;
&lt;p&gt;As summarized in the table below, this chain of incidents started with the developer @Fndroid deleted the repo Clash For Windows &amp;ndash; a highly popular tool with thousands of stars and forks on Github &amp;ndash; on Thursday, November 2, 2023 (Beijing Time). This incident was followed by further upheaval on November 3, 2023, as a series of other popular censorship circumvention tools developed by Chinese developers, were either completely deleted, archived, or stripped of all commits across their branches.&lt;/p&gt;
&lt;p&gt;We encourage the anti-censorship community to come together for an open dialogue on these emerging incidents, to explore mitigation strategies, and to consider the long-term implications. This collective effort is crucial for developing a resilient response to these incidents.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Project Name&lt;/th&gt;
          &lt;th&gt;Developer&lt;/th&gt;
          &lt;th&gt;URL&lt;/th&gt;
          &lt;th&gt;Repo Status&lt;/th&gt;
          &lt;th&gt;Archive Link&lt;/th&gt;
          &lt;th&gt;Date (Beijing Time)&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Clash For Windows&lt;/td&gt;
          &lt;td&gt;@Fndroid&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/Fndroid/clash_for_windows_pkg&#34;&gt;Fndroid/clash_for_windows_pkg&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Deleted&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231102082223/https://github.com/Fndroid/clash_for_windows_pkg&#34;&gt;Link&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Thursday, November 2, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Clash Core&lt;/td&gt;
          &lt;td&gt;@Dreamacro&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/Dreamacro/clash&#34;&gt;Dreamacro/clash&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Deleted&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231102134434/https://github.com/Dreamacro/clash&#34;&gt;Link&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Friday, November 3, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GUI.for.Clash&lt;/td&gt;
          &lt;td&gt;@openrhc&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/openrhc/GUI.for.Clash&#34;&gt;openrhc/GUI.for.Clash&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Deleted&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231103074249/https://github.com/openrhc/GUI.for.Clash&#34;&gt;Link&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Friday, November 3, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;clash-dashboard&lt;/td&gt;
          &lt;td&gt;@Dreamacro&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/Dreamacro/clash-dashboard&#34;&gt;Dreamacro/clash-dashboard&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Deleted&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231017032906/https://github.com/Dreamacro/clash-dashboard&#34;&gt;Link&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Friday, November 3, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Clash Chinese Patch&lt;/td&gt;
          &lt;td&gt;@BoyceLig&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/BoyceLig/Clash_Chinese_Patch&#34;&gt;BoyceLig/Clash_Chinese_Patch&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Deleted&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20230917212847/https://github.com/BoyceLig/Clash_Chinese_Patch&#34;&gt;Link&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Friday, November 3, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;tpclash&lt;/td&gt;
          &lt;td&gt;@mritd&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/mritd/tpclash&#34;&gt;mritd/tpclash&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Deleted&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231004210925/https://github.com/mritd/tpclash&#34;&gt;Link&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Friday, November 3, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CatBoxForAndroid&lt;/td&gt;
          &lt;td&gt;@AntiNeko&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/AntiNeko/CatBoxForAndroid&#34;&gt;AntiNeko/CatBoxForAndroid&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Deleted&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231004121812/https://github.com/AntiNeko/CatBoxForAndroid&#34;&gt;Link&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Friday, November 3, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Fclash&lt;/td&gt;
          &lt;td&gt;@Fclash&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/Fclash/Fclash&#34;&gt;Fclash/Fclash&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Deleted&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231103090810/https://github.com/Fclash/Fclash&#34;&gt;Link&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Friday, November 3, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ClashForAndroid&lt;/td&gt;
          &lt;td&gt;@Kr328&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/Kr328/ClashForAndroid&#34;&gt;Kr328/ClashForAndroid&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Repo Deleted and Remove from Google Play&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231103071433/https://github.com/Kr328/ClashForAndroid&#34;&gt;Link&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Friday, November 3, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;homebridger&lt;/td&gt;
          &lt;td&gt;@immortalwrt&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/immortalwrt/homebridger&#34;&gt;immortalwrt/homebridger&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Archived + Removed + Set &lt;code&gt;rm&lt;/code&gt; as the default branch&lt;/td&gt;
          &lt;td&gt;None&lt;/td&gt;
          &lt;td&gt;Friday, November 3, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Clash.Meta&lt;/td&gt;
          &lt;td&gt;@MetaCubeX&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/MetaCubeX/Clash.Meta&#34;&gt;MetaCubeX/Clash.Meta&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Archived + Set &lt;code&gt;rm&lt;/code&gt; as the default branch&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20230924160622/https://github.com/MetaCubeX/Clash.Meta&#34;&gt;Link&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Friday, November 3, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Clash Verge&lt;/td&gt;
          &lt;td&gt;@zzzgydi&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/zzzgydi/clash-verge&#34;&gt;zzzgydi/clash-verge&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Archived + Set &lt;code&gt;rm&lt;/code&gt; as the default branch&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231103081736/https://github.com/zzzgydi/clash-verge&#34;&gt;Link&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Friday, November 3, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;tuic&lt;/td&gt;
          &lt;td&gt;@EAimTY&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/EAimTY/tuic&#34;&gt;EAimTY/tuic&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Archived + Cleared the default &lt;code&gt;master&lt;/code&gt; branch&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20230618044337/https://github.com/EAimTY/tuic&#34;&gt;Link&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Friday, November 3, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ClashMetaForAndroid&lt;/td&gt;
          &lt;td&gt;@MetaCubeX&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/MetaCubeX/ClashMetaForAndroid&#34;&gt;MetaCubeX/ClashMetaForAndroid&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Archived + Set &lt;code&gt;init&lt;/code&gt; as the default branch&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231103084342/https://github.com/MetaCubeX/ClashMetaForAndroid&#34;&gt;Link&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Friday, November 3, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;helloworld&lt;/td&gt;
          &lt;td&gt;@fw876&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/fw876/helloworld&#34;&gt;fw876/helloworld&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Clear the default master branch&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231103072550/https://github.com/fw876/helloworld&#34;&gt;Link&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Friday, November 3, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ShellClash&lt;/td&gt;
          &lt;td&gt;@juewuy&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/juewuy/ShellClash&#34;&gt;juewuy/ShellClash&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Renamed to &lt;code&gt;ShellCrash&lt;/code&gt; + Set &lt;code&gt;rm&lt;/code&gt; as the default branch&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231103095051/https://github.com/juewuy/ShellCrash&#34;&gt;Link&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Friday, November 3, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ClashCross&lt;/td&gt;
          &lt;td&gt;@clashcross&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/clashcross/ClashCross&#34;&gt;clashcross/ClashCross&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Archived&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231104183817/https://github.com/clashcross/ClashCross&#34;&gt;Link&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Friday, November 3, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ClashX&lt;/td&gt;
          &lt;td&gt;@yichengchen&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/yichengchen/clashX&#34;&gt;yichengchen/clashX&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Archived&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231103085620/https://github.com/yichengchen/clashX&#34;&gt;Link&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Friday, November 3, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ClashF&lt;/td&gt;
          &lt;td&gt;@ModuleList&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/ModuleList/ClashF&#34;&gt;ModuleList/ClashF&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Archived + Set &lt;code&gt;rm&lt;/code&gt; as the default branch&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231103141435/https://github.com/ModuleList/ClashF&#34;&gt;Link&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Friday, November 3, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Box4Magisk&lt;/td&gt;
          &lt;td&gt;@CHIZI-0618&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/CHIZI-0618/box4magisk&#34;&gt;CHIZI-0618/box4magisk&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Archived + Set &lt;code&gt;rm&lt;/code&gt; as the default branch&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20230607233246/https://github.com/CHIZI-0618/box4magisk&#34;&gt;Link&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Friday, November 3, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Clash For Windows Chinese&lt;/td&gt;
          &lt;td&gt;@Z-Siqi&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/Z-Siqi/Clash-for-Windows_Chinese&#34;&gt;Z-Siqi/Clash-for-Windows_Chinese&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Archived&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231103131844/https://github.com/Z-Siqi/Clash-for-Windows_Chinese&#34;&gt;Link&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Friday, November 3, 2023&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;In addition:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Clash Multiplatform Alpha Android: The Telegram channel has been cleared and the Telegram group has been deleted.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The table was last updated on November 5, 2023, thanks to the reports and updates from @travislee8964 @clashcross @MuaPyapSrii @al0rid4l @showgood163 @mega-optimus @markpash @wgll000 .&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>自2023年11月2日起，中国开发者在GitHub上删除或存档翻墙工具</title>
        <link>https://gfw.report/blog/developers_deleted_repos/zh/</link>
        <pubDate>Thu, 02 Nov 2023 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/developers_deleted_repos/zh/</guid>
        
        <description>&lt;p&gt;自2023年11月2日星期四（北京时间）以来，由中国开发者维护的大量翻墙工具要么被删除，要么被存档。这些工具曾被来自中国及其他审查严重地区的数百万用户用于绕过审查。&lt;/p&gt;
&lt;p&gt;如下表所总结，这一系列事件始于开发者@Fndroid在2023年11月2日删除了其在Github上拥有数千星标和分支的热门工具Clash For Windows的仓库。紧接着在2023年11月3日，更多由中国开发者开发的流行翻墙工具被彻底删除、存档或删除了其分支上的所有提交。&lt;/p&gt;
&lt;p&gt;我们鼓励反审查社区一起讨论这些正在发生的事件，探索缓解策略，并思考长期影响。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;项目名称&lt;/th&gt;
          &lt;th&gt;开发者&lt;/th&gt;
          &lt;th&gt;网址&lt;/th&gt;
          &lt;th&gt;仓库状态&lt;/th&gt;
          &lt;th&gt;快照链接&lt;/th&gt;
          &lt;th&gt;日期（北京时间）&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Clash For Windows&lt;/td&gt;
          &lt;td&gt;@Fndroid&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/Fndroid/clash_for_windows_pkg&#34;&gt;Fndroid/clash_for_windows_pkg&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;已删除&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231102082223/https://github.com/Fndroid/clash_for_windows_pkg&#34;&gt;链接&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2023年11月2日 星期四&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Clash Core&lt;/td&gt;
          &lt;td&gt;@Dreamacro&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/Dreamacro/clash&#34;&gt;Dreamacro/clash&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;已删除&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231102134434/https://github.com/Dreamacro/clash&#34;&gt;链接&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2023年11月3日 星期五&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GUI.for.Clash&lt;/td&gt;
          &lt;td&gt;@openrhc&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/openrhc/GUI.for.Clash&#34;&gt;openrhc/GUI.for.Clash&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;已删除&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231103074249/https://github.com/openrhc/GUI.for.Clash&#34;&gt;链接&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2023年11月3日 星期五&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;clash-dashboard&lt;/td&gt;
          &lt;td&gt;@Dreamacro&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/Dreamacro/clash-dashboard&#34;&gt;Dreamacro/clash-dashboard&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;已删除&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231017032906/https://github.com/Dreamacro/clash-dashboard&#34;&gt;链接&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2023年11月3日 星期五&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Clash Chinese Patch&lt;/td&gt;
          &lt;td&gt;@BoyceLig&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/BoyceLig/Clash_Chinese_Patch&#34;&gt;BoyceLig/Clash_Chinese_Patch&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;已删除&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20230917212847/https://github.com/BoyceLig/Clash_Chinese_Patch&#34;&gt;链接&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2023年11月3日 星期五&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;tpclash&lt;/td&gt;
          &lt;td&gt;@mritd&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/mritd/tpclash&#34;&gt;mritd/tpclash&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;已删除&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231004210925/https://github.com/mritd/tpclash&#34;&gt;链接&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2023年11月3日 星期五&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CatBoxForAndroid&lt;/td&gt;
          &lt;td&gt;@AntiNeko&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/AntiNeko/CatBoxForAndroid&#34;&gt;AntiNeko/CatBoxForAndroid&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;已删除&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231004121812/https://github.com/AntiNeko/CatBoxForAndroid&#34;&gt;链接&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2023年11月3日 星期五&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Fclash&lt;/td&gt;
          &lt;td&gt;@Fclash&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/Fclash/Fclash&#34;&gt;Fclash/Fclash&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;已删除&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231103090810/https://github.com/Fclash/Fclash&#34;&gt;链接&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2023年11月3日 星期五&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ClashForAndroid&lt;/td&gt;
          &lt;td&gt;@Kr328&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/Kr328/ClashForAndroid&#34;&gt;Kr328/ClashForAndroid&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;仓库已删除，已从Google Play移除&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231103071433/https://github.com/Kr328/ClashForAndroid&#34;&gt;链接&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2023年11月3日 星期五&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;homebridger&lt;/td&gt;
          &lt;td&gt;@immortalwrt&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/immortalwrt/homebridger&#34;&gt;immortalwrt/homebridger&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;已存档 + 移除 + 设置&lt;code&gt;rm&lt;/code&gt;为默认分支&lt;/td&gt;
          &lt;td&gt;无&lt;/td&gt;
          &lt;td&gt;2023年11月3日 星期五&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Clash Verge&lt;/td&gt;
          &lt;td&gt;@zzzgydi&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/zzzgydi/clash-verge&#34;&gt;zzzgydi/clash-verge&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;已存档 + 设置&lt;code&gt;rm&lt;/code&gt;为默认分支&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231103081736/https://github.com/zzzgydi/clash-verge&#34;&gt;链接&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2023年11月3日 星期五&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;tuic&lt;/td&gt;
          &lt;td&gt;@EAimTY&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/EAimTY/tuic&#34;&gt;EAimTY/tuic&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;已存档 + 清除了默认的&lt;code&gt;master&lt;/code&gt;分支&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20230618044337/https://github.com/EAimTY/tuic&#34;&gt;链接&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2023年11月3日 星期五&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ClashMetaForAndroid&lt;/td&gt;
          &lt;td&gt;@MetaCubeX&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/MetaCubeX/ClashMetaForAndroid&#34;&gt;MetaCubeX/ClashMetaForAndroid&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;已存档 + 设置&lt;code&gt;init&lt;/code&gt;为默认分支&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231103084342/https://github.com/MetaCubeX/ClashMetaForAndroid&#34;&gt;链接&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2023年11月3日 星期五&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;helloworld&lt;/td&gt;
          &lt;td&gt;@fw876&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/fw876/helloworld&#34;&gt;fw876/helloworld&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;清除了默认的master分支&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231103072550/https://github.com/fw876/helloworld&#34;&gt;链接&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2023年11月3日 星期五&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ShellClash&lt;/td&gt;
          &lt;td&gt;@juewuy&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/juewuy/ShellClash&#34;&gt;juewuy/ShellClash&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;重命名为&lt;code&gt;ShellCrash&lt;/code&gt; + 设置&lt;code&gt;rm&lt;/code&gt;为默认分支&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231103095051/https://github.com/juewuy/ShellCrash&#34;&gt;链接&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2023年11月3日 星期五&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ClashCross&lt;/td&gt;
          &lt;td&gt;@clashcross&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/clashcross/ClashCross&#34;&gt;clashcross/ClashCross&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;已存档&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231104183817/https://github.com/clashcross/ClashCross&#34;&gt;链接&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2023年11月3日 星期五&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ClashX&lt;/td&gt;
          &lt;td&gt;@yichengchen&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/yichengchen/clashX&#34;&gt;yichengchen/clashX&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;已存档&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231103085620/https://github.com/yichengchen/clashX&#34;&gt;链接&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2023年11月3日 星期五&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ClashF&lt;/td&gt;
          &lt;td&gt;@ModuleList&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/ModuleList/ClashF&#34;&gt;ModuleList/ClashF&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;已存档 + 设置&lt;code&gt;rm&lt;/code&gt;为默认分支&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231103141435/https://github.com/ModuleList/ClashF&#34;&gt;链接&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2023年11月3日 星期五&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Box4Magisk&lt;/td&gt;
          &lt;td&gt;@CHIZI-0618&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/CHIZI-0618/box4magisk&#34;&gt;CHIZI-0618/box4magisk&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;已存档 + 设置&lt;code&gt;rm&lt;/code&gt;为默认分支&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20230607233246/https://github.com/CHIZI-0618/box4magisk&#34;&gt;链接&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2023年11月3日 星期五&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Clash For Windows Chinese&lt;/td&gt;
          &lt;td&gt;@Z-Siqi&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/Z-Siqi/Clash-for-Windows_Chinese&#34;&gt;Z-Siqi/Clash-for-Windows_Chinese&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;已存档&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://web.archive.org/web/20231103131844/https://github.com/Z-Siqi/Clash-for-Windows_Chinese&#34;&gt;链接&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;此外：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Clash Multiplatform Alpha Android（非开源，Telegram 频道已清空，Telegram 群组已被删除。）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;该表格最后更新于 2023 年 11 月 5 日。万分感谢 @travislee8964、@clashcross、@MuaPyapSrii、@al0rid4l、@showgood163、@mega-optimus、@markpash、@wgll000 的报告和更新。&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>The blocking of 1.1.1.1 in China, starting from 2023-10-01</title>
        <link>https://gfw.report/blog/blocking_of_1111/en/</link>
        <pubDate>Sun, 01 Oct 2023 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/blocking_of_1111/en/</guid>
        
        <description>&lt;p&gt;There have been &lt;a href=&#34;https://github.com/net4people/bbs/issues/285#issuecomment-1742195415&#34;&gt;many&lt;/a&gt; &lt;a href=&#34;https://github.com/net4people/bbs/issues/292#issuecomment-1742192257&#34;&gt;reports&lt;/a&gt; of a blocking of &lt;code&gt;1.1.1.1&lt;/code&gt; in China, starting from October 1, 2023.&lt;/p&gt;
&lt;p&gt;As discussed in a different post on &lt;a href=&#34;https://github.com/net4people/bbs/issues/285&#34;&gt;Net4People&lt;/a&gt;, China injected TCP RST packets to block &lt;code&gt;1.1.1.1:443&lt;/code&gt; from September 5 to 20, 2023.&lt;/p&gt;
&lt;h2 id=&#34;major-observations&#34;&gt;Major observations&lt;/h2&gt;
&lt;p&gt;Below is our observation from a VPS in Tencent Cloud Beijing (ASN AS45090) on October 1, 2023:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Different from @5e2t &amp;rsquo;s observation, we have not been able to observe the TCP RSTs on the &lt;code&gt;1.1.1.1:443&lt;/code&gt; from our vantage point. In particular, we can successfully retrieve a complete webpage using &lt;code&gt;curl -v https://1.1.1.1&lt;/code&gt;. This shows inconsistency of this new censorship incident across different geo-locations or ASes.&lt;/li&gt;
&lt;li&gt;We observed that there was a chance that the TCP port &lt;code&gt;80&lt;/code&gt; of &lt;code&gt;1.1.1.1&lt;/code&gt; got injected with a &lt;code&gt;&amp;quot;302 Moved Temporarily&amp;quot;&lt;/code&gt;  or &lt;code&gt;&amp;quot;301 Moved Permanently&amp;quot;&lt;/code&gt; message, attempting to redirect users to the National Anti-Fraud Center website (&lt;a href=&#34;https://en.wikipedia.org/wiki/National_Anti-Fraud_Center&#34;&gt;wiki&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;analysis-on-the-injection-to-111180&#34;&gt;Analysis on the injection to &lt;code&gt;1.1.1.1:80&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Here is one example when no injection happens:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ubuntu@VM-32-5-ubuntu:~$ curl -v http://1.1.1.1
*   Trying 1.1.1.1:80...
* TCP_NODELAY set
* Connected to 1.1.1.1 (1.1.1.1) port 80 (#0)
&amp;gt; GET / HTTP/1.1
&amp;gt; Host: 1.1.1.1
&amp;gt; User-Agent: curl/7.68.0
&amp;gt; Accept: */*
&amp;gt;
* Mark bundle as not supporting multiuse
&amp;lt; HTTP/1.1 301 Moved Permanently
&amp;lt; Server: cloudflare
&amp;lt; Date: Sun, 01 Oct 2023 22:49:54 GMT
&amp;lt; Content-Type: text/html
&amp;lt; Content-Length: 167
&amp;lt; Connection: keep-alive
&amp;lt; Location: https://1.1.1.1/
&amp;lt; CF-RAY: **REDACTED**-SJC
&amp;lt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;301 Moved Permanently&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;301 Moved Permanently&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;cloudflare&amp;lt;/center&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
* Connection #0 to host 1.1.1.1 left intact
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is one example when the &lt;code&gt;&amp;quot;302 Moved Temporarily&amp;quot;&lt;/code&gt; got injected.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ubuntu@VM-32-5-ubuntu:~$ curl -v http://1.1.1.1
*   Trying 1.1.1.1:80...
* TCP_NODELAY set
* Connected to 1.1.1.1 (1.1.1.1) port 80 (#0)
&amp;gt; GET / HTTP/1.1
&amp;gt; Host: 1.1.1.1
&amp;gt; User-Agent: curl/7.68.0
&amp;gt; Accept: */*
&amp;gt;
* Mark bundle as not supporting multiuse
&amp;lt; HTTP/1.1 302 Moved Temporarily
&amp;lt; Connection: close
&amp;lt; Location: http://182.43.124.6/fzyujing?parameter2=REDACTED
&amp;lt;
* Closing connection 0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In particular, the &lt;strong&gt;redacted&lt;/strong&gt; parameter in the output consists of 319 characters. Querying from the same vantage point across time, only the &lt;code&gt;129th to 150th&lt;/code&gt; characters (22 characters) and the &lt;code&gt;257th to 278th&lt;/code&gt; characters (22 characters) in the 319 character message got changed. It is still unclear to us what information got encoded in this parameter.&lt;/p&gt;
&lt;p&gt;The real &lt;code&gt;301 Moved Permanently&lt;/code&gt; response from the &lt;code&gt;1.1.1.1&lt;/code&gt; will eventually get to the client (but arrived later than the injected message), indicating the censor doesn&amp;rsquo;t drop the real response from &lt;code&gt;1.1.1.1:80&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The ASN of the IP &lt;code&gt;182.43.124.6&lt;/code&gt; that hosts the National Anti-Fraud Center website:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;host&lt;/th&gt;
          &lt;th&gt;asn&lt;/th&gt;
          &lt;th&gt;asname&lt;/th&gt;
          &lt;th&gt;cc&lt;/th&gt;
          &lt;th&gt;registry&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;182.43.124.6&lt;/td&gt;
          &lt;td&gt;AS58519&lt;/td&gt;
          &lt;td&gt;CHINATELECOM-CTCLOUD Cloud Computing Corporation, CN&lt;/td&gt;
          &lt;td&gt;CN&lt;/td&gt;
          &lt;td&gt;apnic&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;experiment&#34;&gt;Experiment&lt;/h2&gt;
&lt;p&gt;We conducted an ongoing experiment from a vantage point in Tencent Cloud Beijing (ASN AS45090). Specifically, we &lt;code&gt;curl https://1.1.1.1&lt;/code&gt; and &lt;code&gt;curl http://1.1.1.1&lt;/code&gt; every minute and capture the network traffic.&lt;/p&gt;
&lt;p&gt;Below is an analyis based on the data we collected between Sunday, October 1, 2023 19:54 PM (Beijing Time, UTC+8) and Friday, October 6, 2023 2:43 PM (Beijing Time, UTC+8). In total, we made &lt;code&gt;6169&lt;/code&gt; HTTP requests. We received 559 &lt;code&gt;HTTP/1.1 301 Moved Permanently&lt;/code&gt; injected packets and 1760 &lt;code&gt;HTTP/1.1 302 Moved Temporarily&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This table summarizes all possible values seen in each type of injected responses:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;HTTP Status Code&lt;/th&gt;
          &lt;th&gt;301&lt;/th&gt;
          &lt;th&gt;302&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Total Number  of Injections&lt;/td&gt;
          &lt;td&gt;559&lt;/td&gt;
          &lt;td&gt;1760&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Injection Ratio (over 6169 requests)&lt;/td&gt;
          &lt;td&gt;9.06%&lt;/td&gt;
          &lt;td&gt;28.5%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;IP ID&lt;/td&gt;
          &lt;td&gt;0X99b3&lt;/td&gt;
          &lt;td&gt;0x4c57&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;IP TTL&lt;/td&gt;
          &lt;td&gt;251&lt;/td&gt;
          &lt;td&gt;251&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;IP Flags&lt;/td&gt;
          &lt;td&gt;0x0&lt;/td&gt;
          &lt;td&gt;0x0&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;TCP Flags&lt;/td&gt;
          &lt;td&gt;0x18 (PSH+ACK)&lt;/td&gt;
          &lt;td&gt;0x19 (PSH+ACK+FIN)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;TCP Window Size&lt;/td&gt;
          &lt;td&gt;502&lt;/td&gt;
          &lt;td&gt;65535&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;In comparision with @klzgrad &amp;rsquo;s observation that:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Injected HTTP/1.1 301 Moved Permanently packets have IP ids of 0x99d1, 0x99d2, 0x99d3, 0x99d4. Injected HTTP/1.1 302 Moved Temporarily packets have IP id of 0x4c57.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;We only observed one IP ID value &lt;code&gt;0x99b3&lt;/code&gt; for the &lt;code&gt;HTTP/1.1 301 Moved Permanently&lt;/code&gt; injection, which is dffierent from the four reported values.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;They also have consistent TTLs.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;We also observed consistent TTLs and its value is the same as the packets sent by the real &lt;code&gt;1.1.1.1&lt;/code&gt; server.&lt;/p&gt;
&lt;p&gt;The figure below shows the number of injections we received in each hour. We send around 60 requests in each hour and the average injection rate for &lt;code&gt;301&lt;/code&gt; and &lt;code&gt;302&lt;/code&gt; responses are only 9.06% and 28.5% respectively:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://github.com/net4people/bbs/assets/58831149/257a8190-2fc6-4a6b-a204-1868291a3ebf&#34; alt=&#34;figure&#34;&gt;&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>The blocking of 1.1.1.1 in China, starting from 2023-10-01</title>
        <link>https://gfw.report/blog/blocking_of_google_com/en/</link>
        <pubDate>Sun, 01 Oct 2023 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/blocking_of_google_com/en/</guid>
        
        <description></description>

        

        

        

        
        
      </item>
    
      <item>
        <title>中国的防火长城自2023年10月1日起封锁了1.1.1.1</title>
        <link>https://gfw.report/blog/blocking_of_1111/zh/</link>
        <pubDate>Sun, 01 Oct 2023 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/blocking_of_1111/zh/</guid>
        
        <description>&lt;p&gt;自 2023 年 10 月 1 日起，已有&lt;a href=&#34;https://github.com/net4people/bbs/issues/285#issuecomment-1742195415&#34;&gt;许多&lt;/a&gt; &lt;a href=&#34;https://github.com/net4people/bbs/issues/292#issuecomment-1742192257&#34;&gt;报告&lt;/a&gt;称中国开始屏蔽 &lt;code&gt;1.1.1.1&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;在 &lt;a href=&#34;https://github.com/net4people/bbs/issues/285&#34;&gt;Net4People的另一篇帖子&lt;/a&gt; 的讨论中提到，中国在 2023 年 9 月 5 日至 20 日期间通过注入 TCP RST 包来阻断 &lt;code&gt;1.1.1.1:443&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;主要观察结果&#34;&gt;主要观察结果&lt;/h2&gt;
&lt;p&gt;以下是我们在 2023 年 10 月 1 日，从腾讯云北京（&lt;code&gt;AS45090&lt;/code&gt;）的一台 VPS 上的观察：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;与 @5e2t 的观察不同，我们未能在 &lt;code&gt;1.1.1.1:443&lt;/code&gt; 上看到 TCP RST 注入。尤其是，我们能够使用 &lt;code&gt;curl -v https://1.1.1.1&lt;/code&gt; 成功获取完整网页。这表明此次新的审查事件在不同地理位置或不同 AS 之间存在不一致性。&lt;/li&gt;
&lt;li&gt;我们观察到，&lt;code&gt;1.1.1.1&lt;/code&gt; 的 TCP 端口 &lt;code&gt;80&lt;/code&gt; 有可能被注入 &lt;code&gt;&amp;quot;302 Moved Temporarily&amp;quot;&lt;/code&gt; 或 &lt;code&gt;&amp;quot;301 Moved Permanently&amp;quot;&lt;/code&gt; 消息，试图将用户重定向到国家反诈中心网站（&lt;a href=&#34;https://en.wikipedia.org/wiki/National_Anti-Fraud_Center&#34;&gt;维基&lt;/a&gt;）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;对-111180-注入的分析&#34;&gt;对 &lt;code&gt;1.1.1.1:80&lt;/code&gt; 注入的分析&lt;/h2&gt;
&lt;p&gt;以下是一个没有注入的例子：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ubuntu@VM-32-5-ubuntu:~$ curl -v http://1.1.1.1
...
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这是一个 &lt;code&gt;&amp;quot;302 Moved Temporarily&amp;quot;&lt;/code&gt; 被注入的例子：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ubuntu@VM-32-5-ubuntu:~$ curl -v http://1.1.1.1
...
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;特别地，输出中 &lt;strong&gt;已编辑&lt;/strong&gt; 的参数总共有 319 个字符。从同一观察点跨时间查询时，只有 &lt;code&gt;第129到150个字符（22个字符）&lt;/code&gt; 和 &lt;code&gt;第257到278个字符（22个字符）&lt;/code&gt; 发生变化。目前尚不清楚该参数编码了什么信息。&lt;/p&gt;
&lt;p&gt;来自 &lt;code&gt;1.1.1.1&lt;/code&gt; 的真实 &lt;code&gt;301 Moved Permanently&lt;/code&gt; 响应最终仍会到达客户端（但比注入消息更晚到达），表明审查方并没有丢弃来自 &lt;code&gt;1.1.1.1:80&lt;/code&gt; 的真实响应。&lt;/p&gt;
&lt;p&gt;承载国家反诈中心网站的 IP &lt;code&gt;182.43.124.6&lt;/code&gt; 的 ASN：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;host&lt;/th&gt;
          &lt;th&gt;asn&lt;/th&gt;
          &lt;th&gt;asname&lt;/th&gt;
          &lt;th&gt;cc&lt;/th&gt;
          &lt;th&gt;registry&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;182.43.124.6&lt;/td&gt;
          &lt;td&gt;AS58519&lt;/td&gt;
          &lt;td&gt;CHINATELECOM-CTCLOUD Cloud Computing Corporation, CN&lt;/td&gt;
          &lt;td&gt;CN&lt;/td&gt;
          &lt;td&gt;apnic&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;实验&#34;&gt;实验&lt;/h2&gt;
&lt;p&gt;我们在腾讯云北京（ASN AS45090）的一个观察点进行了持续实验。具体来说，我们每分钟执行一次 &lt;code&gt;curl https://1.1.1.1&lt;/code&gt; 和 &lt;code&gt;curl http://1.1.1.1&lt;/code&gt;，并捕获网络流量。&lt;/p&gt;
&lt;p&gt;以下是基于我们在 2023 年 10 月 1 日星期日 19:54（北京时间，UTC+8）到 10 月 6 日星期五 14:43（北京时间，UTC+8）收集到的数据的分析。总共进行了 &lt;code&gt;6169&lt;/code&gt; 个 HTTP 请求，其中我们接收到 559 个被注入的 &lt;code&gt;HTTP/1.1 301 Moved Permanently&lt;/code&gt; 报文和 1760 个 &lt;code&gt;HTTP/1.1 302 Moved Temporarily&lt;/code&gt; 报文。&lt;/p&gt;
&lt;p&gt;下表总结了每种注入响应的所有可能值：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;HTTP 状态码&lt;/th&gt;
          &lt;th&gt;301&lt;/th&gt;
          &lt;th&gt;302&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;注入总次数&lt;/td&gt;
          &lt;td&gt;559&lt;/td&gt;
          &lt;td&gt;1760&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;注入比例（6169 请求中占比）&lt;/td&gt;
          &lt;td&gt;9.06%&lt;/td&gt;
          &lt;td&gt;28.5%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;IP ID&lt;/td&gt;
          &lt;td&gt;0X99b3&lt;/td&gt;
          &lt;td&gt;0x4c57&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;IP TTL&lt;/td&gt;
          &lt;td&gt;251&lt;/td&gt;
          &lt;td&gt;251&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;IP Flags&lt;/td&gt;
          &lt;td&gt;0x0&lt;/td&gt;
          &lt;td&gt;0x0&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;TCP Flags&lt;/td&gt;
          &lt;td&gt;0x18 (PSH+ACK)&lt;/td&gt;
          &lt;td&gt;0x19 (PSH+ACK+FIN)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;TCP 窗口大小&lt;/td&gt;
          &lt;td&gt;502&lt;/td&gt;
          &lt;td&gt;65535&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;与 @klzgrad 的观察对比：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;注入的 HTTP/1.1 301 Moved Permanently 报文的 IP ID 为 0x99d1、0x99d2、0x99d3、0x99d4。注入的 HTTP/1.1 302 Moved Temporarily 报文的 IP ID 为 0x4c57。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我们仅观察到 &lt;code&gt;HTTP/1.1 301 Moved Permanently&lt;/code&gt; 注入的 IP ID 值为 &lt;code&gt;0x99b3&lt;/code&gt;，与报告的四个值不同。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;它们也有一致的 TTL。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我们同样观察到 TTL 值一致，并且其值与真实的 &lt;code&gt;1.1.1.1&lt;/code&gt; 服务器发出的报文相同。&lt;/p&gt;
&lt;p&gt;下图展示了我们每小时接收到的注入数量。我们每小时大约发送 60 个请求，&lt;code&gt;301&lt;/code&gt; 和 &lt;code&gt;302&lt;/code&gt; 响应的平均注入率仅分别为 9.06% 和 28.5%：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://github.com/net4people/bbs/assets/58831149/257a8190-2fc6-4a6b-a204-1868291a3ebf&#34; alt=&#34;figure&#34;&gt;&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>How the Great Firewall of China Detects and Blocks Fully Encrypted Traffic</title>
        <link>https://gfw.report/publications/usenixsecurity23/en/</link>
        <pubDate>Fri, 28 Apr 2023 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/publications/usenixsecurity23/en/</guid>
        
        <description>&lt;!-- use CSS file --&gt;

&lt;!-- Used to render latex syntax --&gt;
&lt;script type=&#34;text/javascript&#34; async
  src=&#34;https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML&#34;&gt;
&lt;/script&gt;

&lt;!-- Used to render Table of Content --&gt;
&lt;link href=&#34;./css/tocbot.css&#34; rel=&#39;stylesheet&#39; type=&#39;text/css&#39; /&gt;
&lt;script src=&#34;./js/tocbot.min.js&#34;&gt;&lt;/script&gt;
&lt;script&gt;
    document.addEventListener(&#39;DOMContentLoaded&#39;, function() {
    tocbot.init({
        tocSelector: &#39;.js-toc&#39;,
        contentSelector: &#39;.js-toc-content&#39;,
        headingSelector: &#39;h2, h3&#39;,
        collapseDepth: 3,
        activeLinkClass: &#39;&#39;
    });
    });
&lt;/script&gt;

        &lt;h1 class=&#34;titleHead&#34;&gt;How the Great Firewall of China Detects and Blocks Fully Encrypted Traffic&lt;/h1&gt;

        &lt;div class=&#34;authors&#34;&gt;
            &lt;div class=&#34;author&#34;&gt;
                &lt;p class=&#34;author-name&#34;&gt;Mingshi Wu&lt;/p&gt;
                &lt;p class=&#34;author-affiliation&#34;&gt;GFW Report&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&#34;author&#34;&gt;
                &lt;p class=&#34;author-name&#34;&gt;Jackson Sippe&lt;/p&gt;
                &lt;p class=&#34;author-affiliation&#34;&gt;University of Colorado Boulder&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&#34;author&#34;&gt;
                &lt;p class=&#34;author-name&#34;&gt;Danesh Sivakumar&lt;/p&gt;
                &lt;p class=&#34;author-affiliation&#34;&gt;University of Maryland&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&#34;author&#34;&gt;
                &lt;p class=&#34;author-name&#34;&gt;Jack Burg&lt;/p&gt;
                &lt;p class=&#34;author-affiliation&#34;&gt;University of Maryland&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&#34;author&#34;&gt;
                &lt;p class=&#34;author-name&#34;&gt;Peter Anderson&lt;/p&gt;
                &lt;p class=&#34;author-affiliation&#34;&gt;Independent researcher&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&#34;author&#34;&gt;
                &lt;p class=&#34;author-name&#34;&gt;Xiaokang Wang&lt;/p&gt;
                &lt;p class=&#34;author-affiliation&#34;&gt;V2Ray Project&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&#34;author&#34;&gt;
                &lt;p class=&#34;author-name&#34;&gt;Kevin Bock&lt;/p&gt;
                &lt;p class=&#34;author-affiliation&#34;&gt;University of Maryland&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&#34;author&#34;&gt;
                &lt;p class=&#34;author-name&#34;&gt;Amir Houmansadr&lt;/p&gt;
                &lt;p class=&#34;author-affiliation&#34;&gt;University of Massachusetts Amherst&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&#34;author&#34;&gt;
                &lt;p class=&#34;author-name&#34;&gt;Dave Levin&lt;/p&gt;
                &lt;p class=&#34;author-affiliation&#34;&gt;University of Maryland&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&#34;author&#34;&gt;
                &lt;p class=&#34;author-name&#34;&gt;Eric Wustrow&lt;/p&gt;
                &lt;p class=&#34;author-affiliation&#34;&gt;University of Colorado Boulder&lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;!-- Table of Contents place holder --&gt;
        &lt;div class=&#34;js-toc&#34;&gt;&lt;/div&gt;

        &lt;h2 class=&#34;section&#34;, id=&#34;abstract&#34;&gt;&lt;a id=&#34;abstract&#34; href=&#34;#abstract&#34;&gt;Abstract&lt;/a&gt;&lt;/h2&gt;

        &lt;p class=&#34;indent&#34;&gt;
            One of the cornerstones in censorship circumvention is fully
            encrypted protocols, which encrypt &lt;em&gt;every&lt;/em&gt; byte of the payload in
            an attempt to “look like nothing”. In early November 2021, the
            Great Firewall of China (GFW) deployed a new censorship
            technique that passively detects—and subsequently blocks—fully
            encrypted traffic in real time. The GFW’s new censorship
            capability affects a large set of popular censorship circumvention
            protocols, including but not limited to Shadowsocks, VMess, and
            Obfs4. Although China had long &lt;em&gt;actively&lt;/em&gt; probed such protocols,
            this was the first report of &lt;em&gt;purely passive&lt;/em&gt; detection, leading
            the anti-censorship community to ask how detection was
            possible.
        &lt;/p&gt;

        &lt;p class=&#34;indent&#34;&gt;In this paper, we measure and characterize the GFW’s new
            system for censoring fully encrypted traffic. We find that, instead
            of directly defining what fully encrypted traffic is, the censor
            applies &lt;em&gt;crude but efficient heuristics&lt;/em&gt; to exempt traffic that is
            unlikely to be fully encrypted traffic; it then blocks the
            remaining non-exempted traffic. These heuristics are based on
            the fingerprints of common protocols, the fraction of set
            bits, and the number, fraction, and position of printable
            ASCII characters. Our Internet scans reveal what traffic
            and which IP addresses the GFW inspects. We simulate
            the inferred GFW’s detection algorithm on live traffic at a
            university network tap to evaluate its comprehensiveness
            and false positives. We show evidence that the rules we
            inferred have good coverage of what the GFW actually uses.
            We estimate that, if applied broadly, it could potentially
            block about 0.6% of normal Internet traffic as collateral
            damage.
        &lt;/p&gt;

        &lt;!-- l. 29 --&gt;
        &lt;p class=&#34;indent&#34;&gt; Our understanding of the GFW’s new censorship mechanism
            helps us derive several practical circumvention strategies. We
            responsibly disclosed our findings and suggestions to the
            developers of different anti-censorship tools, helping millions of users successfully evade this new
            form of blocking.
        &lt;/p&gt;

        &lt;h2 class=&#34;sectionHead&#34;, id=&#34;1&#34;&gt;&lt;a id=&#34;sec:intro&#34; href=&#34;#sec:intro&#34;&gt;1 Introduction&lt;/a&gt;&lt;/h2&gt;
        &lt;!-- l. 4 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;Fully encrypted circumvention protocols are a cornerstone of
            censorship circumvention solutions. Whereas protocols like TLS
            begin with a handshake that comprises plaintext bytes, fully
            encrypted (randomized) protocols—such as VMess &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xvmess&#34;&gt;23&lt;/a&gt;]&lt;/span&gt;,
            Shadowsocks &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xshadowsocks&#34;&gt;22&lt;/a&gt;]&lt;/span&gt;, and Obfs4 &lt;span class=&#34;cite&#34;&gt;[&lt;a
                    href=&#34;#Xobfs4&#34;&gt;7&lt;/a&gt;]&lt;/span&gt;—are designed such that
            &lt;em&gt;every&lt;/em&gt; byte in the connection is functionally indistinguishable
            from random. The idea behind these “looks like nothing”
            protocols is that they should be difficult for censors to fingerprint
            and therefore costly to block.
        &lt;/p&gt;&lt;!-- l. 16 --&gt;
        &lt;p class=&#34;indent&#34;&gt; On November 6, 2021, Internet users in China reported
            blockings of their Shadowsocks and VMess servers &lt;span class=&#34;cite&#34;&gt;[&lt;a
                    href=&#34;#XAnonymous2021Shadowsocks&#34;&gt;10&lt;/a&gt;]&lt;/span&gt;.
            On November 8, an Outline &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xoutline&#34;&gt;42&lt;/a&gt;]&lt;/span&gt; developer reported a
            sudden drop in use from China &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XXspeed2021&#34;&gt;69&lt;/a&gt;]&lt;/span&gt;. The start of this
            blocking coincided with the sixth plenary session of the
            19th Chinese communist party central committee &lt;span class=&#34;cite&#34;&gt;[&lt;a
                    href=&#34;#XWikipediaSixthPlenary&#34;&gt;4&lt;/a&gt;, &lt;a href=&#34;#XWikipedia19CPC&#34;&gt;1&lt;/a&gt;]&lt;/span&gt;,
            which was held on November 8–11, 2021. Blocking these
            circumvention tools represents a new capability in China’s Great
            Firewall (GFW). To our knowledge, although China has been
            using passive traffic analysis and active probing together
            to identify Shadowsocks servers since May 2019 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;,
            it is the first time the censor has been able to block fully
            encrypted proxies en masse in real time, &lt;span class=&#34;ptmri8t-&#34;&gt;completely based on
            &lt;/span&gt;&lt;em&gt;passive traffic analysis&lt;/em&gt;. The importance of fully encrypted
            protocols to the entire anti-censorship ecosystem and the
            mysterious behaviors of the GFW motivate us to explore and
            understand the underlying mechanisms of detection and
            blocking.
        &lt;/p&gt;&lt;!-- l. 32 --&gt;
        &lt;p class=&#34;indent&#34;&gt; In this work, we measure and characterize the GFW’s
            new system for passively detecting and censoring fully
            encrypted traffic. We find that, instead of directly defining what
            fully encrypted traffic is, the censor applies at least five sets
            of &lt;em&gt;crude but efficient heuristics&lt;/em&gt; to exempt traffic that is
            unlikely to be fully encrypted traffic; it then blocks the


            remaining non-exempted traffic. These exemption rules are
            based on common protocol fingerprints, a crude entropy test
            using the fraction of set bits, and the fraction, position, and
            maximum contiguous count of ASCII characters in the first TCP
            payload.
        &lt;/p&gt;&lt;!-- l. 42 --&gt;
        &lt;p class=&#34;indent&#34;&gt; Due to the black-box nature of the GFW, our inferred rules
            may not be exhaustive; however, we evaluate our inferred rules
            on real-world traffic from a network tap at CU Boulder, and
            provide evidence that our rules have significant overlap with the
            GFW’s. We also find that the inferred detection algorithm would
            block roughly 0.6% of all connections on our network tap.
            Possibly to mitigate over-blocking caused by false positives, our
            Internet scans show that the GFW strategically only monitors
            26% of connections and only to specific IP ranges of popular
            data centers.
        &lt;/p&gt;&lt;!-- l. 60 --&gt;
        &lt;p class=&#34;indent&#34;&gt; We also analyze the relationship between this new form of
            passive censorship and the GFW’s well-known active probing
            system &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;, which operate in parallel. We find that
            the active
            probing system also relies on this traffic analysis algorithm but
            has additional packet length-based rules applied. Consequently,
            the circumvention strategies that can evade this new blocking
            will also prevent the GFW from identifying and subsequently
            active-probing the proxy servers.
        &lt;/p&gt;&lt;!-- l. 72 --&gt;
        &lt;p class=&#34;indent&#34;&gt; We derive various circumvention strategies from our
            understanding of this new censorship system. We responsibly and
            promptly shared our findings and circumvention suggestions with
            the developers of various popular anti-censorship tools,
            including Shadowsocks &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xshadowsocks&#34;&gt;22&lt;/a&gt;]&lt;/span&gt;, V2Ray &lt;span
                class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xv2ray&#34;&gt;59&lt;/a&gt;]&lt;/span&gt;, Outline &lt;span class=&#34;cite&#34;&gt;[&lt;a
                    href=&#34;#Xoutline&#34;&gt;42&lt;/a&gt;]&lt;/span&gt;,
            Lantern &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xlantern&#34;&gt;20&lt;/a&gt;]&lt;/span&gt;, Psiphon &lt;span class=&#34;cite&#34;&gt;[&lt;a
                    href=&#34;#Xpsiphon3&#34;&gt;21&lt;/a&gt;]&lt;/span&gt;, and Conjure &lt;span class=&#34;cite&#34;&gt;[&lt;a
                    href=&#34;#Xconjure&#34;&gt;33&lt;/a&gt;]&lt;/span&gt;. These
            circumvention strategies have been widely adopted and deployed
            since January 2022, helping &lt;em&gt;millions of users&lt;/em&gt; bypass this
            new censorship. As of February 2023, all circumvention
            strategies these tools adopted are reportedly &lt;em&gt;still effective&lt;/em&gt; in
            China.
        &lt;/p&gt;
        &lt;h2 class=&#34;sectionHead&#34;, id=&#34;2&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:background&#34; href=&#34;#sec:background&#34;&gt;2
                Background&lt;/a&gt;&lt;/h2&gt;
        &lt;!-- l. 4 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;2.1&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:background-circumvention-protocols&#34;
                href=&#34;#sec:background-circumvention-protocols&#34;&gt;2.1 Traffic Obfuscation Strategies&lt;/a&gt;&lt;/h3&gt;
        &lt;!-- l. 7 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;Tschantz et al. divide approaches to obfuscating censorship
            circumvention traffic into two types: &lt;em&gt;steganograpic&lt;/em&gt; and
            &lt;em&gt;polymorphic&lt;/em&gt;  &lt;span class=&#34;cite&#34;&gt;[&lt;a
                    href=&#34;#XTschantz2016a&#34;&gt;57&lt;/a&gt;, § V]&lt;/span&gt;. The goal of steganographic proxies is
            to make circumvention traffic look like allowed traffic; the goal
            of polymorphism is to make circumvention traffic not look like
            forbidden traffic.
        &lt;/p&gt;&lt;!-- l. 13 --&gt;
        &lt;p class=&#34;indent&#34;&gt; The two most common approaches to achieving steganography
            are &lt;em&gt;mimicking&lt;/em&gt; and &lt;em&gt;tunneling&lt;/em&gt;. Houmansadr et
            al. &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XHoumansadr2013b&#34;&gt;39&lt;/a&gt;]&lt;/span&gt; conclude
            that mimicking a protocol is fundamentally flawed and
            suggest that tunneling through allowed protocols be a more censorship-resistant approach. Frolov and
            Wustrow &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xtlsfingerprint&#34;&gt;35&lt;/a&gt;]&lt;/span&gt;
            demonstrate that even when a tunneling approach is used, it
            still requires effort to perfectly align protocol fingerprints
            with popular implementations, in order to avoid blocking
            by protocol fingerprints. For instance, in 2012, China and
            Ethiopia deployed deep packet inspection to detect Tor traffic
            by its uncommon ciphersuits &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xtor-cipher-list-ticket&#34;&gt;44&lt;/a&gt;, &lt;a
                    href=&#34;#XWinter2012a&#34;&gt;67&lt;/a&gt;, &lt;a href=&#34;#Xtor-block-ethiopia-ciphers&#34;&gt;55&lt;/a&gt;]&lt;/span&gt;. Censorship
            middlebox vendors have previously identified and blocked
            &lt;code&gt;meek&lt;/code&gt; &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XFifield2015a&#34;&gt;29&lt;/a&gt;]&lt;/span&gt; traffic based on
            on its TLS fingerprint and SNI
            value &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xmeek-cyberoam&#34;&gt;28&lt;/a&gt;]&lt;/span&gt;.
        &lt;/p&gt;&lt;!-- l. 26 --&gt;
        &lt;p class=&#34;indent&#34;&gt; To avoid this complexity, many popular proxies opt for
            polymorphic designs. A common way to achieve polymorphism
            is to fully encrypt the traffic payload, starting from the first
            packet in a connection. Without any plaintext or fixed header
            structure to fingerprint, the censor cannot easily identify proxy
            traffic with regular expressions or by looking for specific patterns
            in traffic. This design was first introduced in Obfuscated
            OpenSSH in 2009 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xobfuscated-openssh&#34;&gt;16&lt;/a&gt;]&lt;/span&gt;. Since then, it has been
            employed
            by Obfsproxy &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xobfsproxy&#34;&gt;24&lt;/a&gt;]&lt;/span&gt;, Shadowsocks &lt;span class=&#34;cite&#34;&gt;[&lt;a
                    href=&#34;#Xshadowsocks&#34;&gt;22&lt;/a&gt;]&lt;/span&gt;, Outline &lt;span class=&#34;cite&#34;&gt;[&lt;a
                    href=&#34;#Xoutline&#34;&gt;42&lt;/a&gt;]&lt;/span&gt;,
            VMess &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xvmess&#34;&gt;23&lt;/a&gt;]&lt;/span&gt;, ScrambleSuit &lt;span class=&#34;cite&#34;&gt;[&lt;a
                    href=&#34;#XWinter2013b&#34;&gt;68&lt;/a&gt;]&lt;/span&gt;, Obfs4 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xobfs4&#34;&gt;7&lt;/a&gt;]&lt;/span&gt;, and
            partially
            used in Geph4 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xgeph4-sosistab&#34;&gt;58&lt;/a&gt;]&lt;/span&gt;, Lantern &lt;span
                class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xlantern&#34;&gt;20&lt;/a&gt;]&lt;/span&gt;, Psiphon3 &lt;span class=&#34;cite&#34;&gt;[&lt;a
                    href=&#34;#Xpsiphon3&#34;&gt;21&lt;/a&gt;]&lt;/span&gt;, and
            Conjure &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xconjure&#34;&gt;33&lt;/a&gt;]&lt;/span&gt;.
        &lt;/p&gt;&lt;!-- l. 36 --&gt;
        &lt;p class=&#34;indent&#34;&gt; Fully encrypted traffic is often referred to as “looks like nothing”
            traffic, or misunderstood as “having no characteristics”; however,
            a more accurate description would be “looks like random”. In
            fact, such traffic does have an important characteristic that
            sets it apart from other traffic: Fully encrypted traffic is
            &lt;em&gt;indistinguishable from random&lt;/em&gt;. Since there are no identifiable
            headers, traffic will have high entropy homogeneously
            throughout the entire connection, even in the first data packet. By
            contrast, even encrypted protocols like TLS have relatively
            low-entropy handshake headers that convey supported versions
            and extensions.
        &lt;/p&gt;&lt;!-- l. 48 --&gt;
        &lt;p class=&#34;indent&#34;&gt; In 2015, Wang et al. &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XWang2015a&#34;&gt;61&lt;/a&gt;, §5.1]&lt;/span&gt; used the
            length and high
            Shannon entropy of the first packet payload in a connection to
            identify randomized traffic, like Obfs4. Similarly, in 2017, Zhixin
            Wang released a proof-of-concept tool that used the high Shannon
            entropy of the first three packets’ payloads in a connection to
            identify Shadowsocks traffic &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xsssniff-isofew&#34;&gt;40&lt;/a&gt;]&lt;/span&gt;. Madeye extended
            the tool to
            additionally use the payload length distribution to detect
            ShadowsocksR traffic &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xsssniff-madeye&#34;&gt;47&lt;/a&gt;]&lt;/span&gt;. He et al. &lt;span
                class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XHe2019a&#34;&gt;70&lt;/a&gt;, §IV.A]&lt;/span&gt; and Liang
            et al. &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XLiang2020a&#34;&gt;46&lt;/a&gt;, §II.A]&lt;/span&gt; used a single-bit frequency
            detection
            algorithm, rather than the Shannon entropy, to measure the
            randomness of Obfs4 traffic. In 2019, Alice et al. found
            that the GFW was using the length and entropy of the first
            data packet in each connection to suspect Shadowsocks
            traffic &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;.
        &lt;/p&gt;&lt;!-- l. 63 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;2.2&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:background-active-probing&#34;
                href=&#34;#sec:background-active-probing&#34;&gt;2.2 Active Probing Attacks and Defenses&lt;/a&gt;&lt;/h3&gt;
        &lt;!-- l. 89 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;In &lt;em&gt;active probing&lt;/em&gt; attacks, the censor sends well-crafted
            payloads
            to a suspected server and measures how it responds. If the


            server responds to these probes in an identifiable way (e.g.
            lets the censor use it as a proxy), the censor can block it.
            As early as August 2011, the GFW was observed to send
            seemingly random payloads to foreign SSH servers that
            accepted SSH logins from China &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xactive-probing-ssh&#34;&gt;49&lt;/a&gt;]&lt;/span&gt;. In 2012,
            the GFW
            first looked for a unique TLS ciphersuit to identify Tor
            traffic; it then sent active probes to the suspected servers to
            confirm its guess &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XWinter2012a&#34;&gt;67&lt;/a&gt;, &lt;a
                    href=&#34;#XWinter-obfs2-probe&#34;&gt;66&lt;/a&gt;, &lt;a href=&#34;#Xknock-knock-tor&#34;&gt;64&lt;/a&gt;]&lt;/span&gt;. In 2015, Ensafi et
            al.
            conducted a detailed analysis of the GFW’s active probing
            attacks against various protocols &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XEnsafi2015b&#34;&gt;27&lt;/a&gt;]&lt;/span&gt;. Since
            May 2019,
            China has deployed a censorship system to detect and block
            Shadowsocks servers in two steps: It first uses the length and
            entropy of the first packet payload in each connection to
            passively identify possible Shadowsocks traffic, and then
            sends various probes, in different stages, to the suspected
            servers to confirm its guess &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;. In response,
            researchers
            proposed various defenses against active probing attacks,
            including consistent server reactions &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XFrolov2020a&#34;&gt;34&lt;/a&gt;, &lt;a
                    href=&#34;#XAnonymous2021ShadowsocksAdvise&#34;&gt;9&lt;/a&gt;]&lt;/span&gt;
                    and &lt;em&gt;application fronting&lt;/em&gt;
                     &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xnaiveproxy&#34;&gt;45&lt;/a&gt;, &lt;a
                    href=&#34;#XFrolov2020b&#34;&gt;36&lt;/a&gt;]&lt;/span&gt;.
                    Shadowsocks, Outline, and V2Ray have
                    incorporated &lt;em&gt;probe-resistant&lt;/em&gt; designs &lt;span class=&#34;cite&#34;&gt;[&lt;a
                    href=&#34;#XFrolov2020a&#34;&gt;34&lt;/a&gt;, &lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;, &lt;a
                    href=&#34;#XShadowsocks2022-spec&#34;&gt;19&lt;/a&gt;, &lt;a href=&#34;#Xoutline-v1.1.0&#34;&gt;43&lt;/a&gt;, &lt;a
                    href=&#34;#Xoutline-changes&#34;&gt;32&lt;/a&gt;, &lt;a href=&#34;#Xshadowsocks-rust-v1.8.5&#34;&gt;71&lt;/a&gt;]&lt;/span&gt;,
                    making them unblocked in China since September 2020 &lt;span class=&#34;cite&#34;&gt;[&lt;a
                    href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;,
                    until the recent blocking in November 2021 &lt;span class=&#34;cite&#34;&gt;[&lt;a
                    href=&#34;#XAnonymous2021Shadowsocks&#34;&gt;10&lt;/a&gt;]&lt;/span&gt;.

          &lt;h2 class=&#34;sectionHead&#34;, id=&#34;3&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt;
	    &lt;a id=&#34;sec:methodology&#34; href=&#34;#sec:methodology&#34;&gt;3 Methodology&lt;/a&gt;
	  &lt;/h2&gt;

        &lt;!-- l. 15 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;We crafted and sent various test probes between hosts inside and
            outside of China, letting them be observed the GFW. We
            observed the GFW’s reactions by capturing and comparing traffic
            on both endpoints. This logging allows us to identify any
            dropped or manipulated packets, as well as active probes.


        &lt;/p&gt;&lt;!-- l. 1 --&gt;
        &lt;p class=&#34;indent&#34;&gt; &lt;/p&gt;
        &lt;figure class=&#34;table&#34; id=&#34;table:exp-summary&#34;&gt;
            &lt;div class=&#34;tabular&#34;&gt;
                &lt;table class=&#34;tabular&#34; id=&#34;TBL-2&#34;&gt;
                    &lt;colgroup id=&#34;TBL-2-1g&#34;&gt;
                        &lt;col id=&#34;TBL-2-1&#34; /&gt;
                    &lt;/colgroup&gt;
                    &lt;colgroup id=&#34;TBL-2-2g&#34;&gt;
                        &lt;col id=&#34;TBL-2-2&#34; /&gt;
                    &lt;/colgroup&gt;
                    &lt;colgroup id=&#34;TBL-2-3g&#34;&gt;
                        &lt;col id=&#34;TBL-2-3&#34; /&gt;
                    &lt;/colgroup&gt;
                    &lt;colgroup id=&#34;TBL-2-4g&#34;&gt;
                        &lt;col id=&#34;TBL-2-4&#34; /&gt;
                    &lt;/colgroup&gt;
                    &lt;colgroup id=&#34;TBL-2-5g&#34;&gt;
                        &lt;col id=&#34;TBL-2-5&#34; /&gt;
                    &lt;/colgroup&gt;
                    &lt;tr id=&#34;TBL-2-1-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-1-1&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
                            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;Experiments&lt;/span&gt;&lt;/div&gt;
                        &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-1-2&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
                            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;Time Span&lt;/span&gt;&lt;/div&gt;
                        &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-1-3&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
                            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;China Vantage Points&lt;/span&gt;&lt;/div&gt;
                        &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-1-4&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
                            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;US Vantage Points&lt;/span&gt;&lt;/div&gt;
                        &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-1-5&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
                            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;Sections&lt;/span&gt;&lt;/div&gt;
                        &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr class=&#34;hline&#34;&gt;
                        &lt;td&gt;
                            &lt;hr /&gt;
                        &lt;/td&gt;
                        &lt;td&gt;
                            &lt;hr /&gt;
                        &lt;/td&gt;
                        &lt;td&gt;
                            &lt;hr /&gt;
                        &lt;/td&gt;
                        &lt;td&gt;
                            &lt;hr /&gt;
                        &lt;/td&gt;
                        &lt;td&gt;
                            &lt;hr /&gt;
                        &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-2-2-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-2-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;Characterization &lt;/span&gt;&lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-2-2&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;Nov. 6, 2021 – May 18, 2022 (6 months) &lt;/span&gt;&lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-2-3&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;3 (TC, BJ),1 (Ali, BJ) &lt;/span&gt;&lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-2-4&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;3 (DO, SFO) &lt;/span&gt;&lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-2-5&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;§&lt;/span&gt;&lt;a href=&#34;#sec:reverse-engineering&#34;&gt;&lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;4&lt;/span&gt;&lt;!-- tex4ht:ref: sec:reverse-engineering  --&gt;&lt;/a&gt;
                        &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-2-3-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-3-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;Re-running &lt;/span&gt;&lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-3-2&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;Feb. 16, 2023 (1 day) &lt;/span&gt;&lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-3-3&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;1 (TC, BJ) &lt;/span&gt;&lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-3-4&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;1 (DO, SFO) &lt;/span&gt;&lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-3-5&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;§&lt;/span&gt;&lt;a href=&#34;#sec:bit-counting&#34;&gt;&lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;4.1&lt;/span&gt;&lt;!-- tex4ht:ref: sec:bit-counting  --&gt;&lt;/a&gt;&lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;,§&lt;/span&gt;&lt;a href=&#34;#sec:ascii-exemption&#34;&gt;&lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;4.2&lt;/span&gt;&lt;!-- tex4ht:ref: sec:ascii-exemption  --&gt;&lt;/a&gt;&lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;,§&lt;/span&gt;&lt;a href=&#34;#sec:allowed-protocols&#34;&gt;&lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;4.3&lt;/span&gt;&lt;!-- tex4ht:ref: sec:allowed-protocols  --&gt;&lt;/a&gt;
                        &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-2-4-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-4-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;Active Probing &lt;/span&gt;&lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-4-2&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;May 19 – Jun. 8, 2022 (3 weeks) &lt;/span&gt;&lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-4-3&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;1 (TC, BJ) &lt;/span&gt;&lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-4-4&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;2 (DO, SFO) &lt;/span&gt;&lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-4-5&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;§&lt;/span&gt;&lt;a href=&#34;#sec:active-probing&#34;&gt;&lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;5&lt;/span&gt;&lt;!-- tex4ht:ref: sec:active-probing  --&gt;&lt;/a&gt; &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-2-5-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-5-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;Internet Scan &lt;/span&gt;&lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-5-2&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;May 12–13, 2022 (2 days) &lt;/span&gt;&lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-5-3&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;9 (TC, BJ) &lt;/span&gt;&lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-5-4&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;1 (Scan, Univ) &lt;/span&gt;&lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-5-5&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;§&lt;/span&gt;&lt;a href=&#34;#sec:widespread&#34;&gt;&lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;6&lt;/span&gt;&lt;!-- tex4ht:ref: sec:widespread  --&gt;&lt;/a&gt; &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-2-6-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-6-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;Live Traffic &lt;/span&gt;&lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-6-2&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;Jul. – Sept., 2022 (3 months) &lt;/span&gt;&lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-6-3&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;1 (TC, BJ) &lt;/span&gt;&lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-6-4&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;1 (DO, SFO), 1 (Tap, Univ) &lt;/span&gt;&lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-2-6-5&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;§&lt;/span&gt;&lt;a href=&#34;#sec:evaluation&#34;&gt;&lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;7&lt;/span&gt;&lt;!-- tex4ht:ref: sec:evaluation  --&gt;&lt;/a&gt; &lt;/td&gt;
                    &lt;/tr&gt;
                &lt;/table&gt;
            &lt;/div&gt;

            &lt;figcaption class=&#34;caption&#34;&gt;&lt;span class=&#34;id&#34;&gt;&lt;a id=&#34;x1-4002&#34; href=&#34;#table:exp-summary&#34;&gt;Table 1: &lt;/span&gt;&lt;span
                    class=&#34;content&#34;&gt;&lt;b&gt;Experiment timeline and vantage points &lt;/b&gt;&lt;/a&gt;— In total,
                    we used one VPS in AlibabaCloud (Ali) Beijing (AS37963),
                    ten VPSes in TencentCloud (TC) Beijing (AS45090), four VPSes in DigitalOcean (DO) San Francisco
                    (AS14061), and two
                    machines at the University of Colorado Boulder (Univ) (AS104).
                &lt;/span&gt;&lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-4001r2  --&gt;
        &lt;/figure&gt;

        &lt;/p&gt;&lt;!-- l. 77 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;Experiment timeline and Vantage points. &lt;/b&gt;We summarized the
            timeline and vantage point usage of all major experiments in
            &lt;a href=&#34;#table:exp-summary&#34;&gt;Table 1&lt;/a&gt;. In total, we used ten VPSes in TencentCloud Beijing
            (AS45090) and one VPS in AlibabaCloud Beijing (AS37963).
            We did not observe any differences in the censoring behavior
            between our vantage points within China or any affected external
            vantage points. We used four VPSes in DigitalOcean San
            Francisco (AS14061): three of them were affected by the new
            censorship, the other one was not. We turned these four VPSes
            into sink servers; that is, the servers listen on all ports from 1 to
            65535 to accept TCP connections, but do not send any data back
            to the client. We also employed two machines in the CU Boulder
            (AS104) for Internet scanning and live traffic analysis. We
            checked the IP addresses of our VPSes against IP2Location
            database &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xip2location&#34;&gt;3&lt;/a&gt;]&lt;/span&gt;, confirming their geo-locations are as
            reported by
            their providers.
        &lt;/p&gt;&lt;!-- l. 96 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;Triggering censorship. &lt;/b&gt;Because &lt;span class=&#34;ptmri8t-&#34;&gt;fully
                encrypted traffic is
            &lt;/span&gt;&lt;em&gt;indistinguishable from random data&lt;/em&gt; , beyond using actual
            circumvention tools, we developed measurement tools that send
            random data to trigger blocking in our study. The tools initiate a
            TCP handshake, send a random payload of a given length, and
            then close the connection.
        &lt;/p&gt;&lt;!-- l. 107 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;Using residual censorship to confirm blockings. &lt;/b&gt;Similar to
            how the GFW blocks many other protocols &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XBock2021a&#34;&gt;13&lt;/a&gt;, &lt;a
                    href=&#34;#XChai2019a&#34;&gt;17&lt;/a&gt;, &lt;a href=&#34;#XWang2017a&#34;&gt;63&lt;/a&gt;, &lt;a href=&#34;#XBock2020ESNI&#34;&gt;14&lt;/a&gt;]&lt;/span&gt;,
            after a connection triggers the censorship, the GFW blocks all
            subsequent connections having the same 3-tuple (client
            IP, server IP, server port) for 180 seconds. This residual
            censorship allows us to confirm blocking by sending follow-up
            connections from the same client to the same port of the
            server. We make five TCP connections one by one with a
            one-second interval in between. If all five connections failed,
            we conclude that the 3-tuple is blocked. Once a 3-tuple is
            blocked, we do not use it for further tests in the next 180
            seconds.
        &lt;/p&gt;&lt;!-- l. 121 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;Accouting for probabilistic blocking with repeated tests. &lt;/b&gt;We
            often had to make multiple connections with the same payload
            before we observed blocking. In &lt;a href=&#34;#sec:blocking-rate&#34;&gt;Section 6.3&lt;/a&gt;, we explain that
            this is because the GFW employs a &lt;em&gt;probabilistic&lt;/em&gt;  blocking
            strategy, where censorship is only triggered approximately a
            quarter of the time. To account for this probabilistic behavior, we
            send the same payload in up to 25 connections before drawing
            any blocking (or not blocking) conclusion. If we can successfully
            make 25 connections with the same payload in a row, then we conclude that the payload (or server) is not
            affected by this
            censorship. If after sending the payload at least once, a sequence
            of 5 subsequent connection attempts timeout (due to residual
            censorship), we label the payload (and server) as affected by
            censorship. We use this method of repeated connections to
            measure blocked payloads in all the tests throughout our
            study.
        &lt;/p&gt;&lt;!-- l. 1 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h2 class=&#34;sectionHead&#34;, id=&#34;4&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:reverse-engineering&#34;
                href=&#34;#sec:reverse-engineering&#34;&gt;4 Characterizing the New Censorship System&lt;/a&gt;&lt;/h2&gt;
        &lt;!-- l. 4 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;We conduct experiments to understand how the GFW detects and
            blocks fully encrypted connections. Detailed in &lt;a href=&#34;#table:exp-summary&#34;&gt;Table 1&lt;/a&gt;,
            between Nov 6, 2021 and May 18, 2022, we used three VPSes
            in China and three sink servers in the US to conduct our
            experiments. During the same period, we also used one VPS in
            AlibabaCloud Beijing (AS37963) to repeat all our experiments.
            We did not observe any differences in the censoring behavior
            among our vantage points within China or any affected external
            vantage point. On February 16, 2023, we reran our experiments
            and confirmed &lt;em&gt;all detection rules still held.&lt;/em&gt; This time, we
            used one VPS in TencentCloud BJ and one sink server in
            DigitalOcean SFO.
        &lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt; &lt;a href=&#34;#alg:blocking&#34;&gt;Algorithm 1&lt;/a&gt; presents a high-level overview of the GFW’s
            detection rules we inferred, and &lt;a href=&#34;#fig:example-blocking&#34;&gt;Figure 1&lt;/a&gt; illustrates examples
            of these inferred rules in action. While we cannot infer
            the order in which these rules get applied or if they are
            exhaustive, our experiments confirm specific components of
            the GFW’s censorship strategy. We find that, instead of
            directly defining what fully encrypted traffic is, the censor
            applies at least five sets &lt;em&gt;crude but efficient&lt;/em&gt; heuristic rules to
            exempt traffic that is unlikely to be fully encrypted traffic;
            it then blocks the remaining non-exempted traffic. These
            exemption rules are based on common protocol fingerprints, a
            crude entropy test using the fraction of bits set, and the
            fraction, position, and maximum contiguous count of ASCII
            characters.
        &lt;/p&gt;
        &lt;div class=&#34;algorithm&#34;&gt;
            &lt;!-- l. 66 --&gt;
            &lt;p class=&#34;indent&#34;&gt; &lt;/p&gt;
            &lt;figure class=&#34;float&#34; style=&#34;width:75%&#34;&gt;
                &lt;figcaption class=&#34;caption&#34;&gt;&lt;span class=&#34;id&#34;&gt;&lt;a id=&#34;alg:blocking&#34; href=&#34;#alg:blocking&#34;&gt;Algorithm 1: &lt;/a&gt;&lt;/span&gt;&lt;span class=&#34;content&#34;&gt;The GFW uses
                    &lt;em&gt;at least&lt;/em&gt; five heuristic rules to
                    detect and block fully encrypted traffic. The censor applies
                    this algorithm to TCP connections sent from China to certain
                    IP subnets and employs probabilistic blocking (&lt;a href=&#34;#sec:widespread&#34;&gt;Section 6&lt;/a&gt;).
                &lt;/span&gt;
                &lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-6001r4  --&gt;

                &lt;hr&gt;
                &lt;em&gt;Allow&lt;/em&gt; a connection to continue if the first TCP payload (\(\mathtt
                {pkt}\)) sent by
                the client satisfies any of the following exemptions:
                &lt;ul class=&#34;itemize1&#34;&gt;
                    &lt;li class=&#34;itemize&#34;&gt;&lt;span class=&#34;cmtt-9&#34;&gt;Ex1: &lt;/span&gt;\(\frac {\mathit {popcount}(\mathtt {pkt})}{\mathit {len}(\mathtt {pkt})} \le
                        3.4\) or \(\frac {\mathit {popcount}(\mathtt {pkt})}{\mathit {len}(\mathtt {pkt})} \ge 4.6\).
                    &lt;/li&gt;
                    &lt;li class=&#34;itemize&#34;&gt;&lt;span class=&#34;cmtt-9&#34;&gt;Ex2: &lt;/span&gt;The first six (or more) bytes of \(\mathtt {pkt}\) are \([\mathtt {0x20},\mathtt
                        {0x7e}]\).
                    &lt;/li&gt;
                    &lt;li class=&#34;itemize&#34;&gt;&lt;span class=&#34;cmtt-9&#34;&gt;Ex3: &lt;/span&gt;More than 50% of \(\mathtt {pkt}\)’s bytes are \([\mathtt {0x20},\mathtt
                        {0x7e}]\).
                    &lt;/li&gt;
                    &lt;li class=&#34;itemize&#34;&gt;&lt;span class=&#34;cmtt-9&#34;&gt;Ex4: &lt;/span&gt;More than 20 contiguous bytes of \(\mathtt {pkt}\) are \([\mathtt {0x20},\mathtt
                        {0x7e}]\).
                    &lt;/li&gt;
                    &lt;li class=&#34;itemize&#34;&gt;&lt;span class=&#34;cmtt-9&#34;&gt;Ex5: &lt;/span&gt;It matches the protocol fingerprint for TLS or HTTP.&lt;/li&gt;
                &lt;/ul&gt;
                &lt;!-- l. 66 --&gt;
                &lt;p class=&#34;noindent&#34;&gt;&lt;em&gt;Block&lt;/em&gt; if none of the above hold.&lt;/p&gt;
            &lt;/figure&gt;
        &lt;/div&gt;
        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;4.1&#34;&gt;&lt;a id=&#34;sec:bit-counting&#34; href=&#34;#sec:bit-counting&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;4.1 &lt;/span&gt; Entropy Exemption
            (&lt;code&gt;Ex1&lt;/code&gt;)&lt;/a&gt;&lt;/h3&gt;
    &lt;!--l. 71--&gt;
    &lt;p class=&#34;noindent&#34;&gt;We observed that the &lt;em&gt;fraction of bits set&lt;/em&gt; influences whether a
        connection is blocked. To determine this, we sent repeated
        connections to our server and observed which were blocked. In
        each connection, we sent one of 256 different byte patterns,
        consisting of 1 byte repeated 100 times (e.g., &lt;code&gt;\x00\x00\x00...&lt;/code&gt;, &lt;code&gt;\x01\x01\x01...&lt;/code&gt;, ..., &lt;code&gt;\xff\xff\xff...&lt;/code&gt;).
        We sent each pattern in
        25 connections to our server, and observed if any patterns
        resulted in blocking subsequent connections, indicating
      the payload triggers blocking. We found &lt;em&gt;40 byte patterns triggered blocking&lt;/em&gt; ,
      while the remaining 216 patterns did not.
        Example patterns that were blocked include
        &lt;code&gt;\x0f\x0f\x0f...&lt;/code&gt;, &lt;code&gt;\x17\x17\x17...&lt;/code&gt;, and &lt;code&gt;\x1b\x1b\x1b...&lt;/code&gt;(and 37 others).
    &lt;/p&gt;&lt;!--l. 89--&gt;
    &lt;p class=&#34;indent&#34;&gt; All of the blocked patterns consist of bytes with exactly 4 (out
        of 8) bits that were \(1\) (for instance,
        &lt;code&gt;\x1b&lt;/code&gt; in binary is &lt;code&gt;00011011&lt;/code&gt;).
        We hypothesized that the number of set bits (\(1\) bits) per byte may
        play a role, as uniformly random data will have close to the
        same number of total \(1\)s and \(0\)s in binary. In effect, this is
        essentially measuring the entropy of the bits within the client’s
        packet.
    &lt;/p&gt;&lt;!--l. 97--&gt;
    &lt;p class=&#34;indent&#34;&gt; We confirmed this by sending combinations of bytes that were
        individually allowed, but together resulted in being blocked. For
        example, both &lt;code&gt;\xfe\xfe\xfe...&lt;/code&gt;
        and &lt;code&gt;\x01\x01\x01...&lt;/code&gt;
        were not blocked individually, but these bytes sent together as
        &lt;code&gt;\xfe\x01\xfe\x01...&lt;/code&gt; resulted in blocking.
        We note &lt;code&gt;\xfe\x01&lt;/code&gt;
        has 8 (out of 16) bits set to \(1\) (an average of 4 bits per byte set),
        while &lt;code&gt;\xfe&lt;/code&gt; has 7 out of
        8, and &lt;code&gt;\x01&lt;/code&gt; has 1 of 8
        set, explaining
        why individually they are allowed, but together they are
        blocked.
    &lt;/p&gt;&lt;!--l. 108--&gt;
    &lt;p class=&#34;indent&#34;&gt; Of course, random or encrypted data will not always have
        exactly half of the bits set to \(1\). We tested how close to half the
        GFW needed in order to block, by sending a sequence of 50
        random bytes (400 bits) with an increasing number of bits set.
        We produced 401 bitstrings with 0–400 bits set to \(1\), and
        shuffled each string, yielding a set of random strings with 0–8
        bits set per byte (in increments of 0.02 bits/byte). For each
        string, we made 25 connections and sent the string to observe
        if it triggered subsequent connections to be blocked. We
        found that all strings with \(\le 3.4\) or \(\ge 4.6\) bits/byte set were not blocked,
        while strings with between 3.4 and 4.6 bits/byte set were
        blocked.
    &lt;/p&gt;&lt;!--l. 122--&gt;
    &lt;p class=&#34;indent&#34;&gt; There was a single exception to this for a string with 4.26
        bits/byte set, which we determined was not blocked due to
        having over 50% of its bytes be printable ASCII characters; we
        show next this is an exemption rule (&lt;code&gt;Ex2&lt;/code&gt;). We repeated our
        experiment and confirmed that other strings with the same
        number of bits set with less printable ASCII are indeed
        blocked.
    &lt;/p&gt;&lt;!--l. 154--&gt;
    &lt;p class=&#34;indent&#34;&gt; In summary, we find that the GFW exempts a connection
        if the fraction of bits set in the client’s first data packet deviates from half. This corresponds to a crude
        measure of
        entropy: random (encrypted) data will have close to half of the
        bits set to \(1\), while other protocols usually have fewer \(1\) bits
        per byte due to plaintext or zero-padded protocol headers.
        For instance, Google Chrome version 105 sends a TLS
        client hello with an average of only 1.56 bits set per byte,
        falling outside the censorship range, owing to padding with
        zeros.
    &lt;/p&gt;


        &lt;/p&gt;&lt;!-- l. 179 --&gt;
        &lt;p class=&#34;indent&#34; id=&#34;fig:example-blocking&#34;&gt; &lt;/p&gt;
        &lt;figure class=&#34;float&#34;&gt;
          &lt;figcaption class=&#34;caption&#34;&gt;
	    &lt;span class=&#34;id&#34;&gt;
	      &lt;a href=&#34;#fig:example-blocking&#34;&gt;Figure 1: &lt;/span&gt;&lt;span class=&#34;content&#34;&gt;&lt;span
                        class=&#34;ptmb8t-&#34;&gt;Examples of GFW’s traffic exemption rules &lt;/span&gt;&lt;/a&gt;— The GFW exempts a TCP
                    connection if the payload of its first data
                    packet matches any of the rules above. Traffic not exempted by any of the rules will be blocked.
                    Printable characters refer to
                    any character in range \([\mathtt {0x20},\mathtt {0x7e}]\). Figures &lt;a
                        href=&#34;#fig:first-six-exempt&#34;&gt;1(a) &lt;!-- tex4ht:ref: fig:first-six-exempt  --&gt;&lt;/a&gt;, &lt;a
                        href=&#34;#fig:halfprintable-exempt&#34;&gt;1(b) &lt;!-- tex4ht:ref: fig:halfprintable-exempt  --&gt;&lt;/a&gt;, and &lt;a
                        href=&#34;#fig:contiguous-run-exempt&#34;&gt;1(c) &lt;!-- tex4ht:ref: fig:contiguous-run-exempt  --&gt;&lt;/a&gt; are
                    introduced in  &lt;a
                        href=&#34;#sec:ascii-exemption&#34;&gt;Section 4.2&lt;!-- tex4ht:ref: fig:contiguous-run-exempt  --&gt;&lt;/a&gt;.
                    Figure &lt;a href=&#34;#fig:protocol-match-exempt&#34;&gt;1(e) &lt;!-- tex4ht:ref: fig:protocol-match-exempt  --&gt;&lt;/a&gt;
                    is introduced in &lt;a
                        href=&#34;#sec:allowed-protocols&#34;&gt;Section 4.3&lt;!-- tex4ht:ref: fig:protocol-match-exempt  --&gt;&lt;/a&gt;.
                    Figure &lt;a href=&#34;#fig:popcount-exempt&#34;&gt;1(d) &lt;!-- tex4ht:ref: fig:popcount-exempt  --&gt;&lt;/a&gt; is
                    introduced in &lt;a href=&#34;#sec:bit-counting&#34;&gt;Section 4.1&lt;!-- tex4ht:ref: fig:popcount-exempt  --&gt;&lt;/a&gt;.
              &lt;/span&gt;
	    &lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-7006r4  --&gt;

          &lt;!-- l. 179 --&gt;
          &lt;p class=&#34;noindent&#34;&gt;
	    &lt;img alt=&#34;&#34; id=&#34;fig:first-six-exempt&#34; src=&#34;figures/first-six-.png&#34; /&gt;
            &lt;figcaption&gt;
	      &lt;a href=&#34;#fig:first-six-exempt&#34;&gt;(a) First six printable exemption (&lt;code&gt;Ex2&lt;/code&gt;):&lt;/a&gt;
	      the GFW exempts a connection if the first six bytes (or more) are all printable.
	    &lt;/figcaption&gt;

	    &lt;img alt=&#34;&#34; id=&#34;fig:halfprintable-exempt&#34; src=&#34;figures/halfprintable-.png&#34; /&gt;
            &lt;figcaption&gt;
	      &lt;a href=&#34;#fig:halfprintable-exempt&#34;&gt;(b) Half printable exemption (&lt;code&gt;Ex3&lt;/code&gt;):&lt;/a&gt;
	      the GFW exempts a connection if its first payload has more than 50% printable ASCII.
	    &lt;/figcaption&gt;

	    &lt;img alt=&#34;&#34; id=&#34;fig:contiguous-run-exempt&#34; src=&#34;figures/consecutive-bytes-.png&#34; /&gt;
            &lt;figcaption&gt;
	      &lt;a href=&#34;#fig:contiguous-run-exempt&#34;&gt;(c) Contiguous printable exemption (&lt;code&gt;Ex4&lt;/code&gt;):&lt;/a&gt;
	      the GFW counts the max number of contiguous printable bytes, and exempts a connection if the value is more than 20 bytes.
	    &lt;/figcaption&gt;

        &lt;img alt=&#34;&#34; id=&#34;fig:popcount-exempt&#34; src=&#34;figures/popcount-.png&#34; /&gt;
        &lt;figcaption&gt;
            &lt;a href=&#34;#fig:popcount-exempt&#34;&gt;(d) Popcount exemption (&lt;code&gt;Ex1&lt;/code&gt;:&lt;/a&gt;
            the GFW calculates the average number of bits set (popcount) per byte as a crude measure of entropy, and exempts a connection if the value is less than 3.4 or greater than 4.6.
        &lt;/figcaption&gt;

        &lt;img alt=&#34;&#34; id=&#34;fig:protocol-match-exempt&#34; src=&#34;figures/protocol-.png&#34; /&gt;
        &lt;figcaption&gt;
	      &lt;a href=&#34;#fig:protocol-match-exempt&#34;&gt;(e) Protocol exemption (&lt;code&gt;Ex5&lt;/code&gt;):&lt;/a&gt;
	      the GFW exempts a connection if its first few bytes match HTTP or TLS protocol.
	    &lt;/figcaption&gt;
        &lt;/figure&gt;

        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;4.2&#34;&gt;&lt;a id=&#34;sec:ascii-exemption&#34; href=&#34;#sec:ascii-exemption&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;4.2 &lt;/span&gt; ASCII Characters
            Exemption (&lt;code&gt;Ex2-4&lt;/code&gt;)&lt;/a&gt;&lt;/h3&gt;
    &lt;!--l. 192--&gt;
    &lt;p class=&#34;noindent&#34;&gt;We observed several exceptions to the bit counting rule
        we discovered in &lt;a href=&#34;#sec:bit-counting&#34;&gt;Section 4.1&lt;/a&gt;. For instance, the pattern
        &lt;code&gt;\x4b\x4b\x4b...&lt;/code&gt; was not blocked, despite having exactly 4 bits
        set per byte. Indeed, there are actually 70 characters (8 choose 4)
        that have exactly 4 bits set, but our analysis found that
        only 40 of those triggered censorship. What about the other
        30?
    &lt;/p&gt;&lt;!--l. 205--&gt;
    &lt;p class=&#34;indent&#34;&gt; These other 30 byte values all fall within the byte range that
        comprises the &lt;em&gt;printable ASCII characters&lt;/em&gt; ,
            &lt;code&gt;0x20–0x7e&lt;/code&gt;.
            We conjecture that the GFW exempts characters presumably to allow
        “plaintext” (human-readable) protocols.
    &lt;/p&gt;&lt;!--l. 210--&gt;

    &lt;p class=&#34;indent&#34;&gt; We found &lt;em&gt;three ways&lt;/em&gt; in which the GFW exempts connections
        based on printable ASCII characters in the first packet payload
        from the client: if the first six bytes are printable (&lt;code&gt;Ex2&lt;/code&gt;); if more
        than half of the bytes are printable (&lt;code&gt;Ex3&lt;/code&gt;); or if it contains more
        than 20 contiguous printable bytes (&lt;code&gt;Ex4&lt;/code&gt;).
    &lt;/p&gt;&lt;!--l. 221--&gt;
    &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;First six bytes are printable (&lt;/b&gt;&lt;span
            class=&#34;cmtt-10&#34;&gt;Ex2&lt;/span&gt;&lt;b&gt;). &lt;/b&gt;We observe that the GFW
        exempts blocking if the first 6 bytes of a connection fall within
        the printable byte range &lt;code&gt;0x20–0x7e&lt;/code&gt;. If there are
        characters
        outside this range in the first 6 bytes, then a connection may be
        blocked, assuming it does not have other exempting properties
        (for example, fewer than 3.4 bits per byte set). We tested this by
        generating messages where the first \(n\) bytes were sourced from
        different character sets (such as ASCII printable characters) and
        the rest of the message would be random unprintable characters.
        We find that for \(n &amp;lt; 6\), we observe censorship, but for \(n \ge 6\) where the
        first \(n\) bytes are ASCII printable characters, no blocking
        occurs.
    &lt;/p&gt;&lt;!--l. 240--&gt;
    &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;Half of the first packet are printable (&lt;/b&gt;&lt;span
            class=&#34;cmtt-10&#34;&gt;Ex3&lt;/span&gt;&lt;b&gt;). &lt;/b&gt;If more than half
        of all bytes in the first packet fall into the printable ASCII range
        &lt;code&gt;0x20–0x7e&lt;/code&gt;, the GFW exempts the connection. We tested
        this by
        sending packets consisting of 10 bytes of characters outside this
        range (e.g. &lt;code&gt;0xe8&lt;/code&gt;), followed by a repeating sequence of 6 bytes: 5
        within the range (e.g., &lt;code&gt;0x4b&lt;/code&gt;), and one outside. We repeat
        this 6 byte sequence 5 times, and then pad the end of the
        string with \(n\) bytes outside the range (in Python notation:
        &lt;code&gt;&#34;\xe8&#34;*10 + (&#34;\x4b&#34;*5 + &#34;\xe8&#34;)*5 + &#34;\xe8&#34;*n&lt;/code&gt;).
        This experiment gives us a variable-length pattern that decreases the
        fraction of bytes in the printable ASCII range as we increase \(n\). We
        find that for \(n &amp;lt; 10\), connections are not blocked, while for \(n \ge 10\) they are.
        This corresponds to blocking when the fraction of printable
        characters is less than or equal to half, and not blocking when
        greater than half.
    &lt;/p&gt;&lt;!--l. 256--&gt;
    &lt;p class=&#34;indent&#34;&gt; We design our probes to avoid triggering other GFW
        exemptions, such as bit counts (&lt;code&gt;Ex1&lt;/code&gt;), printable prefixes
        (&lt;code&gt;Ex2&lt;/code&gt;), or
        runs of printable characters (&lt;code&gt;Ex4&lt;/code&gt;). For example, we use &lt;span
            class=&#34;cmtt-10&#34;&gt;0x4b&lt;/span&gt;
        and &lt;code&gt;0xe8 &lt;/code&gt;as our printable and non-printable characters
        respectively, since they both have exactly 4 bits set. This prevents
        the GFW from exempting our connection from blocking due to the bit count rule (&lt;code&gt;Ex1&lt;/code&gt;)
        discussed previously. In
        addition, we avoid having contiguous runs of printable &lt;code&gt;0x4b&lt;/code&gt;
        characters, as we observed that such runs can also exempt a
        connection from blocking, which we discuss next. We repeated
        our experiments with other patterns that also met these
        constraints (e.g. &lt;code&gt;0x8d&lt;/code&gt; and &lt;code&gt;0x2e&lt;/code&gt;), and observed the
        same
        results.
    &lt;/p&gt;&lt;!--l. 275--&gt;
    &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;More than 20 contiguous bytes are printable (&lt;/b&gt;&lt;span
            class=&#34;cmtt-10&#34;&gt;Ex4&lt;/span&gt;&lt;b&gt;). &lt;/b&gt;A
        contiguous run of printable characters can also exempt blocking,
        even if the total fraction of printable characters is less than half.
        To test this, we sent a pattern of 100 bytes of a character outside
        the printable range (&lt;code&gt;0xe8&lt;/code&gt;) with a varying number of contiguous
        bytes from the printable range (we used &lt;code&gt;0x4b&lt;/code&gt;). Our payload
        started with 10 bytes of &lt;code&gt;0xe8&lt;/code&gt;, followed by \(n\) bytes of
        &lt;code&gt;0x4b&lt;/code&gt;,
        and then \(90-n\) bytes of &lt;code&gt;0xe8&lt;/code&gt;, for a total length of 100 bytes.
        We varied \(n\) from 0–90, and sent each of the 91 payloads
        in 25 connections to our server. We found that with \(n \le 20\), the
        connection was blocked. For \(n &amp;gt; 20\), the connection was not blocked,
        indicating the presence of a run of printable characters exempts
        blocking. Of course, past \(n &amp;gt; 50\), the connection will also be exempt,
        because of Ex3.
    &lt;/p&gt;&lt;!--l. 292--&gt;
    &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;Other encodings. &lt;/b&gt;We tested whether Chinese characters in the
        first packet were exempted from blocking in the same way as
        printable ASCII characters did. We used strings of 6–36 Chinese
        characters encoded in UTF-8, as well as GBK (identical to
        GB2312 for the character we used). All of these tests were
        blocked, suggesting that &lt;em&gt;there is no exemption for Chinese&lt;/em&gt;
        &lt;em&gt;characters&lt;/em&gt;. It is possible that the presence of Chinese characters
        in these encodings is rare, or that parsing these encodings adds
        unjustified complexity since it is hard to know where an encoded
        string starts or ends.
    &lt;/p&gt;&lt;!--l. 301--&gt;
    &lt;p class=&#34;noindent&#34;&gt;
    &lt;/p&gt;

        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;4.3&#34;&gt;&lt;a id=&#34;sec:allowed-protocols&#34; href=&#34;#sec:allowed-protocols&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;4.3 &lt;/span&gt; Common Protocols Exemption (&lt;code&gt;Ex5&lt;/code&gt;)&lt;/a&gt;&lt;/h3&gt;
        &lt;!-- l. 304 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;To avoid blocking popular protocols by mistake, we observe that
            the GFW explicitly exempts two popular protocols. The
            GFW appears to infer protocols from the &lt;span class=&#34;ptmri8t-&#34;&gt;first 3–6 bytes
            &lt;/span&gt;&lt;em&gt;of the client’s packet&lt;/em&gt; : If they match the bytes of a known
            protocol, the connection is exempted from blocking, even if
            the rest of the packets do not conform to the protocol. We
            tested six common protocols and found that the TLS and
            HTTP protocols are explicitly exempted. This list may not be
            exhaustive, as there may be other exempted protocols we did not
            test.
        &lt;/p&gt;&lt;!-- l. 319 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;TLS. &lt;/b&gt;TLS connections start with a TLS Client Hello message,
            and the first three bytes of this message cause the GFW to
            exempt the connection from blocking. We observe that the GFW
            exempts any connection whose first three bytes match the
            following regular expression:
        &lt;/p&gt;&lt;!-- l. 325 --&gt;
        &lt;p class=&#34;indent&#34;&gt;
        &lt;/p&gt;
        &lt;blockquote class=&#34;quote&#34;&gt;
            &lt;!-- l. 326 --&gt;
            &lt;code&gt;[\x16-\x17]\x03[\x00-\x09]&lt;/code&gt;
        &lt;/blockquote&gt;
        &lt;!-- l. 329 --&gt;
        &lt;p class=&#34;indent&#34;&gt; This corresponds to the one-byte record type, followed
            by a two-byte version. We enumerated all 256 patterns of
            &lt;code&gt;XX\x03\x03&lt;/code&gt; followed by 97 bytes of random data, and found
            all patterns were blocked except those that start with either &lt;code&gt;0x16&lt;/code&gt;
            (corresponding to the Handshake TLS record type, used in the
            Client Hello) or &lt;code&gt;0x17 &lt;/code&gt;(corresponding to the Application Data
            record type). While normal TLS connections do not begin
            with Application Data &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xrfc5246-appendixE&#34;&gt;53&lt;/a&gt;, &lt;a
                    href=&#34;#Xrfc8446-tls13-hello&#34;&gt;52&lt;/a&gt;]&lt;/span&gt;, when TLS is used over
            Multipath-TCP (MPTCP) &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xmptcp&#34;&gt;31&lt;/a&gt;]&lt;/span&gt;, it is common for one of the
            TCP subflows to be used for the Client Hello and for other
            subflows to send Application Data immediately after the TCP
            connection is established &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xbonaventure-mptcp-tls-00&#34;&gt;15&lt;/a&gt;]&lt;/span&gt;. As of today,
            only TLS versions
            &lt;code&gt;0x03[0x00-0x03] &lt;/code&gt;have been defined &lt;span class=&#34;cite&#34;&gt;[&lt;a
                    href=&#34;#Xrfc5246-appendixE&#34;&gt;53&lt;/a&gt;, &lt;a href=&#34;#Xrfc8446-tls13-hello&#34;&gt;52&lt;/a&gt;]&lt;/span&gt;, but the GFW
            allows even later (not yet defined) versions.
        &lt;/p&gt;&lt;!--l. 364--&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;HTTP. &lt;/b&gt;The byte pattern used by the censor to identify HTTP
            traffic is simply the method followed by a space. If a message
            starts with &lt;code&gt;GET␣&lt;/code&gt;, &lt;code&gt;PUT␣&lt;/code&gt;,
            &lt;code&gt;POST␣&lt;/code&gt;, or &lt;code&gt;HEAD␣&lt;/code&gt;, the connection
            will be exempt from blocking. The space character (&lt;code&gt;0x20&lt;/code&gt;)
            after each verb is necessary to exempt connections from
            blocking. Not including this space character, or replacing it with
            any other byte will not exempt the connection. The other
            HTTP methods (&lt;code&gt;OPTIONS␣&lt;/code&gt;, &lt;code&gt;DELETE␣&lt;/code&gt;, &lt;code&gt;CONNECT␣&lt;/code&gt;, &lt;code&gt;TRACE␣&lt;/code&gt;,
            &lt;code&gt;PATCH␣&lt;/code&gt;) fall into the ASCII printable exemption (&lt;code&gt;Ex2&lt;/code&gt;),
            as the first 6 bytes are printable characters. We find that
            the method is case-insensitive: &lt;code&gt;GeT␣&lt;/code&gt;, &lt;code&gt;get␣&lt;/code&gt;, and
            similar
            variations are exempt. Typos in the verb (e.g., &lt;code&gt;TEG␣&lt;/code&gt;) are not
            exempt.
        &lt;/p&gt;&lt;!--l. 386--&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;Non-exempted protocols. &lt;/b&gt;We tested other common protocols:
            SSH, SMTP, and FTP would be exempt as they all start with at
            least 6 bytes of printable ASCII (rule &lt;code&gt;Ex2&lt;/code&gt;). DNS-over-TCP is
            exempt due to containing a large fraction of zeros, making it
            exempt by the &lt;code&gt;Ex1&lt;/code&gt; rule. However, if a large enough amount of
            random data was appended after a DNS-over-TCP message, it
            would be blocked.
        &lt;/p&gt;&lt;!--l. 410--&gt;
        &lt;p class=&#34;indent&#34;&gt; This observation raises the question of why the censor has
            explicit rules to exempt TLS and HTTP, but not other protocols.
            After all, the censor does not need to exempt these two protcols
            explicitly: HTTP will commonly be exempt by printable
            ASCII for the first 6 bytes (rule &lt;code&gt;Ex2&lt;/code&gt;), and TLS Client Hello
            messages have relatively low bit-wise entropy (rule &lt;code&gt;Ex1&lt;/code&gt;),
            owing to many zero fields. Nonetheless, the censor may
            employ these simple but efficient rules to quickly exempt the
            bulk of traffic (TLS and HTTP) from the more in-depth
            analysis of calculating the popcount, fraction of ASCII,
            etc.
        &lt;/p&gt;&lt;!--l. 441--&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;4.4&#34;&gt;&lt;a id=&#34;sec:residual&#34; href=&#34;#sec:residual&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;4.4 &lt;/span&gt; How the GFW Disrupts Connections&lt;/a&gt;&lt;/h3&gt;
        &lt;!-- l. 444 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;Once the GFW detects fully encrypted traffic using &lt;a href=&#34;#alg:blocking&#34;&gt;Algorithm 1&lt;/a&gt;, it
            blocks the subsequent traffic as introduced below.
        &lt;/p&gt;&lt;!-- l. 448 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;Packets are dropped from client to server. &lt;/b&gt;We triggered the
            GFW’s blocking and compared the captured packets from both
            the sending client and receiving server. We observe that after
            triggering blocking, the client’s packets are dropped by the
            GFW, and do not reach the server. However, packets sent
            by the server are not blocked and are still received at the
            client.
        &lt;/p&gt;&lt;!-- l. 458 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;UDP traffic is not affected. &lt;/b&gt;The new censorship system is
            limited to TCP. Sending a UDP datagram with a random payload
            cannot trigger the blocking. Additionally, once a 3-tuple (client
            IP, server IP, server Port) is blocked due to a triggering TCP
            connection, UDP datagrams to or from the same (server IP,
            server Port) are not affected. Because of the absence of UDP
            blocking, users may experience odd behavior while using
            Shadowsocks: they can still access websites or use apps that rely
            on UDP (e.g. QUIC or FaceTime), but cannot access websites
            that use TCP. This is because Shadowsocks proxies TCP traffic
            with TCP and proxies UDP traffic with UDP. Not detecting or
            blocking UDP traffic may reflect the censor’s &lt;em&gt;worse is better&lt;/em&gt;
            engineering mindset. From a practical view, the current TCP
            blocking can already effectively paralyze these popular
            circumvention tools, while employing UDP censorship requires
            additional resources and invites extra complexity to the
            censorship system.
        &lt;/p&gt;&lt;!-- l. 478 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;Traffic on all ports can get blocked. &lt;/b&gt;We set up a sink server
            listening on all ports from 1 to 65535 in US. We then let our
            client in China continuously make connections with 50-byte
            random payloads to each port of the US server and stop when a
            port got blocked. We find that blocking can happen on all ports
            from 1 to 65535. Therefore, running circumvention servers on
            an unusual port cannot mitigate the blocking. We also do
            not observe any difference in censor’s behaviors among
            ports.
        &lt;/p&gt;
        &lt;figure class=&#34;figure&#34; id=&#34;fig:residual-two&#34;&gt;
            &lt;!-- l. 490 --&gt;
            &lt;p class=&#34;noindent&#34;&gt; &lt;img alt=&#34;&#34; src=&#34;figures/residual_cdf_p20000_20499-.png&#34; /&gt;

                &lt;a id=&#34;x1-10002&#34;&gt;&lt;/a&gt;
            &lt;/p&gt;
            &lt;figcaption class=&#34;caption&#34;&gt;&lt;span class=&#34;id&#34;&gt;
                &lt;a href=&#34;#fig:residual-two&#34;&gt;Figure 2: &lt;/span&gt;&lt;span class=&#34;content&#34;&gt;&lt;span
                        class=&#34;ptmb8t-&#34;&gt;Residual censorship duration &lt;/span&gt;&lt;/a&gt;— When we
                    repetitively send 50-byte random data to 500 ports of a single
                    server simultaneously, the residual censorship time decreases
                    dramatically. About 40% of the blockings lasted only 10 s,
                    shorter than the 180 s duration when only one port was
                    blocked. This suggests that the GFW may limit the number
                    of connections it residually blocks at any given time.
                &lt;/span&gt;&lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-10001r4  --&gt;
        &lt;/figure&gt;
        &lt;!-- l. 492 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
            &lt;b&gt;The duration of residual censorship is affected by the number of on-going residual blocking.&lt;/b&gt;
        We find that once this
            new censorship system blocks a connection, it continues to drop
            &lt;em&gt;all&lt;/em&gt; subsequent TCP packets having the same 3-tuple (client IP,
            server IP, server port) for 120 or 180 seconds. This behavior is
            often referred to as “residual censorship” &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XBock2021a&#34;&gt;13&lt;/a&gt;, &lt;a
                    href=&#34;#XChai2019a&#34;&gt;17&lt;/a&gt;, &lt;a href=&#34;#XWang2017a&#34;&gt;63&lt;/a&gt;, &lt;a href=&#34;#XBock2020ESNI&#34;&gt;14&lt;/a&gt;]&lt;/span&gt;.
            Unlike some other residual censorship systems &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XBock2021a&#34;&gt;13&lt;/a&gt;]&lt;/span&gt;, the
            GFW’s residual censorship timer does not reset when additional
            packets are sent.
        &lt;/p&gt;&lt;!-- l. 502 --&gt;
        &lt;p class=&#34;indent&#34;&gt; We also find that the GFW seems to limit the number of
            connections it residually blocks at any given time. We let our
            clients in China repetitively make connections to 500 ports
            of a single server simultaneously. In each connection, the
            client sent 50 bytes of random data and then closed the
            connection. We recorded the duration of each occurrence of
            residual censorship. As shown in &lt;a href=&#34;#fig:residual-two&#34;&gt;Figure 2&lt;/a&gt;, in comparison
            to the 180 s duration when only one port is blocked, the
            residual censorship duration in this experiment decreased
            dramatically.
        &lt;/p&gt;
        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;4.5&#34;&gt;
            &lt;a id=&#34;sec:reassemble&#34; href=&#34;#sec:reassemble&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;4.5 &lt;/span&gt; How the GFW Reassembles Flows&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 514 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;In this section, we examine how the GFW’s new censorship
            system reassembles flows and considers flow directions.
        &lt;/p&gt;&lt;!-- l. 516 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;A complete TCP handshake is necessary. &lt;/b&gt;We observe
            that sending a &lt;code&gt;SYN&lt;/code&gt; packet followed by a &lt;code&gt;PSH+ACK&lt;/code&gt; packet
            containing random data (without the server completing its end of
            the handshake) is not sufficient to trigger blocking. The
            blocking is thus harder to exploit for residual censorship
            attacks &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XBock2021a&#34;&gt;13&lt;/a&gt;]&lt;/span&gt;.
        &lt;/p&gt;&lt;!-- l. 523 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;Only client-to-server packets can trigger the blocking. &lt;/b&gt;We
            find that the GFW not only checks if the random data is sent to a
            destination IP address that falls in an affected IP range, it also
            examines and will only block if the random data is sent from
            client to server. The server here is defined as the host that sends a
            &lt;code&gt;SYN+ACK&lt;/code&gt; during the TCP handshake.
        &lt;/p&gt;&lt;!-- l. 528 --&gt;
        &lt;p class=&#34;indent&#34;&gt; We learned this by setting up four experiments between the
            same two hosts. In the first experiment, we let the Chinese client
            connect and send random data to the foreign server; in the
            second experiment, we still let the Chinese client connect to
            the foreign server, but let the foreign server send random
            data to client; in the third experiment, we let the US client
            connect and send random data to Chinese server; in the forth
            experiment, we let the US client connect to the Chinese server,
            but then let the Chinese server send random data to the
            US client. Only connections in the first experiments were
            blocked.
        &lt;/p&gt;&lt;!-- l. 536 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;The GFW only examines the first data packets. &lt;/b&gt;The GFW
            appears to only analyze the first data packet in a TCP connection,
            without reassembling the flows with multiple data packets. We tested this with the following experiment.
            After a TCP
            handshake, we send the first data packet with only one byte of
            payload &lt;span class=&#34;lstinline&#34;&gt;&lt;/span&gt;&lt;code&gt;\x21&lt;/code&gt;. After waiting for one second, we
            then send the
            second data packet with a 200-byte random payload. We repeated
            the experiment 25 times, but the connections never got blocked.
            This is because after seeing the first data packet, the GFW had
            already exempted the connections by rule &lt;code&gt;Ex1&lt;/code&gt; as it contained
            100% printable ASCII in the payload. In other words, if
            the GFW reassembled multiple packets into a flow during
            its traffic analysis, it would have been able to block these
            connections.
        &lt;/p&gt;&lt;!-- l. 553 --&gt;
        &lt;p class=&#34;indent&#34;&gt; We found that the GFW does not wait until seeing an
            ACK response from the server to block a connection. We
            configured our server to drop any outgoing ACK packets
            with an &lt;code&gt;iptables&lt;/code&gt; rule. We then made connections with
            200-byte random payloads to the server. The GFW still blocked
            these connections though the server never sent any ACK
            packets.
        &lt;/p&gt;&lt;!-- l. 560 --&gt;
&lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;The GFW waits more than 5 minutes for the first data packets. &lt;/b&gt;
  We examine how long the GFW monitors a TCP
            connection after the TCP handshake, but before it sees the first
            data packet. From the observation that it requires a complete TCP
            handshake to trigger the blocking, we infer the GFW may
            be stateful. It is thus reasonable to suspect the GFW only
            monitors a connection for a limited amount of time, as it can
            be expensive to maintain a state forever without expiring
            it.
        &lt;/p&gt;&lt;!-- l. 569 --&gt;
        &lt;p class=&#34;indent&#34;&gt; Our client completed TCP handshakes and then waited
            for 100, 180, or 300 seconds, before sending 200 bytes of
            random data. We then repeated the experiment but used
            &lt;code&gt;iptables&lt;/code&gt; rules to drop any RST or TCP keepalive packets in
            case they helped the GFW keep the connection state active.
            We found that these connections still triggered blocking,
            suggesting the GFW maintained connection states for at least five
            minutes.
        &lt;/p&gt;&lt;!-- l. 1 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h2 class=&#34;sectionHead&#34;, id=&#34;5&#34;&gt;
            &lt;a id=&#34;sec:active-probing&#34; href=&#34;#sec:active-probing&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;5 &lt;/span&gt; Relation with the Active Probing System&lt;/a&gt;
        &lt;/h2&gt;
        &lt;!-- l. 4 --&gt;
        &lt;p class=&#34;indent&#34;&gt; &lt;/p&gt;
        &lt;figure class=&#34;table&#34; id=&#34;table:probes&#34;&gt;
            &lt;div class=&#34;tabular&#34;&gt;
                &lt;table class=&#34;tabular&#34; id=&#34;TBL-3&#34;&gt;
                    &lt;colgroup id=&#34;TBL-3-1g&#34;&gt;
                        &lt;col id=&#34;TBL-3-1&#34; /&gt;
                        &lt;col id=&#34;TBL-3-2&#34; /&gt;
                        &lt;col id=&#34;TBL-3-3&#34; /&gt;
                        &lt;col id=&#34;TBL-3-4&#34; /&gt;
                        &lt;col id=&#34;TBL-3-5&#34; /&gt;
                    &lt;/colgroup&gt;
                    &lt;tr id=&#34;TBL-3-1-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-1-1&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
                            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;Crafted Payload
                            &lt;/div&gt;
                        &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; colspan=&#34;2&#34; id=&#34;TBL-3-1-2&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
                            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;Affected Server
                            &lt;/div&gt;
                        &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; colspan=&#34;2&#34; id=&#34;TBL-3-1-4&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
                            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;Unaffected Server
                            &lt;/div&gt;
                        &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-2-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-2-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-2-2&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;
                            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;# connections&lt;/div&gt;
                        &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-2-3&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;
                            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;# probes&lt;/div&gt;
                        &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-2-4&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;
                            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;# connections&lt;/div&gt;
                        &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-2-5&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;
                            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;# probes&lt;/div&gt;
                        &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-3-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-3-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; 2-byte random
                            (\xfe\x01) &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-3-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 33k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-3-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-3-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-3-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-4-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-4-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; 50-byte random
                        &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-4-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 29k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-4-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-4-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-4-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-5-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-5-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; 200-byte random
                        &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-5-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 33k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-5-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 141 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-5-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-5-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 679 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-6-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-6-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &#34;GET &#34; + 50-byte
                            random &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-6-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 170k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-6-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-6-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-6-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-7-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-7-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; \x16\x03\x03 +
                            50-byte random &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-7-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 170k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-7-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-7-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-7-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-8-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-8-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; \x17\x03\x03 +
                            50-byte random &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-8-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 170k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-8-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-8-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-8-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-9-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-9-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &#34;GET &#34; + 50-byte
                            random &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-9-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 170k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-9-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-9-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-9-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-10-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-10-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; \x16\x03\x03 +
                            200-byte random &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-10-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 170k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-10-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-10-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-10-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-11-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-11-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; \x17\x03\x03 +
                            200-byte random &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-11-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 170k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-11-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-11-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-11-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-12-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-12-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; Low bit counting
                            (2.5) &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-12-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 170k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-12-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-12-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-12-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-13-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-13-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; High bit counting
                            (5.2) &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-13-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 170k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-13-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-13-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-13-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-14-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-14-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; More than half
                            printable &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-14-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 170k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-14-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-14-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-14-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-15-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-15-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; First six bytes
                            printable + 200-byte random &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-15-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 170k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-15-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-15-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-15-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-16-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-16-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; More than 20
                            contiguous bytes &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-16-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 170k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-16-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-16-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-16-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; 0 &lt;/td&gt;
                    &lt;/tr&gt;
                &lt;/table&gt;
            &lt;/div&gt;

            &lt;figcaption class=&#34;caption&#34;&gt;&lt;a href=&#34;#table:probes&#34;&gt;&lt;span class=&#34;id&#34;&gt;Table 2: &lt;/span&gt;&lt;/a&gt;
                &lt;span class=&#34;content&#34;&gt;Number of connections
                    received from our controlled client and number of active probes received from the GFW.
                    Between May 19, 2022 and June 8, 2022, our client repetitively sent the same 14 payloads from a VPS
                    in Tencent Cloud Beijing
                    datacenter in China, to 14 ports of two different hosts in the DigitalOcean San Francisco datacenter
                    in US. One US host is known
                    to be affected by the current blocking system, while the other US host is unaffected. In total, our
                    client in China repetitively
                    sent around 170k connections to each port of the two US servers. The only exception is, when the
                    residual censorship was
                    triggered and the client could not make connections to the affected server, the total number of
                    successful legitimate connections
                    was around 33k.
                &lt;/span&gt;&lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-12001r5  --&gt;
        &lt;/figure&gt;
        &lt;!-- l. 6 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;As introduced in &lt;a href=&#34;#sec:background-active-probing&#34;&gt;Section 2.2&lt;/a&gt;, the GFW has been
            sending active
            probes to Shadowsocks servers since 2019 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;. In this
            section,
            we study the relationship between this newly discovered
            real-time blocking system and the existing active probing system.
            By conducting designed measurement experiments and analyzing
            historical datasets, we show that while these two censorship
            systems work in parallel, the current traffic analysis module of
            the active probing system applies all five sets of exemption rules
            summarized in &lt;a href=&#34;#alg:blocking&#34;&gt;Algorithm 1&lt;/a&gt; and &lt;a href=&#34;#fig:example-blocking&#34;&gt;Figure 1&lt;/a&gt;,
            with one additional
            rule that examines the payload length of the first data packet.
            We also show evidence that the traffic analysis algorithm
            used by the active probing system &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;]&lt;/span&gt; may have evolved
            since 2019.
        &lt;/p&gt;&lt;!-- l. 32 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;Active probing experiment. &lt;/b&gt;Prior to the deployment of
            this new real-time blocking system, inferring the traffic
            analysis algorithm of the active probing system was extremely
            challenging, if possible at all. This is because the GFW
            employs an arbitrary delay between seeing a triggering
            connection and sending active probes &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;, §3.5]&lt;/span&gt;, making
            it difficult to account for which probes by the GFW are
            triggered by which connections we send. Now that we have
            inferred a list of traffic detection rules of this new blocking
            system in &lt;a href=&#34;#sec:reverse-engineering&#34;&gt;Section 4&lt;/a&gt;, we can test if a payload exempted by
            &lt;a href=&#34;#alg:blocking&#34;&gt;Algorithm 1&lt;/a&gt; will also not get suspected by the active probing
            system.
        &lt;/p&gt;&lt;!-- l. 44 --&gt;
        &lt;p class=&#34;indent&#34;&gt; We conducted the experiments between May 19, 2022
            and June 8, 2022. As shown in &lt;a href=&#34;#table:probes&#34;&gt;Table 2&lt;/a&gt;, we crafted 14
            different types of payloads: three of them are random data with
            lengths of 2, 50, and 200 bytes; the remaining 11 were data
            with various lengths that will only be exempted by exactly
            one of the exemption rules in &lt;a href=&#34;#alg:blocking&#34;&gt;Algorithm 1&lt;/a&gt;. We then sent the
            same 14 payloads from a VPS in Tencent Cloud Beijing
            China, to 14 ports of two different hosts in DigitalOcean
            San Francisco US. One US host is known to be affected
            by the current blocking system, while the other US host
            is unaffected. This way, if we received any probes from
            the GFW, we know certain exemption rules used by the
            current blocking system are not used by the active probing
            system.
        &lt;/p&gt;&lt;!-- l. 56 --&gt;
        &lt;p class=&#34;indent&#34;&gt; In total, our client in China sent around 170k connections to
            each port of the two US servers. We then took steps to isolate the
            GFW’s probes from other Internet scanners’. We check
            the source IP address of each probe against IP2Location
            database  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xip2location&#34;&gt;3&lt;/a&gt;]&lt;/span&gt; and AbuseIPDB &lt;span class=&#34;cite&#34;&gt;[&lt;a
                    href=&#34;#XAbuseIPDB&#34;&gt;2&lt;/a&gt;]&lt;/span&gt;. We do not consider it
            as a probe from the GFW if it was a non-Chinese IP or
            from a known spammer IP address. We further check if the
            probe belongs to any known types of probes sent by the
            GFW.
        &lt;/p&gt;&lt;!-- l. 62 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;The two systems work independently. &lt;/b&gt;The new censorship
            machine makes its blocking decisions &lt;em&gt;purely&lt;/em&gt; based on passive
            traffic analysis, without relying on China’s well-known active
            probing infrastructure &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XWinter2012a&#34;&gt;67&lt;/a&gt;, &lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;, &lt;a
                    href=&#34;#XWinter-obfs2-probe&#34;&gt;66&lt;/a&gt;, &lt;a href=&#34;#Xknock-knock-tor&#34;&gt;64&lt;/a&gt;, &lt;a
                    href=&#34;#XEnsafi2015b&#34;&gt;27&lt;/a&gt;]&lt;/span&gt;. We know this because, while the GFW still sends active probes
            to the servers,
            in more than 99% of the tests, the GFW did not send any active
            probes to the server before blocking a connection. For example,
            as summarized in &lt;a href=&#34;#table:probes&#34;&gt;Table 2&lt;/a&gt;, we made 33,119 connections
            but only received 179 active probes. Indeed, similar to the
            findings by prior work &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;, §4.2]&lt;/span&gt;, active probes are
            rarely
            triggered.
        &lt;/p&gt;&lt;!-- l. 87 --&gt;
        &lt;p class=&#34;indent&#34;&gt; We want to emphasize that this finding does not mean that
            defenses against active probing are not necessary or not
            important anymore &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XFrolov2020a&#34;&gt;34&lt;/a&gt;, &lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;, &lt;a
                    href=&#34;#XAnonymous2021ShadowsocksAdvise&#34;&gt;9&lt;/a&gt;]&lt;/span&gt;. On the contrary, we believe that
            the GFW’s reliance on purely passive traffic analysis is partially
            because Shadowsocks, Outline, VMess, and many other censorship
            circumvention implementations have adopted effective defenses
            against active probing &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XFrolov2020a&#34;&gt;34&lt;/a&gt;, &lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;, &lt;a
                    href=&#34;#XAnonymous2021ShadowsocksAdvise&#34;&gt;9&lt;/a&gt;, &lt;a href=&#34;#XShadowsocks2022-spec&#34;&gt;19&lt;/a&gt;, &lt;a
                    href=&#34;#Xoutline-v1.1.0&#34;&gt;43&lt;/a&gt;, &lt;a href=&#34;#Xoutline-changes&#34;&gt;32&lt;/a&gt;, &lt;a
                    href=&#34;#Xshadowsocks-rust-v1.8.5&#34;&gt;71&lt;/a&gt;]&lt;/span&gt;. The fact
            that the GFW still sends active probes to servers implies that the
            censor still attempts to use active probing to accurately identify
            circumvention servers whenever possible.
        &lt;/p&gt;&lt;!-- l. 98 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;span class=&#34;ptmb8t-&#34;&gt;The active probing system applies the five exemption rules,
            &lt;/span&gt;&lt;b&gt;with one additional length rule, to suspect traffic. &lt;/b&gt;This
            experiment suggests two points. First, similar to the findings by
            Alice et al. &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;, §4.2]&lt;/span&gt;, the active probing system
            applies an
            additional rule to examine the length of the connection. In our
            case, only connections with 200-byte payloads ever triggered the
            active probing, not ones with 2 bytes or 50 bytes. Second, the
            traffic exempted by any of the five rules discovered in  &lt;a href=&#34;#alg:blocking&#34;&gt;Algorithm 1&lt;/a&gt;
            will also not trigger the active probing system.
        &lt;/p&gt;&lt;!-- l. 126 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;The active probing system has evolved since 2019. &lt;/b&gt;We want
            to know if the same detection rules in &lt;a href=&#34;#alg:blocking&#34;&gt;Algorithm 1&lt;/a&gt; were historically
            used to trigger active probing. To analyze it, we obtained
            282 payloads that got replayed (and thus once triggered
            the GFW) in the low-entropy experiment from Alice et
            al. &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;, §4.1]&lt;/span&gt;. We then wrote a program to determine if
            a
            payload would be exempted by the current blocking system, and
            fed the program with the obtained 282 payloads. As a result,
            45 probes that previously triggered active probing were
            exempted (by rule &lt;code&gt;Ex3&lt;/code&gt;). On May 19, 2022, we repeatedly sent
            these 45 payloads through the GFW, confirming that they
            were indeed exempted from the current blocking. For each
            payload, we made 25 connections with it from a VPS in
            TencentCloud Beijing to a sink server in DigitalOcean SFO.
            This result suggests that &lt;span class=&#34;ptmri8t-&#34;&gt;the GFW has likely updated the
            &lt;/span&gt;&lt;em&gt;traffic analysis module of its active probing system&lt;/em&gt; since
            2020. In addition, the probes sent by the current GFW are
            also different from those observed in 2020 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;, §3.2]&lt;/span&gt;.
            The new probes are essentially random payloads that are
            distributed in trios of 16, 64, and 256 bytes. For each of these
            lengths, the GFW sent about the same number of probes:
            48, 46, and 47 to one server, and 238, 228, and 233 to the
            other.
        &lt;/p&gt;
        &lt;h2 class=&#34;sectionHead&#34;, id=&#34;6&#34;&gt;
            &lt;a id=&#34;sec:widespread&#34; href=&#34;#sec:widespread&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;6 &lt;/span&gt; Understanding the Blocking Strategies&lt;/a&gt;
        &lt;/h2&gt;
        &lt;!-- l. 4 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;In this section, we conduct measurement experiments to
            characterize the censor’s blocking strategies. We find that,
            possibly to mitigate false positives and reduce operation costs,
            the censor strategically limits the scope of blocking to specific IP
            ranges of popular data centers, and it applies a probabilistic
            blocking strategy to 26% of all connections to these IP
            ranges.
        &lt;/p&gt;&lt;!-- l. 12 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;6.1&#34;&gt;
            &lt;a id=&#34;sec:internet-scanning&#34; href=&#34;#sec:internet-scanning&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;6.1 &lt;/span&gt;
                Internet Scanning Experiment&lt;/a&gt;
            &lt;/h3&gt;
        &lt;!-- l. 15 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;On May 12, 2022, we performed a 10% IPv4 Internet scan on
            TCP port 80, from a server located at CU Boulder. Following
            prior work that identifies unreliable hosts in Internet scans &lt;span class=&#34;cite&#34;&gt;[&lt;a
                    href=&#34;#Xlzr&#34;&gt;41&lt;/a&gt;]&lt;/span&gt;,
            we remove IPs that respond with a TCP window of 0 (as
            we cannot send them data), or do not accept a subsequent
            connection. This leaves us with 7 million scannable IPs. We then
            randomly and equally split these 7 million IP addresses
            into nine subsets, and assigned each to our nine vantage
            points in TencenCloud Beijing datacenter. We then used a
            measurement program we wrote and installed in all nine
            vantage points for the experiment. For each IP, the program
            connects to its port 80 sequentially up to 25 times, with a
            one-second interval in between. In each connection, we
            send the same 50 bytes of random data that can trigger the
            blocking. If we see 5 consecutive connections time out (fail to
            connect) after we have sent data, we label the IP as affected.
            Otherwise, if all 25 connections succeed, we label the IP as
            unaffected. We label IPs that we cannot connect to at all as
            unknown (e.g., the server is down, or a network failure
            unrelated to the GFW prevents us from connecting in the first
            place).
        &lt;/p&gt;&lt;!-- l. 34 --&gt;
        &lt;p class=&#34;indent&#34;&gt; We also repeated this process but sent 50 bytes of &lt;code&gt;\x00&lt;/code&gt;, which
            does not trigger blocking by the GFW. If a server is marked as
            affected in this test, it is likely due to the server blocking us, and
            not the GFW, and we remove these IPs from our results. This
            leaves just over 6 million IPs.
        &lt;/p&gt;&lt;!-- l. 39 --&gt;
        &lt;p class=&#34;indent&#34;&gt; Finally, we remove “ambiguous” results that may be due to
            intermittent network failures or unreliable vantage points.
            Specifically, we remove IPs that either of our random or zero
            scans labelled unknown (we were never able to connect), or had
            intermittent connection timeouts (e.g., several connections timed
            out, but not 5 consecutively). This leaves 5.5 million IPs that we
            can easily label as unaffected (all 25 connections succeeded) or
            affected (at some point it appeared blocked after we sent random
            data).
        &lt;/p&gt;&lt;!-- l. 53 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;6.2&#34;&gt;
            &lt;a id=&#34;sec:affected-ips-asns&#34; href=&#34;#sec:affected-ips-asns&#34;&gt;
                &lt;span class=&#34;titlemark&#34;&gt;6.2 &lt;/span&gt; Not All Subnets/ASes are Affected Equally
            &lt;/a&gt;
        &lt;/h3&gt;
        &lt;figure class=&#34;figure&#34; id=&#34;fig:asn-prefix&#34;&gt;
            &lt;!-- l. 56 --&gt;
            &lt;p class=&#34;noindent&#34;&gt; &lt;img alt=&#34;&#34; src=&#34;figures/asn-prefix-cdf-.png&#34; /&gt;
                &lt;a id=&#34;x1-15002&#34;&gt;&lt;/a&gt;
            &lt;/p&gt;
            &lt;figcaption class=&#34;caption&#34;&gt;
                &lt;a href=&#34;#fig:asn-prefix&#34;&gt;
                    &lt;span class=&#34;id&#34;&gt;Figure 3: &lt;/span&gt;&lt;span class=&#34;content&#34;&gt;&lt;span
                        class=&#34;ptmb8t-&#34;&gt;Affected fraction of ASes and prefixes &lt;/span&gt;
                &lt;/a&gt; — For each AS (and /20 prefix), we calculate the fraction of
                    GFW-affected IPs over all tested IPs in it, and plot the
                    CDF. We can see that only a small fraction of ASes are
                    affected, and most subnets are “all-or-nothing” (either the
                    entire subnet’s IPs are affected, or few to none are).
                &lt;/span&gt;&lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-15001r6  --&gt;
        &lt;/figure&gt;
        &lt;figure class=&#34;figure&#34; id=&#34;fig:top-asn&#34;&gt;
            &lt;!-- l. 58 --&gt;
            &lt;p class=&#34;noindent&#34;&gt; &lt;img alt=&#34;&#34; src=&#34;figures/top-asn-.png&#34; /&gt;
                &lt;a id=&#34;x1-15004&#34;&gt;&lt;/a&gt;
            &lt;/p&gt;
            &lt;figcaption class=&#34;caption&#34;&gt;
                &lt;a href=&#34;#fig:top-asn&#34;&gt;
                &lt;span class=&#34;id&#34;&gt;Figure 4: &lt;/span&gt;&lt;span class=&#34;content&#34;&gt;&lt;span
                        class=&#34;ptmb8t-&#34;&gt;Top affected ASNs &lt;/span&gt;&lt;/a&gt;
                        — We observe that not all
                    ASes are affected, and even within each AS, different
                    prefixes are affected differently. For each AS, we looked at
                    each /20 in their network, and calculated the fraction of IPs
                    blocked in each /20 subnet. The results were very close to
                    all-or-nothing: either all IPs in a /20 were affected, or none
                    were.
                &lt;/span&gt;&lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-15003r6  --&gt;
        &lt;/figure&gt;
        &lt;!-- l. 60 --&gt;
        &lt;p class=&#34;indent&#34;&gt; Of the 5.5 million processed IPs, &lt;b&gt;98% of them are unaffected&lt;/b&gt;
            by the GFW’s blocking, suggesting that China is fairly
            conservative in employing this new censorship. We group these
            5.5 million IP addresses into their allocated IP prefixes and
            ASes, using pyasn with an AS database from April 2022 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xpyasn&#34;&gt;51&lt;/a&gt;]&lt;/span&gt;.
            For IP prefixes larger than /20, we break the allocation into a set
            of /20 prefixes to keep allocations roughly the same size. Our
            5.5 million IPs comprise 538 unique ASes that have at least 5
            results, and the vast majority of these are largely unaffected by
            the GFW’s blocking.
        &lt;/p&gt;&lt;!-- l. 71 --&gt;
        &lt;p class=&#34;indent&#34;&gt;  &lt;a href=&#34;#fig:asn-prefix&#34;&gt;Figure 3&lt;/a&gt; shows the distributions of the fraction of
            affected ASes and /20 prefixes. We found that more than
            90% ASes are affected in an all-or-nothing way: either
            all IP addresses we tested in the AS are affected by the
            GFW’s blocking, or no IP addresses we tested in the AS
            are unaffected. We also observe that only a few ASes are
            affected: over 95% of ASes see less than 10% of their IPs
            affected, and only 7 ASes see more than 30% of their IPs
            affected.
        &lt;/p&gt;&lt;!-- l. 86 --&gt;
        &lt;p class=&#34;indent&#34;&gt;  &lt;a href=&#34;#fig:top-asn&#34;&gt;Figure 4&lt;/a&gt; shows the top affected ASes. While this is skewed
            toward larger ASes (which have more IPs in our scan), it shows
            both ASes that are heavily affected (e.g., Alibaba US, Constant)
            and ones that are not (Akamai, Cloudflare). In addition, some
            ASes have a mix of affected and not affected prefixes (Amazon,
            Digital Ocean, Linode). All of the affected or partly-affected
            ASes we see are &lt;span class=&#34;ptmb8t-&#34;&gt;popular VPS providers that could be used to
            &lt;/span&gt;&lt;b&gt;host proxy servers&lt;/b&gt;, while large unaffected ASes do not
            typically sell VPS hosting to individual customers (e.g.
            CDNs).
        &lt;/p&gt;
        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;6.3&#34;&gt;
            &lt;a id=&#34;sec:blocking-rate&#34; href=&#34;#sec:blocking-rate&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;6.3 &lt;/span&gt; Characterizing Probabilistic Blocking&lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 107 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;As introduced in &lt;a href=&#34;#sec:methodology&#34;&gt;Section 3&lt;/a&gt;, we send up to 25 connections with
            the same payload before drawing any conclusions about
            blocking. This is necessary because the censor implements
            blocking probabilistically. In other words, just sending a random
            payload to an affected server once would only sometimes trigger
            blocking; however, if one keeps making connections with the
            same payload to the affected server, blocking will occur
            eventually. This raises the question on what the probability is for
            a connection to get blocked, and why the censor implements
            blocking only probabilistically.
        &lt;/p&gt;&lt;!-- l. 118 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;Estimating the blocking rate. &lt;/b&gt;From our 10% Internet scan
            (&lt;a href=&#34;#sec:affected-ips-asns&#34;&gt;Section 6.2&lt;/a&gt;), there were 109,489 IP addresses that we
            label as blocked. As shown in &lt;a href=&#34;#figure:blocking-rate-fit&#34;&gt;Section 5&lt;/a&gt;, the distribution
            of the number of successful random data connections we
            can make to each IP address before getting blocked fits a
            geometric distribution. This result suggests that the blocking
            of each connection is independent, with a probability of
            \(26.3\%\).
        &lt;/p&gt;&lt;!-- l. 126 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;Why probabilistic blocking is used. &lt;/b&gt;We conjecture that the
            censor employs probabilistic blocking possibly for two reasons:
            First, it allows the censor to only examine one-fourth of
            connections, reducing computation resources. Second, it helps
            the censor reduce the collateral damage to non-circumvention
            connections. While this reduction also comes at the expense of
            lower true positives, the residual censorship may make
            up for it: once a connection is determined to be blocked,
            subsequent connections are also blocked for several minutes
            after, making it difficult for proxy users to successfully
            connect once detected. This may also further support prior
            claims that censors put more emphasis on reducing their
            false positive rate than in achieving a high true positive
            rate &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XTschantz2016a&#34;&gt;57&lt;/a&gt;]&lt;/span&gt;.
        &lt;/p&gt;
        &lt;figure class=&#34;figure&#34; id=&#34;figure:blocking-rate-fit&#34;&gt;
            &lt;!-- l. 141 --&gt;
            &lt;p class=&#34;noindent&#34;&gt; &lt;img alt=&#34;&#34; src=&#34;figures/blocking-rate-fit-.png&#34; /&gt;
                &lt;a id=&#34;x1-16002&#34;&gt;&lt;/a&gt;
            &lt;/p&gt;
            &lt;figcaption class=&#34;caption&#34;&gt;
                &lt;a href=&#34;#figure:blocking-rate-fit&#34;&gt;

                &lt;span class=&#34;id&#34;&gt;Figure 5: &lt;/span&gt;&lt;span class=&#34;content&#34;&gt;&lt;/a&gt;CDF of the number of
                    successful connections
                    from our client in China to each of 109,489 affected
                    IP addresses before getting blocked. We made up to 25
                    connections to port 80 of each IP address. The distribution
                    fits a geometric distribution, suggesting the blocking of each
                    connection is independent, with a probability of \(p=26.3\%\).
                &lt;/span&gt;&lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-16001r6  --&gt;
        &lt;/figure&gt;
        &lt;h2 class=&#34;sectionHead&#34;, id=&#34;7&#34;&gt;
            &lt;a id=&#34;sec:evaluation&#34; href=&#34;#sec:evaluation&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;7 &lt;/span&gt; Evaluating the GFW’s Detection Rules&lt;/a&gt;
        &lt;/h2&gt;
        &lt;!-- l. 3 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;In this section, we evaluate the false positive rate and
            comprehensiveness of the GFW’s detection rules we inferred in
            &lt;a href=&#34;#sec:reverse-engineering&#34;&gt;Section 4&lt;/a&gt;. To determine the impact this blocking may have on
            regular traffic, we simulate the inferred detection rules to traffic
            on our university network without actually blocking any traffic.
            Different from the GFW, we simulate the detection rules against
            &lt;em&gt;all&lt;/em&gt; TCP connections observed without limiting the detection to
            26% of connections to specific IP ranges of popular data centers.
            We expect to see little to no circumvention traffic in this network,
            and any traffic that would be blocked under detection rules
            likely represents &lt;em&gt;false positive&lt;/em&gt; blocking. We find that the
            inferred detection algorithm would block roughly 0.6% of all
            connections on our network. Due to the black-box nature of the
            GFW, our inferred rules may only be a subset of what the
            GFW uses; however, we show that all connections that
            &lt;a href=&#34;#alg:blocking&#34;&gt;Algorithm 1&lt;/a&gt; would block were indeed blocked when we sent their
            prefixes along with random data through the GFW, suggesting
            our inferred rules have good coverage of what the GFW
            uses.
        &lt;/p&gt;&lt;!-- l. 25 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;7.1&#34;&gt;
            &lt;a id=&#34;traffic-analysis-exp&#34; href=&#34;#traffic-analysis-exp&#34;&gt;
            &lt;span class=&#34;titlemark&#34;&gt;7.1 &lt;/span&gt;Traffic Analysis Experiment
            &lt;/a&gt;
        &lt;/h3&gt;
            &lt;/a&gt;
        &lt;!-- l. 27 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;We have access to a 40 Gbps network tap at CU Boulder that
            allows us to process copies of all incoming and outgoing packets
            on our campus. Using this, we collected a dataset comprising
            &lt;em&gt;only destination port numbers and the first 6 bytes&lt;/em&gt; of payload
            data for connections that do not already satisfy the other
            exemption rules in &lt;a href=&#34;#alg:blocking&#34;&gt;Algorithm 1&lt;/a&gt;. More precisely, we implemented a
            custom packet analysis tool using PF_RING &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xpfring&#34;&gt;50&lt;/a&gt;]&lt;/span&gt;. For each
            connection, we inspected the first data packet sent by the client.
            We ensured that the packet has a correct TCP checksum, and that
            its sequence number is the first expected data packet after the
            TCP handshake in the connection (making sure we have not
            missed the first data packet). For connections that are not
            exempted by &lt;a href=&#34;#alg:blocking&#34;&gt;Algorithm 1&lt;/a&gt;—i.e., those we expect to be blocked—we
            logged the destination port and the first six bytes of the
            connection to help identify its protocol.
        &lt;/p&gt;&lt;!-- l. 47 --&gt;
        &lt;p class=&#34;indent&#34;&gt; We performed this collection between July 2022 and
            September 2022. In total, we analyzed 1.7 billion connections
            and logged 442,928 unique 6-byte prefixes of would-be-blocked
            connections. For each of these 442,928 6-byte prefixes, we
            append the same 194-byte random data to it to make a 200-byte
            payload. We then repetitively sent each payload past the real
            GFW in September 2022, to test whether they were indeed
            blocked, or if instead there were exemptions we had not
            previously identified. For each payload, we made up to 25
            connections with it from a VPS in TencentCloud Beijing to a sink server in DigitalOcean SFO.
        &lt;/p&gt;

        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;7.2&#34;&gt;
            &lt;a id=&#34;sec:blocking-analysis&#34; href=&#34;#sec:blocking-analysis&#34;&gt;
                &lt;span class=&#34;titlemark&#34;&gt;7.2 &lt;/span&gt; Experiment Results and Analysis
            &lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 70 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;Estimating the false positive rate.&lt;/b&gt;   In total, we analyzed 1.7
            billion connections on our network between July 2022 and
            September 2022. For each connection, we determine which rules
            in &lt;a href=&#34;#alg:blocking&#34;&gt;Algorithm 1&lt;/a&gt; would exempt it from being blocked. As shown in
            &lt;a href=&#34;#figure:exemptions&#34;&gt;Figure 6&lt;/a&gt;, we observe on average that
            &lt;em&gt;0.6% of TCP connections from our tap would be blocked&lt;/em&gt;  under the GFW’s detection rules
            we inferred.
        &lt;/p&gt;

        &lt;figure class=&#34;figure&#34; id=&#34;figure:exemptions&#34;&gt;
            &lt;!-- l. 65 --&gt;
            &lt;p class=&#34;noindent&#34;&gt; &lt;img alt=&#34;&#34; src=&#34;figures/exemptions-.png&#34; /&gt;
                &lt;a id=&#34;x1-18002&#34;&gt;&lt;/a&gt;
            &lt;/p&gt;
            &lt;figcaption class=&#34;caption&#34;&gt;
                &lt;a href=&#34;#figure:exemptions&#34;&gt;
                    &lt;span class=&#34;id&#34;&gt;Figure 6: &lt;/span&gt;&lt;span class=&#34;content&#34;&gt;&lt;b&gt;Common exemptions &lt;/b&gt;&lt;/a&gt;
                    — For each connection on
                    CU Boulder tap, we determine which rules in &lt;a href=&#34;#alg:blocking&#34;&gt;Algorithm 1&lt;/a&gt;
                    would exempt it from being blocked. We divide the
                    exemption rule Ex5 in &lt;a href=&#34;#sec:allowed-protocols&#34;&gt;Section 4.3&lt;/a&gt; into 3-, 4-, and 5-byte
                    patterns and present them in three rows for fine-grained
                    classification. We analyze 1.7 billion connections collected
                    from July 2022 until September 2022. For brevity, this graph
                    only shows intersections with a count greater than 1,000,000.
                    We observe 37 different intersections of exemptions in the
                    full set.
                &lt;/span&gt;&lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-18001r7  --&gt;
        &lt;/figure&gt;

        &lt;!-- l. 88 --&gt;
        &lt;p class=&#34;indent&#34;&gt; There are at least two strategies the censor employs to reduce
            the false positive rate. First, as introduced in &lt;a href=&#34;#sec:widespread&#34;&gt;Section 6&lt;/a&gt;, the GFW
            only applies this censorship to a fraction of IP subnets. This
            decision may be an attempt to mitigate the base-rate problem
            faced by the censor &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xaxelsson1999base&#34;&gt;11&lt;/a&gt;]&lt;/span&gt;. Since relatively few
            connections in
            total are proxy connections, even a small false positive rate (such
            as 0.6%) would result in blocking mostly benign traffic, if
            applied broadly. By narrowing the scope of IPs it is applied to,
            China can reduce the collateral damage of its censorship. Second,
            as explored in &lt;a href=&#34;#sec:blocking-rate&#34;&gt;Section 6.3&lt;/a&gt;, even for traffic towards this subset
            of IP subnets, the GFW is observed to block only about
            one-quarter of all traffic, reducing the false positive rate to
            one-fourth.
        &lt;/p&gt;&lt;!-- l. 104 --&gt;
        &lt;p class=&#34;indent&#34;&gt; It is possible that the 0.6% of connections we identified may
            be fully encrypted proxies. To investigate this possibility,
            we keep a count of the number of unique 6-byte prefixes
            we see in each connection that would be blocked under
            the GFW’s rules. If these connections are all truly fully
            encrypted proxies, we would expect to see a uniform distribution
            over the \(256^6\) possible 6-byte values. Otherwise, if there are
            6-byte values that occur frequently, it could be headers of
            popular protocols, indicating false positives in the GFW’s
            blocking.
        &lt;/p&gt;&lt;!-- l. 113 --&gt;

        &lt;figure class=&#34;img&#34; id=&#34;fig:blocked-cdf&#34;&gt;
            &lt;!-- l. 79 --&gt;
            &lt;p class=&#34;noindent&#34;&gt; &lt;img alt=&#34;&#34; src=&#34;figures/blocked-cdf-.png&#34; /&gt;
                &lt;a id=&#34;x1-19002&#34;&gt;&lt;/a&gt;
            &lt;/p&gt;
            &lt;figcaption class=&#34;caption&#34;&gt;
                &lt;a href=&#34;#fig:blocked-cdf&#34;&gt;
                    &lt;span class=&#34;id&#34;&gt;Figure 7: &lt;/span&gt;
                    &lt;span class=&#34;content&#34;&gt;&lt;b&gt;The first 6-bytes of blocked connections &lt;/b&gt;
                &lt;/a&gt;
                — For the 9.7 million (0.6%) connections from our tap that would
                    be blocked under the GFW rules we inferred, we count the
                    occurences of their unique first 6-bytes. The most popular
                    6-byte prefix appears in over 479 thousand connections
                    (5.0%), meaning a rule that explicitly allowed this 6-byte
                    value could reduce the GFW’s false-positive rate by this
                    amount.
                &lt;/span&gt;&lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-19001r7  --&gt;
        &lt;/figure&gt;


        &lt;p class=&#34;indent&#34;&gt; &lt;a href=&#34;#fig:blocked-cdf&#34;&gt;Figure 7&lt;/a&gt; shows the distribution of the first 6 bytes of all
            9.7
            million connections from our tap that would be blocked under the
            GFW rules we inferred. In addition, &lt;a href=&#34;#table:repeated&#34;&gt;Table 3&lt;/a&gt; shows the top
            6-byte values from would-be blocked connections. While we are
            not able to identify many of these protocols, their frequency
            along with the low entropy indicates that they are not likely to be
            fully encrypted proxies.
        &lt;/p&gt;&lt;!-- l. 121 --&gt;

        &lt;div class=&#34;table&#34; id=&#34;table:repeated&#34;&gt;
            &lt;!-- l. 81 --&gt;
            &lt;p class=&#34;indent&#34;&gt; &lt;/p&gt;
            &lt;figure class=&#34;table&#34;&gt;
                &lt;div class=&#34;tabular&#34;&gt;
                    &lt;table class=&#34;tabular&#34; id=&#34;TBL-4&#34;&gt;
                        &lt;colgroup id=&#34;TBL-4-1g&#34;&gt;
                            &lt;col id=&#34;TBL-4-1&#34; /&gt;
                            &lt;col id=&#34;TBL-4-2&#34; /&gt;
                            &lt;col id=&#34;TBL-4-3&#34; /&gt;
                            &lt;col id=&#34;TBL-4-4&#34; /&gt;
                        &lt;/colgroup&gt;
                        &lt;tr id=&#34;TBL-4-1-&#34;&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-1-1&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
                                &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                                        class=&#34;ptmr8t-x-x-90&#34;&gt;Bytes in hex&lt;/span&gt;&lt;/div&gt;
                            &lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-1-2&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
                                &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                                        class=&#34;ptmr8t-x-x-90&#34;&gt;Port&lt;/span&gt;&lt;/div&gt;
                            &lt;/td&gt;
                            &lt;td class=&#34;td11&#34; colspan=&#34;2&#34; id=&#34;TBL-4-1-3&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
                                &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                                        class=&#34;ptmr8t-x-x-90&#34;&gt;Occurences&lt;/span&gt;&lt;/div&gt;
                            &lt;/td&gt;
                        &lt;/tr&gt;
                        &lt;tr id=&#34;TBL-4-2-&#34;&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-2-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                    class=&#34;cmtt-9&#34;&gt;45 44 00 01 00 00 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-2-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;5222 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-2-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;479K &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-2-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;5.0% &lt;/span&gt;&lt;/td&gt;
                        &lt;/tr&gt;
                        &lt;tr id=&#34;TBL-4-3-&#34;&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-3-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                    class=&#34;cmtt-9&#34;&gt;ee 2f 8c ec 40 d1 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-3-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;8000 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-3-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;427K &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-3-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;4.4%&lt;/span&gt;&lt;/td&gt;
                        &lt;/tr&gt;
                        &lt;tr id=&#34;TBL-4-4-&#34;&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-4-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                    class=&#34;cmtt-9&#34;&gt;00 00 00 00 00 00 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-4-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;50386 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-4-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;104K &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-4-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;1.1% &lt;/span&gt;&lt;/td&gt;
                        &lt;/tr&gt;
                        &lt;tr id=&#34;TBL-4-5-&#34;&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-5-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                    class=&#34;cmtt-9&#34;&gt;00 c4 71 58 64 51 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-5-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;443 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-5-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;34K &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-5-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;0.4%&lt;/span&gt;&lt;/td&gt;
                        &lt;/tr&gt;
                        &lt;tr id=&#34;TBL-4-6-&#34;&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-6-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                    class=&#34;cmtt-9&#34;&gt;00 c4 71 42 30 6e &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-6-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;443 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-6-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;33K &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-6-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;0.3% &lt;/span&gt;&lt;/td&gt;
                        &lt;/tr&gt;
                        &lt;tr id=&#34;TBL-4-7-&#34;&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-7-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                    class=&#34;cmtt-9&#34;&gt;0e 53 77 61 72 6d &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-7-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;7680 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-7-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;32K &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-7-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;0.3% &lt;/span&gt;&lt;/td&gt;
                        &lt;/tr&gt;
                        &lt;tr id=&#34;TBL-4-8-&#34;&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-8-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                    class=&#34;cmtt-9&#34;&gt;1b 00 04 c6 27 53 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-8-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;8886 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-8-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;32K &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-8-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;0.3% &lt;/span&gt;&lt;/td&gt;
                        &lt;/tr&gt;
                        &lt;tr id=&#34;TBL-4-9-&#34;&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-9-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                    class=&#34;cmtt-9&#34;&gt;c6 e6 cd ed 00 00 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-9-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;33445 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-9-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;29K &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-9-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;0.3% &lt;/span&gt;&lt;/td&gt;
                        &lt;/tr&gt;
                        &lt;tr id=&#34;TBL-4-10-&#34;&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-10-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                    class=&#34;cmtt-9&#34;&gt;00 01 00 00 0f 00 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-10-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;443 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-10-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;27K &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-10-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;0.3% &lt;/span&gt;&lt;/td&gt;
                        &lt;/tr&gt;
                        &lt;tr id=&#34;TBL-4-11-&#34;&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-11-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                                    class=&#34;cmtt-9&#34;&gt;16 f1 04 00 a1 00 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-11-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;80 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-11-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;12K &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-11-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span
                                    class=&#34;ptmr8t-x-x-90&#34;&gt;0.1% &lt;/span&gt;&lt;/td&gt;
                        &lt;/tr&gt;
                    &lt;/table&gt;
                &lt;/div&gt;
                &lt;a id=&#34;x1-19004&#34;&gt;&lt;/a&gt;
                &lt;figcaption class=&#34;caption&#34;&gt;
                    &lt;a href=&#34;#table:repeated&#34;&gt;
                        &lt;span class=&#34;id&#34;&gt;Table 3: &lt;/span&gt;&lt;span class=&#34;content&#34;&gt;&lt;span
                            class=&#34;ptmb8t-&#34;&gt;Ten most common first six bytes of blocked
                        &lt;/span&gt;&lt;b&gt;connections &lt;/b&gt;
                    &lt;/a&gt; — We record the first six bytes of all
                        connections that we simulate as blocked on the CU Blouder
                        network. In this data, we find repeated six bytes and display
                        the top ten, the most common port it appeared on, and
                        the respective percentage of the total simulated blocked
                        connections.
                    &lt;/span&gt;
                &lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-19003r7  --&gt;
            &lt;/figure&gt;
        &lt;/div&gt;

        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;Estimating the comprehensiveness of the inferred rules.&lt;/b&gt;
            Among the 442,928 payloads we crafted and sent past the real
            GFW, we found only one prefix got exempted by the GFW,
            which alerted us to the TLS Application Data prefix exemption
            (&lt;code&gt;\x17\x03[\x00-\x09]&lt;/code&gt;). We added this exemption to our
            inferred rules (&lt;code&gt;Ex5&lt;/code&gt;). This result suggests our inferred rules have
            good coverage of what the GFW uses.
        &lt;/p&gt;
        &lt;h2 class=&#34;sectionHead&#34;, id=&#34;8&#34;&gt;&lt;a id=&#34;sec:circumvention&#34; href=&#34;#sec:circumvention&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;8 &lt;/span&gt; Circumvention Strategies&lt;/a&gt;
        &lt;/h2&gt;
        &lt;!-- l. 4 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;Our understanding of this new censorship system allows us to
            derive multiple circumvention strategies. In &lt;a href=&#34;#sec:customizable-iv&#34;&gt;Section 8.1&lt;/a&gt; and
            &lt;a href=&#34;#sec:popcount&#34;&gt;Section 8.2&lt;/a&gt;, we introduce two widely adopted countermeasures
            that have been helping users in China bypass censorship since
            January 2022 and October 2022, respectively. We discuss other
            circumvention strategies in &lt;a href=&#34;#sec:other-circumvention-strategies&#34;&gt;Section A&lt;/a&gt;. We responsibly and
            promptly shared our findings and suggestions with the developers
            of various popular anti-censorship tools that have millions of
            users, which we detail in &lt;a href=&#34;#sec:responsible-disclosure&#34;&gt;Section 8.3&lt;/a&gt;.
        &lt;/p&gt;&lt;!-- l. 18 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;8.1&#34;&gt;
            &lt;a id=&#34;sec:customizable-iv&#34; href=&#34;#sec:customizable-iv&#34;&gt;
                &lt;span class=&#34;titlemark&#34;&gt;8.1 &lt;/span&gt;Customizable Payload Prefixes
            &lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 21 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;The exemption rules &lt;code&gt;Ex2&lt;/code&gt; and
            &lt;code&gt;Ex5&lt;/code&gt; from &lt;a href=&#34;#alg:blocking&#34;&gt;Algorithm 1&lt;/a&gt; only look at
            the first several bytes in a connection, allowing the GFW to
            efficiently exempt non-fully encrypted traffic; however, this lends
            itself to a potential countermeasure. Specifically, we propose
            prepending a customizable prefix to the payload of the first
            packet in a (circumvention) connection.
        &lt;/p&gt;&lt;!-- l. 29 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;Customizable IV header. &lt;/b&gt;Shadowsocks connections begin with
            an Initialization Vector (IV), which is of length 16 or 32 bytes
            depending on the encryption ciphers &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xshadowsocks&#34;&gt;22&lt;/a&gt;]&lt;/span&gt;. As
            introduced in
            &lt;a href=&#34;#sec:ascii-exemption&#34;&gt;Section 4.2&lt;/a&gt;, turning the first six (or more) bytes of the IVs into
            printable ASCII will exempt connections by the rule &lt;code&gt;Ex2&lt;/code&gt;.
            Similarly, turning the first three, four, or five bytes of the IVs
            into common protocol headers will exempt connections
            by the rule &lt;code&gt;Ex5&lt;/code&gt; (e.g., turning the first three bytes of an IV
            into &lt;code&gt;0x16 0x03 0x03&lt;/code&gt;). These countermeasures require
            minimal changes to the client and no changes to the server, and
            therefore has been adopted by many popular circumvention
            tools &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xshadowsocks-rust-salt&#34;&gt;72&lt;/a&gt;, &lt;a href=&#34;#Xv2ray-salt&#34;&gt;62&lt;/a&gt;, &lt;a
                    href=&#34;#Xsagernet-salt&#34;&gt;48&lt;/a&gt;, &lt;a href=&#34;#Xoutline-salt&#34;&gt;56&lt;/a&gt;]&lt;/span&gt;. Restricting the first few
            bytes of a
            32-byte IV to be printable ASCII will not reduce the randomness
            to the point that affects the security of encryption. For example,
            even fixing the first six bytes to printable ASCII still leaves the
            IVs with 26 random bytes, which is still more than a typical
            16-byte IV.
        &lt;/p&gt;&lt;!-- l. 51 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;Limitations. &lt;/b&gt;This is a stopgap solution and could potentially
            be
            blocked by the censor fairly easily. The censor may skip the first
            several bytes and apply the detection rules to the rest data in a
            connection. Protocol mimicry is also difficult in practice &lt;span class=&#34;cite&#34;&gt;[&lt;a
                    href=&#34;#XHoumansadr2013b&#34;&gt;39&lt;/a&gt;]&lt;/span&gt;.
            The censor can enforce stricter detection rules, or actively probe
            a server to check if it is genuinely running TLS or HTTP.
            Nevertheless, the fact that this strategy still works as of February
            2023, more than one year since its adoption by many popular
            circumvention tools in January 2022, underscores that even
            simple solutions can be effective against finite-resourced
            censors &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xcat-and-mouse&#34;&gt;8&lt;/a&gt;, &lt;a href=&#34;#XTschantz2016a&#34;&gt;57&lt;/a&gt;, &lt;a
                    href=&#34;#XFifield2016a&#34;&gt;30&lt;/a&gt;]&lt;/span&gt;.
        &lt;/p&gt;&lt;!-- l. 72 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;8.2&#34;&gt;
            &lt;a id=&#34;sec:popcount&#34; href=&#34;#sec:popcount&#34;&gt;
            &lt;span class=&#34;titlemark&#34;&gt;8.2 &lt;/span&gt; Altering Popcount
            &lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 75 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;As introduced in &lt;a href=&#34;#sec:bit-counting&#34;&gt;Section 4.1&lt;/a&gt;, the GFW exempts a connection
            if
            its first data packet has an average popcount-per-byte \(\le 3.4\) or \(\ge 4.6\)
            (&lt;code&gt;Ex1&lt;/code&gt;).
            Based on this observation, one can increase (decrease) the
            popcount by inserting additional ones (zeroes) into the packet to
            bypass censorship. We introduce and analyze a flexible scheme
            that alters the popcount-per-byte to any given value or range. We
            implemented this scheme on Shadowsocks-rust &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xshadowsocks-rust&#34;&gt;54&lt;/a&gt;]&lt;/span&gt;
            and
            Shadowsocks-android &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xshadowsocks-android&#34;&gt;6&lt;/a&gt;]&lt;/span&gt;, helping users in
            China bypass
            censorship since October 2022 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xcat-and-mouse&#34;&gt;8&lt;/a&gt;]&lt;/span&gt;. In January 2023,
            a
            large-scale circumvention service in China (that asked not to be
            named), also implemented a version of this scheme and found


            similar success.
        &lt;/p&gt;&lt;!-- l. 93 --&gt;
        &lt;p class=&#34;indent&#34;&gt; At a high level, we take original fully-encrypted packets as
            input: By operating only on the ciphertexts, we do not risk
            violating confidentiality. When sending a packet, we first
            compute its average popcount-per-byte; if the value is greater
            than 4, then we determine how many one-bits we would
            have to add to the packet in order to obtain a popcount
            over 4.6. Conversely, if the popcount is less than 4, then we
            determine how many zero-bits we would have to add to
            decrease the popcount to less than 3.4. In either case, we
            append the necessary number of one- or zero-bits to the
            original ciphertext and then append 4 bytes denoting the
            number of bits added, ultimately giving us a bit-string \(B\)
            that has a popcount-per-byte that would not subject it to
            censorship.
        &lt;/p&gt;&lt;!-- l. 109 --&gt;
        &lt;p class=&#34;indent&#34;&gt; Of course, simply appending ones or zeroes would be
            easy to fingerprint. To address this, we do bit-level random
            shuffling. In particular, we leverage the existing shared secrets,
            such as password, as a seed to deterministically construct
            a permutation vector. In each connection, we update this
            permutation vector and use it to shuffle all the bits in the
            bit-string \(B\) before sending it. To decode, the receiver first
            updates the permutation vector and then uses it to un-shuffle
            the bit-string; then it reads the last 4 bytes to determine
            the number of bits added, removes that number of bits,
            and is thus able to recover the original (fully encrypted)
            packet.
        &lt;/p&gt;&lt;!-- l. 124 --&gt;
        &lt;p class=&#34;indent&#34;&gt; In practice, we take two additional steps to further obfuscate
            the traffic. Since it is an obvious fingerprint if all connections
            share the same popcount-per-byte value, we set the goal
            value to a parameterizable range. Second, since the 4-byte
            length tag in plaintext may be a fingerprint, we encrypt it
            (the same way these circumvention tools encrypt proxy
            traffic).
        &lt;/p&gt;&lt;!-- l. 145 --&gt;
        &lt;p class=&#34;indent&#34;&gt; This scheme has several advantages. &lt;em&gt;First&lt;/em&gt; , the scheme
            supports parameterizable popcount-per-byte in case the GFW
            updates its popcount rule to block an even larger range. &lt;em&gt;Second&lt;/em&gt; ,
            because of its careful design, there are no obvious fingerprints
            that would signal to the censor that this is a popcount-adjusted
            packet. &lt;em&gt;Finally&lt;/em&gt; , it incurs low overhead; it adds only as many
            ones (or zeroes) strictly necessary (padded to the nearest
            byte). In the worst case—increasing the popcount from 4 to
            4.6—this incurs only about 17.6% overhead. As a result, it
            could feasibly be applied not just to the first packet, but to
            every packet in the connection, thereby insulating it against
            future updates to the censor that might look past the first
            packet.
        &lt;/p&gt;&lt;!-- l. 191 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;8.3&#34;&gt;
            &lt;a id=&#34;sec:responsible-disclosure&#34; href=&#34;#sec:responsible-disclosure&#34;&gt;
            &lt;span class=&#34;titlemark&#34;&gt;8.3 &lt;/span&gt; Responsible Disclosure
            &lt;/a&gt;
        &lt;/h3&gt;
        &lt;!-- l. 194 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;On November 16, 2021, ten days after the GFW employed
            this new blocking &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAnonymous2021Shadowsocks&#34;&gt;10&lt;/a&gt;]&lt;/span&gt;, we revealed
            details of this new blocking to the public &lt;span class=&#34;cite&#34;&gt;[&lt;a
                    href=&#34;#Xtwitter-blocking-announcement-en&#34;&gt;37&lt;/a&gt;, &lt;a
                    href=&#34;#Xtwitter-blocking-announcement-zh&#34;&gt;38&lt;/a&gt;]&lt;/span&gt;. With the development of our
            understanding of this new blocking, we derived and evaluated
            different circumvention strategies. We responsibly and promptly
            shared our findings and suggestions with the developers of
            various popular anti-censorship tools that have &lt;em&gt;millions of users&lt;/em&gt; ,
            including Shadowsocks &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xshadowsocks&#34;&gt;22&lt;/a&gt;]&lt;/span&gt;, V2Ray &lt;span
                class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xv2ray&#34;&gt;59&lt;/a&gt;]&lt;/span&gt;, Outline &lt;span class=&#34;cite&#34;&gt;[&lt;a
                    href=&#34;#Xoutline&#34;&gt;42&lt;/a&gt;]&lt;/span&gt;,
            Lantern &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xlantern&#34;&gt;20&lt;/a&gt;]&lt;/span&gt;, Psiphon &lt;span class=&#34;cite&#34;&gt;[&lt;a
                    href=&#34;#Xpsiphon3&#34;&gt;21&lt;/a&gt;]&lt;/span&gt;, and Conjure &lt;span class=&#34;cite&#34;&gt;[&lt;a
                    href=&#34;#Xconjure&#34;&gt;33&lt;/a&gt;]&lt;/span&gt;. Below
            we introduce our disclosure and the responses from the
            anti-censorship community in detail.
        &lt;/p&gt;&lt;!-- l. 205 --&gt;
        &lt;p class=&#34;indent&#34;&gt; On January 13, 2022, we shared our first circumvention
            strategy with a group of developers. This solution, detailed in
            &lt;a href=&#34;#sec:customizable-iv&#34;&gt;Section 8.1&lt;/a&gt;, requires minimal code changes to the clients
            and no changes to the servers. By January 14, 2022,
            Shadowsocks-rust developer zonyitoo, V2Ray developer
            Xiaokang Wang and Sagernet developer nekohasekai had
            already added this circumvention solution as an option to their
            clients &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xshadowsocks-rust-salt&#34;&gt;72&lt;/a&gt;, &lt;a href=&#34;#Xv2ray-salt&#34;&gt;62&lt;/a&gt;, &lt;a
                    href=&#34;#Xsagernet-salt&#34;&gt;48&lt;/a&gt;]&lt;/span&gt;. On October 4, 2022, database64128
            implemented a user-customizable version of this strategy on
            Shadowsocks-go &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xshadowsocks-go-salt&#34;&gt;18&lt;/a&gt;]&lt;/span&gt;. On October 25, 2022,
            Outline
            developers adopted a highly customizable solution for their
            client &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xoutline-salt&#34;&gt;56&lt;/a&gt;]&lt;/span&gt;. On October 14, 2022, we released a
            modified
            Shadowsocks &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xcat-and-mouse&#34;&gt;8&lt;/a&gt;]&lt;/span&gt; that employed the popcount-altering
            strategy
            we detailed in &lt;a href=&#34;#sec:popcount&#34;&gt;Section 8.2&lt;/a&gt;.
        &lt;/p&gt;&lt;!-- l. 223 --&gt;
        &lt;p class=&#34;indent&#34;&gt; As of February 14, 2023, all circumvention strategies
            adopted by these tools are reportedly &lt;em&gt;still effective in China&lt;/em&gt;. In
            January 2023, Outline developers reported that the number
            of Outline servers (that opted-in for anonymous metrics)
            had doubled since they adopted the mitigation above. In
            January 2023, a large circumvention service provider in China
            (that asked not to be named at this time) also implemented our
            proposed scheme and has also found success.
        &lt;/p&gt;&lt;!-- l. 233 --&gt;
        &lt;p class=&#34;indent&#34;&gt; While we did not study countries other than China, our
            proposed circumvention strategies are reported to be also
            working in Iran, another country that reportedly blocks and
            throttles fully encrypted proxies &lt;span class=&#34;cite&#34;&gt;[&lt;a
                    href=&#34;#Xiran-shadowsocks-not-working&#34;&gt;65&lt;/a&gt;]&lt;/span&gt;. On February 13, 2023,
            Lantern developers reported that the adopted protocol “accounted
            for the majority of our Iran traffic” since January 2023. On
            February 13, 2023, a different circumvention service provider
            reported that, after enabling Outline’s mitigation feature in
            November 2022, their services turned from being completely
            blocked to serving 850k daily users from Iran.
        &lt;/p&gt;&lt;!-- l. 1 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h2 class=&#34;sectionHead&#34;, id=&#34;9&#34;&gt;
            &lt;a id=&#34;sec:ethics&#34; href=&#34;#sec:ethics&#34;&gt;
            &lt;span class=&#34;titlemark&#34;&gt;9 &lt;/span&gt; Ethics
            &lt;/a&gt;
        &lt;/h2&gt;
        &lt;!-- l. 3 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;Censorship measurement research carries an element of risk
            and responsibility which we take seriously. Our research
            involves handling sensitive network traffic, scanning large
            numbers of hosts, and performing network measurements
            in a sensitive country. Due to the sensitive nature of this
            work, we approached our institution’s IRB with our detailed
            research plan for review. While the IRB determined that the


            work does not involve human subjects (and thus does not
            require IRB review), we have designed and implemented
            extensive precautionary efforts to minimize potential risks and
            harms. In this section, we discuss these risks and detail the
            precautionary measures we adopted to manage and mitigate
            them.
        &lt;/p&gt;&lt;!-- l. 16 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;Traffic analysis. &lt;/b&gt;We worked closely with our university’s
            network operators, who have extensive experience in managing
            such projects, to deploy our network measurement tool to ensure
            it is within the network use policy and respects user privacy.
            We design our experiments to avoid collecting potentially
            sensitive information, such as IP addresses, which could
            reveal human identifiable information. We collect minimal
            information and focus on tracking aggregate statistics to avoid
            potentially identifying individuals. Specifically, we only
            analyzed the very first TCP data packet in each connection
            and ignored any subsequent packets. In addition, we only
            logged the &lt;em&gt;first six bytes&lt;/em&gt; of data and keep an aggregate
            count of their occurrences; no raw traffic was ever inspected
            by a human nor logged. We practiced the least privilege
            principle, giving only a subset of our team access to this
            data.
        &lt;/p&gt;&lt;!-- l. 42 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;Internet scanning. &lt;/b&gt;To minimize the risk of overwhelming
            servers when performing Internet-wide scans, we followed the
            best practices outlined in prior work in Internet scanning and
            widescale censorship measurement &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xzmap&#34;&gt;26&lt;/a&gt;, &lt;a
                    href=&#34;#XVanderSloot2018a&#34;&gt;60&lt;/a&gt;]&lt;/span&gt;. We set up
            a dedicated webpage, along with a reverse DNS to it, on
            port 80 of our scanning host at CU Boulder. The webpage
            explains what data our scanning collects, and offers ways
            to opt out of future scans. During our entire experiment
            period, we received and honored seven removal requests,
            which is typical based on past experiences scanning the
            Internet &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XDurumeric-Internet-Scan-2014&#34;&gt;25&lt;/a&gt;, §5.3]&lt;/span&gt; &lt;span
                class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xzmap&#34;&gt;26&lt;/a&gt;, §5.1]&lt;/span&gt;. Our follow-up scans to these
            servers were low-bandwidth: we sent less than 100 bytes for each
            request, and each server only performed one connection at a time
            to avoid overwhelming their network or connection pool
            resources.
        &lt;/p&gt;&lt;!-- l. 61 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;The use of vantage points. &lt;/b&gt;Active censorship measurement
            from within censored countries requires additional considerations
            and prudent evaluation. We first explored the possibility of
            performing the measurement remotely but confirmed that this
            censorship could not be triggered from outside of China.
            While it may be low risk to have sensitive queries observed
            by the censor, we follow similar standards discussed in
            prior work to limit the number of these sensitive queries we
            send &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;. In particular, we only send queries on port
            80 to
            servers that are listening on that port, and made no concurrent
            connections to the same server to avoid overwhelming server
            operations.
        &lt;/p&gt;&lt;!-- l. 71 --&gt;
        &lt;p class=&#34;indent&#34;&gt; Our research team consulted experts with a deep understanding
            of the nature and legal concerns of Chinese censorship,
            who helped us make informed decisions on which VPS
            providers to use and how to use them. We selected two large-scale VPS providers run by well-known commercial
            companies in order to avoid any potential legal risks to
            individuals. We registered our VPSes with the accurate identity
            and contact information of one of our researchers who is
            neither a citizen of nor resides in China. We received no
            complaints from the providers throughout our research.
            As done in prior work &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;, we do not inform these
            large
            VPS providers of the experiments ahead of time, to avoid
            potential experiment bias (e.g. interference in results) or
            placing potential legal obligations or burdens on the VPS
            providers.
        &lt;/p&gt;&lt;!-- l. 88 --&gt;
        &lt;p class=&#34;indent&#34;&gt; We manage the risk of potentially getting any server blocked
            by the GFW temporarily or in the long term. For all hosts we
            controlled in this study, we assigned dedicated IP addresses to
            them to avoid blocking shared IP addresses. In addition,
            we rented our non-censoring network hosts from a VPS
            provider that permits censorship circumvention usage and
            even offers automatic installation of circumvention tools.
            Similar to the findings in prior work on residual censorship in
            China &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XBock2021a&#34;&gt;13&lt;/a&gt;, &lt;a href=&#34;#XChai2019a&#34;&gt;17&lt;/a&gt;, &lt;a
                    href=&#34;#XWang2017a&#34;&gt;63&lt;/a&gt;, &lt;a href=&#34;#XBock2020ESNI&#34;&gt;14&lt;/a&gt;]&lt;/span&gt;, we tested using our own servers
            and
            confirmed that the GFW never blocked any of our machines’ IP
            addresses for more than 180 seconds, and the blocking only
            affected traffic from our clients to the servers, without interfering
            with traffic from others’. Knowing that our servers were used for
            five months but never experienced any long-term blocking, we
            proceeded to perform our large-scale scans.
        &lt;/p&gt;
        &lt;h2 class=&#34;sectionHead&#34;, id=&#34;10&#34;&gt;
            &lt;a id=&#34;sec:conclusion&#34; href=&#34;#sec:conclusion&#34;&gt;
            &lt;span class=&#34;titlemark&#34;&gt;10 &lt;/span&gt; Conclusion
            &lt;/a&gt;
        &lt;/h2&gt;
        &lt;!-- l. 4 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;In this work, we exposed and studied China’s latest censorship
            system that dynamically blocks fully encrypted traffic in real
            time. This powerful new form of censorship has affected many
            mainstream circumvention tools partially or in full, including
            Shadowsocks, Outline, VMess, Obfs4, Lantern, Phiphon, and
            Conjure. We conducted extensive measurements to infer various
            properties about the GFW’s traffic analysis algorithm and
            evaluated its comprehensiveness and false positives against
            real-world traffic. We use our knowledge of this new censorship
            system to derive effective circumvention strategies. We
            responsibly disclosed our findings and suggestions to the
            developers of different anti-censorship tools, helping millions of
            users successfully evade this new form of blocking.
        &lt;/p&gt;&lt;!-- l. 1 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h2 class=&#34;likesectionHead&#34;, id=&#34;acknowledgements&#34;&gt;
            &lt;a id=&#34;acknowledgements&#34; href=&#34;#acknowledgements&#34;&gt;Acknowledgments&lt;/a&gt;
        &lt;/h2&gt;
        &lt;p&gt;&lt;a id=&#34;Q1-1-27&#34;&gt;&lt;/a&gt;&lt;/p&gt;
        &lt;!-- l. 4 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;We thank our shepherd and other anonymous reviewers for
            their valuable comments and feedback. We also thank the
            brave users in China for immediately reporting the blocking
            incidents to us. We are grateful to Benjamin M. Schwartz,


            zonyitoo, nekohasekai, database64128, AkinoKaede, Max Lv,
            Mygod, DuckSoft, and many other developers from the
            anti-censorship community for their prompt patches, assistance,
            and discussions. We express our sincere appreciation to
            Outline developer, Vinicius Fortuna, at Jigsaw for offering
            insightful suggestions and assisting us in reaching out to the
            community. We thank Lantern developers Adam Fisk and Ox
            Cart for sharing the deployment experience of their tool in
            Iran. We also thank Milad Nasr for his informative input.
            We appreciate klzgrad sharing thoughtful comments on an
            earlier draft of the paper. We are also deeply grateful to
            David Fifield for providing a proof-of-concept patch against
            obfs4, contributing to the discussions, providing constructive
            feedback and suggestions on an earlier draft of the paper,
            and offering guidance and support throughout the entire
            study.
        &lt;/p&gt;&lt;!-- l. 32 --&gt;
        &lt;p class=&#34;indent&#34;&gt; This work was supported in part by NSF grants CNS-1943240,
            CNS-1953786, CNS-1954063 and CNS-2145783, by the
            Young Faculty Award program of the Defense Advanced
            Research Projects Agency (DARPA) under the grant
            DARPA-RA-21-03-09-YFA9-FP-003, and by DARPA under
            Agreement No. HR00112190125. The views, opinions, and/or
            findings expressed are those of the authors and should not be
            interpreted as representing the official views or policies of the
            Department of Defense or the U.S. Government. Approved for
            public release; distribution is unlimited.
        &lt;/p&gt;
        &lt;h2 class=&#34;likesectionHead&#34;, id=&#34;availability&#34;&gt;
            &lt;a id=&#34;availability&#34; href=&#34;#availability&#34;&gt;Availablity&lt;/a&gt;
            &lt;/h2&gt;
        &lt;p&gt;&lt;a id=&#34;Q1-1-29&#34;&gt;&lt;/a&gt;&lt;/p&gt;
        &lt;!-- l. 4 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;To maintain reproducibility and encourage future
            research, we released our source code and data:
            &lt;a class=&#34;url&#34;
                href=&#34;https://gfw.report/publications/usenixsecurity23/en&#34;&gt;https://gfw.report/publications/usenixsecurity23/en&lt;/a&gt;.
        &lt;/p&gt;&lt;!-- l. 1 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h2 class=&#34;likesectionHead&#34;, id=&#34;references&#34;&gt;
            &lt;a id=&#34;references&#34; href=&#34;#references&#34;&gt;References&lt;/a&gt;
        &lt;/h2&gt;
        &lt;!-- l. 1 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;div class=&#34;thebibliography&#34;&gt;
            &lt;ol class=citation-numbering&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XWikipedia19CPC&#34;&gt;
                    &lt;/a&gt;
                    19th Central Committee of the Chinese Communist Party.
                    &lt;a class=&#34;url&#34; href=&#34;https://en.wikipedia.org/wiki/19th_Central_Committee_of_the_Chinese_Communist_Party&#34;&gt;
                     https://en.wikipedia.org/wiki/19th_Central_Committee_of_the_Chinese_Communist_Party
                    &lt;/a&gt;
                    .
                &lt;/li&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XAbuseIPDB&#34;&gt;
                    &lt;/a&gt;
                    Abuseipdb.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.abuseipdb.com/&#34;&gt;
                     https://www.abuseipdb.com/
                    &lt;/a&gt;
                    .
                &lt;/li&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xip2location&#34;&gt;
                    &lt;/a&gt;
                    Ip2location lite data.
                    &lt;a class=&#34;url&#34; href=&#34;http://www.ip2location.com/&#34;&gt;
                     http://www.ip2location.com/
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XWikipediaSixthPlenary&#34;&gt;
                    &lt;/a&gt;
                    Sixth Plenary Session of the 19th CPC Central Committee.
                    &lt;a class=&#34;url&#34; href=&#34;https://zh.wikipedia.org/zh-cn/中国共产党第十九届中央委员会第六次全体会议&#34;&gt;
                        https://zh.wikipedia.org/zh-cn/中国共产党第十九届中央委员会第六次全体会议
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XAlice2020a&#34;&gt;
                    &lt;/a&gt;
                    Alice, Bob, Carol, Jan Beznazwy, and
                                  Amir
                                  Houmansadr. How China detects and blocks
                                  Shadowsocks. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Internet Measurement Conference
                    &lt;/span&gt;
                    .
                                  ACM, 2020.
                    &lt;a class=&#34;url&#34; href=&#34;https://censorbib.nymity.ch/pdf/Alice2020a.pdf&#34;&gt;
                     https://censorbib.nymity.ch/pdf/Alice2020a.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xshadowsocks-android&#34;&gt;
                    &lt;/a&gt;
                    Shadowsocks android
                                  developers. Shadowsocks-android.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/shadowsocks/shadowsocks-android&#34;&gt;
                     https://github.com/shadowsocks/shadowsocks-android
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xobfs4&#34;&gt;
                    &lt;/a&gt;
                    Yawning Angel et al. Obfs4 specification.
                    &lt;a class=&#34;url&#34; href=&#34;https://gitlab.com/yawning/obfs4/blob/master/doc/obfs4-spec.txt&#34;&gt;
                     https://gitlab.com/yawning/obfs4/blob/master/doc/obfs4-spec.txt
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xcat-and-mouse&#34;&gt;
                    &lt;/a&gt;
                    Anonymous and Amonymous. Sharing
                                  a modified
                                  Shadowsocks as well
                                  as our thoughts on the cat-and-mouse game, October
                                  2022.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/136&#34;&gt;
                     https://github.com/net4people/bbs/issues/136
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XAnonymous2021ShadowsocksAdvise&#34;&gt;
                    &lt;/a&gt;
                    Anonymous,
                                  Anonymous, Anonymous, David
                                  Fifield, and Amir Houmansadr. A practical guide to
                                  defend against the GFW’s latest active probing, January
                                  2021.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/58&#34;&gt;
                     https://github.com/net4people/bbs/issues/58
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XAnonymous2021Shadowsocks&#34;&gt;
                    &lt;/a&gt;
                    Anonymous, Vinicius
                                  Fortuna, David
                                  Fifield, Xiaokang Wang, Mygod, moranno,
                                  et al. Properly configured shadowsocks servers
                                  reportedly blocked in china, November 2021.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/69#issuecomment-962666385&#34;&gt;
                     https://github.com/net4people/bbs/issues/69#issuecomment-962666385
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xaxelsson1999base&#34;&gt;
                    &lt;/a&gt;
                    Stefan Axelsson. The
                                  base-rate fallacy and its
                                  implications for the difficulty of intrusion detection. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Proceedings of the 6th ACM Conference on Computer
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     and Communications Security
                    &lt;/span&gt;
                    , pages 1–7, 1999.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.cse.psu.edu/~trj1/cse543-f16/docs/Axelsson.pdf&#34;&gt;
                     https://www.cse.psu.edu/~trj1/cse543-f16/docs/Axelsson.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XBock2020Iran&#34;&gt;
                    &lt;/a&gt;
                    Kevin
                                  Bock. Iran: A new model for censorship, March 2020.
                    &lt;a class=&#34;url&#34; href=&#34;https://geneva.cs.umd.edu/posts/iran-whitelister/&#34;&gt;
                     https://geneva.cs.umd.edu/posts/iran-whitelister/
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XBock2021a&#34;&gt;
                    &lt;/a&gt;
                    Kevin Bock, Pranav Bharadwaj, Jasraj
                                  Singh, and
                                  Dave Levin. Your censor is my censor: Weaponizing
                                  censorship infrastructure for availability attacks. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Workshop on Offensive Technologies
                    &lt;/span&gt;
                    . IEEE, 2021.
                    &lt;a class=&#34;url&#34; href=&#34;http://www.cs.umd.edu/~dml/papers/weaponizing_woot21.pdf&#34;&gt;
                     http://www.cs.umd.edu/~dml/papers/weaponizing_woot21.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XBock2020ESNI&#34;&gt;
                    &lt;/a&gt;
                    Kevin Bock, iyouport, Anonymous,
                                  Louis-Henri
                                  Merino, David Fifield, Amir Houmansadr, and
                                  Dave Levin. Exposing and circumventing
                                  China’s censorship of ESNI, August 2020.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/43#issuecomment-673322409&#34;&gt;
                     https://github.com/net4people/bbs/issues/43#issuecomment-673322409
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xbonaventure-mptcp-tls-00&#34;&gt;
                    &lt;/a&gt;
                    Olivier Bonaventure.
                                  MPTLS : Making
                                  TLS and Multipath TCP stronger together.
                                  Internet-Draft draft-bonaventure-mptcp-tls-00,
                                  Internet Engineering Task Force, October 2014.
                    &lt;a class=&#34;url&#34; href=&#34;https://datatracker.ietf.org/doc/draft-bonaventure-mptcp-tls/00/&#34;&gt;
                     https://datatracker.ietf.org/doc/draft-bonaventure-mptcp-tls/00/
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xobfuscated-openssh&#34;&gt;
                    &lt;/a&gt;
                    brl. Obfuscated OpenSSH.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/brl/obfuscated-openssh&#34;&gt;
                     https://github.com/brl/obfuscated-openssh
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XChai2019a&#34;&gt;
                    &lt;/a&gt;
                    Zimo Chai, Amirhossein Ghafari, and
                                  Amir
                                  Houmansadr. On the importance of encrypted-SNI
                                  (ESNI) to censorship circumvention. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Free and Open
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Communications on the Internet
                    &lt;/span&gt;
                    . USENIX, 2019.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/foci19-paper_chai_update.pdf&#34;&gt;
                     https://www.usenix.org/system/files/foci19-paper_chai_update.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xshadowsocks-go-salt&#34;&gt;
                    &lt;/a&gt;
                    database64128. taint: add
                                  unsafe stream prefix, October 2022.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/shadowsocks/shadowsocks-org/issues/204#issuecomment-1266710067&#34;&gt;
                     https://github.com/shadowsocks/shadowsocks-org/issues/204#issuecomment-1266710067
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XShadowsocks2022-spec&#34;&gt;
                    &lt;/a&gt;
                    database64128, zonyitoo,
                                  Xiaokang Wang, and
                                  nekohasekai. Shadowsocks 2022 Edition: Secure L4
                                  Tunnel with Symmetric Encryption, October 2022.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/58&#34;&gt;
                     https://github.com/net4people/bbs/issues/58
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xlantern&#34;&gt;
                    &lt;/a&gt;
                    Lantern developers. Lantern.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/getlantern&#34;&gt;
                     https://github.com/getlantern
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xpsiphon3&#34;&gt;
                    &lt;/a&gt;
                    Psiphon3 developers. Psiphon3.
                    &lt;a class=&#34;url&#34; href=&#34;https://psiphon.ca/&#34;&gt;
                     https://psiphon.ca/
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xshadowsocks&#34;&gt;
                    &lt;/a&gt;
                    Shadowsocks
                                  developers. Shadowsocks aead cihpher specification.
                    &lt;a class=&#34;url&#34; href=&#34;https://shadowsocks.org/guide/aead.html&#34;&gt;
                     https://shadowsocks.org/guide/aead.html
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xvmess&#34;&gt;
                    &lt;/a&gt;
                    VMess developers. Vmess.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.v2fly.org/en_US/developer/protocols/vmess.html&#34;&gt;
                     https://www.v2fly.org/en_US/developer/protocols/vmess.html
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xobfsproxy&#34;&gt;
                    &lt;/a&gt;
                    Roger Dingledine. Obfsproxy: the
                                  next step in the censorship arms race.
                    &lt;a class=&#34;url&#34; href=&#34;https://blog.torproject.org/obfsproxy-next-step-censorship-arms-race&#34;&gt;
                     https://blog.torproject.org/obfsproxy-next-step-censorship-arms-race
                    &lt;/a&gt;
                    ,
                                  February 2012.
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XDurumeric-Internet-Scan-2014&#34;&gt;
                    &lt;/a&gt;
                    Zakir Durumeric,
                                  Michael Bailey, and
                                  J. Alex Halderman. An Internet-Wide view of
                                  Internet-Wide scanning. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     23rd USENIX Security
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Symposium (USENIX Security 14)
                    &lt;/span&gt;
                    , pages 65–78,
                                  San Diego, CA, August 2014. USENIX Association.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/conference/usenixsecurity14/technical-sessions/presentation/durumeric&#34;&gt;
                     https://www.usenix.org/conference/usenixsecurity14/technical-sessions/presentation/durumeric
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xzmap&#34;&gt;
                    &lt;/a&gt;
                    Zakir Durumeric, Eric Wustrow, and
                                  J. Alex
                                  Halderman. ZMap: Fast internet-wide scanning and
                                  its security applications. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     22nd USENIX Security
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Symposium (USENIX Security 13)
                    &lt;/span&gt;
                    , pages 605–620,
                                  Washington, D.C., August 2013. USENIX Association.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/conference/usenixsecurity13/technical-sessions/paper/durumeric&#34;&gt;
                     https://www.usenix.org/conference/usenixsecurity13/technical-sessions/paper/durumeric
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XEnsafi2015b&#34;&gt;
                    &lt;/a&gt;
                    Roya Ensafi, David Fifield,
                                  Philipp Winter,
                                  Nick Feamster, Nicholas Weaver, and Vern
                                  Paxson. Examining how the Great Firewall
                                  discovers hidden circumvention servers. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Internet Measurement Conference
                    &lt;/span&gt;
                    . ACM, 2015.
                    &lt;a class=&#34;url&#34; href=&#34;http://conferences2.sigcomm.org/imc/2015/papers/p445.pdf&#34;&gt;
                     http://conferences2.sigcomm.org/imc/2015/papers/p445.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xmeek-cyberoam&#34;&gt;
                    &lt;/a&gt;
                    David Fifield. Cyberoam firewall
                                  blocks meek by TLS signature.
                    &lt;a class=&#34;url&#34; href=&#34;https://groups.google.com/forum/#!topic/traffic-obf/BpFSCVgi5rs/&#34;&gt;
                     https://groups.google.com/forum/#!topic/traffic-obf/BpFSCVgi5rs/
                    &lt;/a&gt;
                    ,
                                  2016.
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XFifield2015a&#34;&gt;
                    &lt;/a&gt;
                    David Fifield, Chang Lan, Rod
                                  Hynes, Percy
                                  Wegmann, and Vern Paxson. Blocking-resistant
                                  communication through domain fronting.
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Privacy Enhancing Technologies
                    &lt;/span&gt;
                    , 2015(2), 2015.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.icir.org/vern/papers/meek-PETS-2015.pdf&#34;&gt;
                     https://www.icir.org/vern/papers/meek-PETS-2015.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XFifield2016a&#34;&gt;
                    &lt;/a&gt;
                    David Fifield and Lynn Tsai.
                                  Censors’ delay in
                                  blocking circumvention proxies. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Free and Open
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Communications on the Internet
                    &lt;/span&gt;
                    . USENIX, 2016.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci16/foci16-paper-fifield.pdf&#34;&gt;
                     https://www.usenix.org/system/files/conference/foci16/foci16-paper-fifield.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xmptcp&#34;&gt;
                    &lt;/a&gt;
                    A. Ford, C. Raiciu,
                                  M. Handley, O. Bonaventure, and C. Paasch. TCP
                                  Extensions for Multipath Operation with Multiple
                                  Addresses. RFC 8684, RFC Editor, March 2020.
                    &lt;a class=&#34;url&#34; href=&#34;https://tools.ietf.org/html/rfc8684&#34;&gt;
                     https://tools.ietf.org/html/rfc8684
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xoutline-changes&#34;&gt;
                    &lt;/a&gt;
                    Vinicius Fortuna. Outline
                                  changes
                                  since the prelinimary report, August 2020.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/22#issuecomment-670781627&#34;&gt;
                     https://github.com/net4people/bbs/issues/22#issuecomment-670781627
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xconjure&#34;&gt;
                    &lt;/a&gt;
                    Sergey Frolov, Jack Wampler, Sze Chuen
                                  Tan,
                                  J. Alex Halderman, Nikita Borisov, and Eric Wustrow.
                                  Conjure:
                                  Summoning proxies from unused address space. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Computer and Communications Security
                    &lt;/span&gt;
                    . ACM, 2019.
                    &lt;a class=&#34;url&#34; href=&#34;https://jhalderm.com/pub/papers/conjure-ccs19.pdf&#34;&gt;
                     https://jhalderm.com/pub/papers/conjure-ccs19.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XFrolov2020a&#34;&gt;
                    &lt;/a&gt;
                    Sergey Frolov, Jack Wampler, and
                                  Eric Wustrow. Detecting probe-resistant
                                  proxies. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Network and Distributed
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     System Security
                    &lt;/span&gt;
                    . The Internet Society, 2020.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.ndss-symposium.org/wp-content/uploads/2020/02/23087.pdf&#34;&gt;
                     https://www.ndss-symposium.org/wp-content/uploads/2020/02/23087.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xtlsfingerprint&#34;&gt;
                    &lt;/a&gt;
                    Sergey Frolov and Eric Wustrow.
                                  The use of
                                  TLS in censorship circumvention. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Network and
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Distributed System Security
                    &lt;/span&gt;
                    . The Internet Society,
                                  2019.
                    &lt;a class=&#34;url&#34; href=&#34;https://tlsfingerprint.io/static/frolov2019.pdf&#34;&gt;
                     https://tlsfingerprint.io/static/frolov2019.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XFrolov2020b&#34;&gt;
                    &lt;/a&gt;
                    Sergey Frolov and Eric Wustrow.
                                  HTTPT:
                                  A probe-resistant proxy. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Free and Open
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Communications on the Internet
                    &lt;/span&gt;
                    . USENIX, 2020.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/foci20-paper-frolov.pdf&#34;&gt;
                     https://www.usenix.org/system/files/foci20-paper-frolov.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xtwitter-blocking-announcement-en&#34;&gt;
                    &lt;/a&gt;
                    GFW Report.
                                  The GFW has now been
                                  able to dynamically block any seemingly
                                  random traffic in real time, November 2021.
                    &lt;a class=&#34;url&#34; href=&#34;https://twitter.com/gfw_report/status/1460796633571069955&#34;&gt;
                     https://twitter.com/gfw_report/status/1460796633571069955
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xtwitter-blocking-announcement-zh&#34;&gt;
                    &lt;/a&gt;
                    GFW Report. 有证据表明中国的防火长城已经对任何看似随机的流量进行动态的封锁, November 2021.
                    &lt;a class=&#34;url&#34; href=&#34;https://twitter.com/gfw_report/status/1460800856086003717&#34;&gt;
                     https://twitter.com/gfw_report/status/1460800856086003717
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XHoumansadr2013b&#34;&gt;
                    &lt;/a&gt;
                    Amir Houmansadr, Chad
                                  Brubaker, and Vitaly
                                  Shmatikov. The parrot is dead: Observing unobservable
                                  network communications. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Symposium on Security &amp;amp;
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Privacy
                    &lt;/span&gt;
                    . IEEE, 2013.
                    &lt;a class=&#34;url&#34; href=&#34;https://people.cs.umass.edu/~amir/papers/parrot.pdf&#34;&gt;
                     https://people.cs.umass.edu/~amir/papers/parrot.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xsssniff-isofew&#34;&gt;
                    &lt;/a&gt;
                    isofew. sssniff, 2017.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/isofew/sssniff&#34;&gt;
                     https://github.com/isofew/sssniff
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xlzr&#34;&gt;
                    &lt;/a&gt;
                    Liz Izhikevich, Renata Teixeira, and Zakir
                                  Durumeric. \(\{\)LZR\(\}\): Identifying unexpected internet
                                  services. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     30th USENIX Security Symposium
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     (USENIX Security 21)
                    &lt;/span&gt;
                    , pages 3111–3128, 2021.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/conference/usenixsecurity21/presentation/izhikevich&#34;&gt;
                     https://www.usenix.org/conference/usenixsecurity21/presentation/izhikevich
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xoutline&#34;&gt;
                    &lt;/a&gt;
                    Jigsaw. Outline.
                    &lt;a class=&#34;url&#34; href=&#34;https://getoutline.org/&#34;&gt;
                     https://getoutline.org/
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xoutline-v1.1.0&#34;&gt;
                    &lt;/a&gt;
                    Jigsaw. Outline v1.1.0.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/Jigsaw-Code/outline-ss-server/releases/tag/v1.1.0&#34;&gt;
                     https://github.com/Jigsaw-Code/outline-ss-server/releases/tag/v1.1.0
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xtor-cipher-list-ticket&#34;&gt;
                    &lt;/a&gt;
                    George Kadianakis. GFW
                                  probes based on tor’s ssl
                                  cipher list, 2011.
                    &lt;a class=&#34;url&#34; href=&#34;https://gitlab.torproject.org/legacy/trac/-/issues/4744&#34;&gt;
                     https://gitlab.torproject.org/legacy/trac/-/issues/4744
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xnaiveproxy&#34;&gt;
                    &lt;/a&gt;
                    klzgrad. NaïveProxy.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/klzgrad/naiveproxy&#34;&gt;
                     https://github.com/klzgrad/naiveproxy
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XLiang2020a&#34;&gt;
                    &lt;/a&gt;
                    Di Liang and Yongzhong He. Obfs4
                                  traffic
                                  identification based on multiple-feature fusion. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     2020
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     IEEE International Conference on Power, Intelligent
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Computing and Systems (ICPICS)
                    &lt;/span&gt;
                    , pages 323–327,
                                  2020.
                    &lt;a class=&#34;url&#34; href=&#34;https://ieeexplore.ieee.org/document/9202018&#34;&gt;
                     https://ieeexplore.ieee.org/document/9202018
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xsssniff-madeye&#34;&gt;
                    &lt;/a&gt;
                    madeye. sssniff, 2017.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/madeye/sssniff&#34;&gt;
                     https://github.com/madeye/sssniff
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xsagernet-salt&#34;&gt;
                    &lt;/a&gt;
                    nekohasekai. Add shadowsocks
                                  reducedIvHeadEntropy option, January 2022.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/SagerNet/v2ray-core/commit/27fad5daaa1c33ed1c928d6c447df983a88d14a3&#34;&gt;
                     https://github.com/SagerNet/v2ray-core/commit/27fad5daaa1c33ed1c928d6c447df983a88d14a3
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xactive-probing-ssh&#34;&gt;
                    &lt;/a&gt;
                    Leif Nixon. Some
                                  observations on the Great Firewall of China, November
                                  2011.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.nsc.liu.se/~nixon/sshprobes.html&#34;&gt;
                     https://www.nsc.liu.se/~nixon/sshprobes.html
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xpfring&#34;&gt;
                    &lt;/a&gt;
                    ntop. PF_RING: High-speed
                                  packet capture, filtering and analysis.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.ntop.org/products/packet-capture/pf_ring/&#34;&gt;
                     https://www.ntop.org/products/packet-capture/pf_ring/
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xpyasn&#34;&gt;
                    &lt;/a&gt;
                    pyasn developers. pyasn.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/hadiasghari/pyasn&#34;&gt;
                     https://github.com/hadiasghari/pyasn
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xrfc8446-tls13-hello&#34;&gt;
                    &lt;/a&gt;
                    Eric Rescorla. The
                                  Transport Layer Security
                                  (TLS) Protocol Version 1.3. RFC 8446, August 2018.
                    &lt;a class=&#34;url&#34; href=&#34;https://datatracker.ietf.org/doc/html/rfc8446#section-4.1.2&#34;&gt;
                     https://datatracker.ietf.org/doc/html/rfc8446#section-4.1.2
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xrfc5246-appendixE&#34;&gt;
                    &lt;/a&gt;
                    Eric Rescorla and Tim
                                  Dierks. The
                                  Transport Layer Security (TLS) Protocol
                                  Version 1.2. RFC 5246, August 2008.
                    &lt;a class=&#34;url&#34; href=&#34;https://datatracker.ietf.org/doc/html/rfc5246#appendix-E&#34;&gt;
                     https://datatracker.ietf.org/doc/html/rfc5246#appendix-E
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xshadowsocks-rust&#34;&gt;
                    &lt;/a&gt;
                    Shadowsocks rust developers.
                                  Shadowsocks-rust.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/shadowsocks/shadowsocks-rust&#34;&gt;
                     https://github.com/shadowsocks/shadowsocks-rust
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xtor-block-ethiopia-ciphers&#34;&gt;
                    &lt;/a&gt;
                    Runa Sandvik.
                                  Ethiopia
                                  introduces deep packet inspection.
                    &lt;a class=&#34;url&#34; href=&#34;https://blog.torproject.org/ethiopia-introduces-deep-packet-inspection&#34;&gt;
                     https://blog.torproject.org/ethiopia-introduces-deep-packet-inspection
                    &lt;/a&gt;
                    ,
                                  2012.
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xoutline-salt&#34;&gt;
                    &lt;/a&gt;
                    Benjamin M. Schwartz and Vinicius
                                  Fortuna.
                                  feat: salt prefix support, November 2022.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/Jigsaw-Code/outline-client/pull/1454&#34;&gt;
                     https://github.com/Jigsaw-Code/outline-client/pull/1454
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XTschantz2016a&#34;&gt;
                    &lt;/a&gt;
                    Michael Carl Tschantz, Sadia
                                  Afroz, Anonymous,
                                  and Vern Paxson. SoK: Towards grounding
                                  censorship circumvention in empiricism. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Symposium on Security &amp;amp; Privacy
                    &lt;/span&gt;
                    . IEEE, 2016.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.eecs.berkeley.edu/~sa499/papers/oakland2016.pdf&#34;&gt;
                     https://www.eecs.berkeley.edu/~sa499/papers/oakland2016.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xgeph4-sosistab&#34;&gt;
                    &lt;/a&gt;
                    Eric Tung. Geph4
                                  sosistab - an obfuscated datagram transport for horrible
                                  networks.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/geph-official/sosistab&#34;&gt;
                     https://github.com/geph-official/sosistab
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xv2ray&#34;&gt;
                    &lt;/a&gt;
                    V2Ray developers. V2Ray.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/v2fly/v2ray-core&#34;&gt;
                     https://github.com/v2fly/v2ray-core
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XVanderSloot2018a&#34;&gt;
                    &lt;/a&gt;
                    Benjamin VanderSloot, Allison
                                  McDonald,
                                  Will Scott, J. Alex Halderman, and Roya
                                  Ensafi. Quack: Scalable remote measurement
                                  of application-layer censorship. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     USENIX
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Security Symposium
                    &lt;/span&gt;
                    . USENIX, 2018.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/usenixsecurity18/sec18-vandersloot.pdf&#34;&gt;
                     https://www.usenix.org/system/files/conference/usenixsecurity18/sec18-vandersloot.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XWang2015a&#34;&gt;
                    &lt;/a&gt;
                    Liang Wang, Kevin P. Dyer, Aditya
                                  Akella,
                                  Thomas Ristenpart, and Thomas Shrimpton.
                                  Seeing through network-protocol obfuscation. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Computer and Communications Security
                    &lt;/span&gt;
                    . ACM, 2015.
                    &lt;a class=&#34;url&#34; href=&#34;http://pages.cs.wisc.edu/~liangw/pub/ccsfp653-wangA.pdf&#34;&gt;
                     http://pages.cs.wisc.edu/~liangw/pub/ccsfp653-wangA.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xv2ray-salt&#34;&gt;
                    &lt;/a&gt;
                    Xiaokang Wang. Shadowsockets
                                  reduecd IV head
                                  entropy experiment, January 2022.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/v2fly/v2ray-core/pull/1552&#34;&gt;
                     https://github.com/v2fly/v2ray-core/pull/1552
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XWang2017a&#34;&gt;
                    &lt;/a&gt;
                    Zhongjie Wang, Yue Cao, Zhiyun Qian,
                                  Chengyu
                                  Song, and Srikanth V. Krishnamurthy. Your state is
                                  not mine: A closer look at evading stateful Internet
                                  censorship. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Internet Measurement Conference
                    &lt;/span&gt;
                    .
                                  ACM, 2017.
                    &lt;a class=&#34;url&#34; href=&#34;http://www.cs.ucr.edu/~krish/imc17.pdf&#34;&gt;
                     http://www.cs.ucr.edu/~krish/imc17.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xknock-knock-tor&#34;&gt;
                    &lt;/a&gt;
                    Tim Wilde. Knock knock
                                  knockin’ on bridges’ doors, 2012.
                    &lt;a class=&#34;url&#34; href=&#34;https://blog.torproject.org/blog/knock-knock-knockin-bridges-doors&#34;&gt;
                     https://blog.torproject.org/blog/knock-knock-knockin-bridges-doors
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xiran-shadowsocks-not-working&#34;&gt;
                    &lt;/a&gt;
                    WinkVPN,
                                  GibMeMyPacket, wkrp, et al.
                                  Shadowsocks blocked in Iran?, October 2022.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/142#issuecomment-1289393093&#34;&gt;
                     https://github.com/net4people/bbs/issues/142#issuecomment-1289393093
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XWinter-obfs2-probe&#34;&gt;
                    &lt;/a&gt;
                    Philipp Winter. GFW
                                  actively probes obfs2bridges,
                                  March 2013.
                    &lt;a class=&#34;url&#34; href=&#34;https://bugs.torproject.org/8591&#34;&gt;
                     https://bugs.torproject.org/8591
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XWinter2012a&#34;&gt;
                    &lt;/a&gt;
                    Philipp Winter and Stefan
                                  Lindskog. How the Great
                                  Firewall of China is blocking Tor. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Free and Open
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Communications on the Internet
                    &lt;/span&gt;
                    . USENIX, 2012.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci12/foci12-final2.pdf&#34;&gt;
                     https://www.usenix.org/system/files/conference/foci12/foci12-final2.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XWinter2013b&#34;&gt;
                    &lt;/a&gt;
                    Philipp Winter, Tobias Pulls, and
                                  Juergen Fuss.
                                  ScrambleSuit: A polymorphic network protocol to
                                  circumvent censorship. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Workshop on Privacy in the
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Electronic Society
                    &lt;/span&gt;
                    . ACM, 2013.
                    &lt;a class=&#34;url&#34; href=&#34;https://censorbib.nymity.ch/pdf/Winter2013b.pdf&#34;&gt;
                     https://censorbib.nymity.ch/pdf/Winter2013b.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XXspeed2021&#34;&gt;
                    &lt;/a&gt;
                    xspeed, Vinicius Fortuna, et al. I
                                  think
                                  SS is detected by GFW, November 2021.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/shadowsocks/shadowsocks-libev/issues/2860#issuecomment-974250511&#34;&gt;
                     https://github.com/shadowsocks/shadowsocks-libev/issues/2860#issuecomment-974250511
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XHe2019a&#34;&gt;
                    &lt;/a&gt;
                    He Yongzhong, Hu Liping,
                                  and Gao Rui. Detection of Tor traffic hiding
                                  under obfs4 protocol based on two-level filtering.
                                  In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     2019 2nd International Conference on Data
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Intelligence and Security (ICDIS)
                    &lt;/span&gt;
                    , pages 195–200,
                                  2019.
                    &lt;a class=&#34;url&#34; href=&#34;https://ieeexplore.ieee.org/document/8855280&#34;&gt;
                     https://ieeexplore.ieee.org/document/8855280
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xshadowsocks-rust-v1.8.5&#34;&gt;
                    &lt;/a&gt;
                    zonyitoo.
                                  Shadowsocks-rust v1.8.5.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/shadowsocks/shadowsocks-rust/releases/tag/v1.8.5&#34;&gt;
                     https://github.com/shadowsocks/shadowsocks-rust/releases/tag/v1.8.5
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xshadowsocks-rust-salt&#34;&gt;
                    &lt;/a&gt;
                    zonyitoo. Security:
                                  First 6 bytes of payload
                                  should be printable characters, January 2022.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/shadowsocks/shadowsocks-rust/commit/53aab484f8daba6f5cee6896b034af943cc3d406&#34;&gt;
                     https://github.com/shadowsocks/shadowsocks-rust/commit/53aab484f8daba6f5cee6896b034af943cc3d406
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
            &lt;/ol&gt;
        &lt;/div&gt;
        &lt;!-- l. 13 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h2 class=&#34;sectionHead&#34;, id=&#34;sec:other-circumvention-strategies&#34;&gt;
            &lt;a id=&#34;sec:other-circumvention-strategies&#34; href=&#34;#sec:other-circumvention-strategies&#34;&gt;
                &lt;span class=&#34;titlemark&#34;&gt;A &lt;/span&gt; Other Stopgap Circumvention Strategies
            &lt;/a&gt;
        &lt;/h2&gt;
        &lt;!-- l. 16 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;Use a non-TCP transport protocol. &lt;/b&gt;As introduced
            in &lt;a href=&#34;#sec:residual&#34;&gt;Section 4.4&lt;/a&gt;, UDP traffic does not trigger blocking. Currently,
            one can circumvent censorship by simply switching to (or
            tunneling over) UDP or QUIC. This is merely a stopgap measure,
            as the censor can enable their censorship for UDP.
        &lt;/p&gt;&lt;!-- l. 27 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;Base64-encode the first packet. &lt;/b&gt;Recall that the GFW
            does not censor connections if more than 50% of the first
            packet’s bytes are printable ASCII. One straightforward way to
            satisfy this property would be to simply base64-encode all of
            the encrypted traffic. This, too, is only a stopgap solution;
            base64-encoded data is easy to detect, and the censor could
            simply base64-decode and then apply its rules. Although it is
            effective against the GFW today, we do not consider it as a
            long-term solution.
        &lt;/p&gt;&lt;!-- l. 42 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;More than 20 contiguous bytes of printable ASCII. &lt;/b&gt;The
            GFW exempts connections if the first packet has more than 20
            contiguous bytes of printable ASCII. One way to satisfy this is to
            base64-encode only a small portion of the fully-encrypted
            packet—or even just insert at least 21 printable ASCII characters
            into the ciphertext. While we believe this would be more difficult
            to detect than base64-encoded the entire packet, it also strikes us
            as a short-term stopgap.


        &lt;/p&gt;&lt;!-- l. 56 --&gt;
        &lt;p class=&#34;indent&#34;&gt; All of the above countermeasures can be implemented on the
            client-side only, without requiring support from the proxy server.
            This is possible by applying an idea from prior work &lt;span class=&#34;cite&#34;&gt;[&lt;a
                    href=&#34;#XBock2020Iran&#34;&gt;12&lt;/a&gt;]&lt;/span&gt;:
            sending a packet such as the ones described above that gets
            processed by the censor but &lt;em&gt;not&lt;/em&gt;  by the proxy. For instance, prior
            to sending the &lt;em&gt;actual&lt;/em&gt;  first packet of the connection, the client
            could send a packet that satisfies one of the above rules
            but that has a broken checksum (which the censor will not
            check, but the proxy will) or a limited TTL (large enough to reach the censor but not the destination).
            While these
            techniques were first verified against Iran’s Protocol Filter, we
            have verified that these same approaches work against the
            GFW’s blocking of fully encrypted traffic. Although this
            provides an encouragingly easy path for deployment, it alone
            does not elevate these stopgap solutions to longer-term
            ones.
        &lt;/p&gt;

        &lt;!-- There really shouldn&#39;t be any extra &lt;/div&gt; which will close the &lt;div class=&#34;js-toc-cotent&#34;&gt; and make comments section not indexed by ToC JS script. --&gt;</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>中国的防火长城是如何检测和封锁完全加密流量的</title>
        <link>https://gfw.report/publications/usenixsecurity23/zh/</link>
        <pubDate>Fri, 28 Apr 2023 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/publications/usenixsecurity23/zh/</guid>
        
        <description>&lt;!-- use CSS file --&gt;

&lt;!-- Used to render latex syntax --&gt;
&lt;script type=&#34;text/javascript&#34; async
  src=&#34;https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML&#34;&gt;
&lt;/script&gt;

&lt;!-- Used to render Table of Content --&gt;
&lt;link href=&#34;./css/tocbot.css&#34; rel=&#39;stylesheet&#39; type=&#39;text/css&#39; /&gt;
&lt;script src=&#34;./js/tocbot.min.js&#34;&gt;&lt;/script&gt;
&lt;script&gt;
    document.addEventListener(&#39;DOMContentLoaded&#39;, function() {
    tocbot.init({
        tocSelector: &#39;.js-toc&#39;,
        contentSelector: &#39;.js-toc-content&#39;,
        headingSelector: &#39;h2, h3&#39;,
        collapseDepth: 3,
        activeLinkClass: &#39;&#39;
    });
    });
&lt;/script&gt;

&lt;h1 class=&#34;titleHead&#34;&gt;中国的防火长城是如何检测和封锁完全加密流量的&lt;/h1&gt;

        &lt;div class=&#34;authors&#34;&gt;
            &lt;div class=&#34;author&#34;&gt;
                &lt;p class=&#34;author-name&#34;&gt;Mingshi Wu&lt;/p&gt;
                &lt;p class=&#34;author-affiliation&#34;&gt;GFW Report&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&#34;author&#34;&gt;
                &lt;p class=&#34;author-name&#34;&gt;Jackson Sippe&lt;/p&gt;
                &lt;p class=&#34;author-affiliation&#34;&gt;University of Colorado Boulder&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&#34;author&#34;&gt;
                &lt;p class=&#34;author-name&#34;&gt;Danesh Sivakumar&lt;/p&gt;
                &lt;p class=&#34;author-affiliation&#34;&gt;University of Maryland&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&#34;author&#34;&gt;
                &lt;p class=&#34;author-name&#34;&gt;Jack Burg&lt;/p&gt;
                &lt;p class=&#34;author-affiliation&#34;&gt;University of Maryland&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&#34;author&#34;&gt;
                &lt;p class=&#34;author-name&#34;&gt;Peter Anderson&lt;/p&gt;
                &lt;p class=&#34;author-affiliation&#34;&gt;Independent researcher&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&#34;author&#34;&gt;
                &lt;p class=&#34;author-name&#34;&gt;Xiaokang Wang&lt;/p&gt;
                &lt;p class=&#34;author-affiliation&#34;&gt;V2Ray Project&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&#34;author&#34;&gt;
                &lt;p class=&#34;author-name&#34;&gt;Kevin Bock&lt;/p&gt;
                &lt;p class=&#34;author-affiliation&#34;&gt;University of Maryland&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&#34;author&#34;&gt;
                &lt;p class=&#34;author-name&#34;&gt;Amir Houmansadr&lt;/p&gt;
                &lt;p class=&#34;author-affiliation&#34;&gt;University of Massachusetts Amherst&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&#34;author&#34;&gt;
                &lt;p class=&#34;author-name&#34;&gt;Dave Levin&lt;/p&gt;
                &lt;p class=&#34;author-affiliation&#34;&gt;University of Maryland&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&#34;author&#34;&gt;
                &lt;p class=&#34;author-name&#34;&gt;Eric Wustrow&lt;/p&gt;
                &lt;p class=&#34;author-affiliation&#34;&gt;University of Colorado Boulder&lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;!-- Table of Contents place holder --&gt;
        &lt;div class=&#34;js-toc&#34;&gt;&lt;/div&gt;

        &lt;h2 class=&#34;section&#34;, id=&#34;abstract&#34;&gt;&lt;a id=&#34;abstract&#34; href=&#34;#abstract&#34;&gt;摘要&lt;/a&gt;&lt;/h2&gt;

            &lt;p class=&#34;indent&#34;&gt;
                全加密协议是翻墙生态系统中的一块基石。这类协议对数据包有效载荷的&lt;em&gt;每一个&lt;/em&gt;字节都进行了加密，以期让流量&#34;看起来什么都不像&#34;。2021年11月初，中国的防火长城（GFW）部署了一种新的审查技术，这种技术可以实时地被动检测并阻断全加密流量。GFW这一新添的审查能力影响到一大批流行的翻墙协议，包括但不限于Shadowsocks、VMess和Obfs4。虽然中国长期以来一直采用&lt;em&gt;主动&lt;/em&gt;探测来识别此类协议，但这次是第一次有关于采用&lt;em&gt;纯被动&lt;/em&gt;检测来识别全加密流量的报告。面对这一新的现象，反审查社区不禁要问检测是如何做到的。            &lt;/p&gt;

            &lt;p class=&#34;indent&#34;&gt;在这篇论文中，我们测量并描述了GFW用于审查完全加密流量的新系统。我们发现，审查者并没有直接定义什么是完全加密流量，而是应用&lt;em&gt;粗糙但高效的启发式规则&lt;/em&gt;来豁免那些不太可能是完全加密的流量；然后它阻止其余未被豁免的流量。这些启发式规则基于常见协议的指纹、1比特的占比以及可打印的ASCII字符的数量、比例和位置。我们对互联网进行扫描，并揭示了GFW都检查哪些流量和哪些IP地址。我们在一个大学网络的实时流量上模拟我们推断出的GFW的检测算法，以评估其全面性和误报率。结果表明，我们推断出的检测规则很好地覆盖了GFW实际使用的检测规则。 我们估计，如果这一检测算法被广泛地应用，它将有可能误伤大约0.6%的非翻墙互联网流量。            &lt;/p&gt;

           &lt;!-- l. 29 --&gt;
            &lt;p class=&#34;indent&#34;&gt;我们对GFW的新审查机制的理解帮助我们得出了几个实用的规避封锁的策略。我们负责任地将我们的发现和建议透露给不同的反审查工具的开发者，从而帮助数以百万计的用户成功绕开了这种新的封锁。            &lt;/p&gt;


        &lt;h2 class=&#34;sectionHead&#34;, id=&#34;1&#34;&gt;&lt;a id=&#34;sec:intro&#34; href=&#34;#sec:intro&#34;&gt;1 引言&lt;/a&gt;&lt;/h2&gt;
       &lt;!-- l. 4 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;完全加密的翻墙协议是翻墙生态系统中的一块基石。不同于像TLS这样的协议以明文握手开始，完全加密（随机化）的协议--如VMess &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xvmess&#34;&gt;23&lt;/a&gt;]&lt;/span&gt;、Shadowsocks &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xshadowsocks&#34;&gt;22&lt;/a&gt;]&lt;/span&gt;和Obfs4 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xobfs4&#34;&gt;7&lt;/a&gt;]&lt;/span&gt;--被设计成连接中的&lt;em&gt;每个&lt;/em&gt;字节都与随机数据没有区别。这些 &#34;看起来什么都不像 &#34;的协议的设计理念是，它们应该很难被审查者抓住特征，因此阻断的成本很高。        &lt;/p&gt;&lt;!-- l. 16 --&gt;
        &lt;p class=&#34;indent&#34;&gt;2021年11月6日，中国的互联网用户报告说他们的Shadowsocks和VMess服务器被封锁了 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAnonymous2021Shadowsocks&#34;&gt;10&lt;/a&gt;]&lt;/span&gt;。 11月8日，一个Outline &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xoutline&#34;&gt;42&lt;/a&gt;]&lt;/span&gt;开发者报告说来自中国的使用量突然下降 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XXspeed2021&#34;&gt;69&lt;/a&gt;]&lt;/span&gt;。这次封锁的开始时间恰逢2021年11月8日至11日召开的中国共产党第十九届中央委员会第六次全体会议 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XWikipediaSixthPlenary&#34;&gt;4&lt;/a&gt;，&lt;a href=&#34;#XWikipedia19CPC&#34;&gt;1&lt;/a&gt;]&lt;/span&gt;。能够封锁这些翻墙工具代表中国的防火长城（GFW）具备了一种全新的新能力。据我们所知，虽然中国自2019年5月以来一直在采用被动流量分析和主动探测相结合的方式来识别Shadowsocks服务器 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;，但这是审查者第一次能够&lt;em&gt;仅基于被动流量分析&lt;/em&gt;，就实时地大规模封锁完全加密的代理。全加密协议对整个反审查生态系统的重要性以及GFW的未知行为，促使我们去探索和了解检测和封锁的机制原理。        &lt;/p&gt;&lt;!-- l. 32 --&gt;
        &lt;p class=&#34;indent&#34;&gt;在这项工作中，我们对GFW被动检测和封锁全加密流量的新系统进行了测量和描述。我们发现，审查者没有直接定义什么是完全加密的流量，而是应用了至少五条&lt;em&gt;粗糙但高效的启发式规则&lt;/em&gt;来豁免那些不太可能是完全加密的流量；然后，它阻止其余未豁免的流量。这些豁免规则基于常见的协议指纹、基于1比特比例的粗略熵测试、以及第一个TCP数据包的有效载荷中可打印的ASCII字符的比例、位置和最大连续数。        &lt;/p&gt;&lt;!-- l. 42 --&gt;
        &lt;p class=&#34;indent&#34;&gt;由于GFW的黑箱性质，我们推断出的规则可能并不详尽；但是我们使用科罗拉多大学博尔德分校的实时网络流量，对我们推断出的检测规则进行了评估。有证据表明我们推断出的规则与GFW实际使用的规则间有非常大的重叠。我们还发现，推断出的检测算法会阻断大学网络中所有连接的大约0.6%。 可能是为了减轻假阳性引起的封锁误伤，我们的互联网扫描显示，GFW策略性地只监控26%的连接，而且只监控发往流行数据中心的特定IP范围的连接。        &lt;/p&gt;&lt;!-- l. 60 --&gt;
        &lt;p class=&#34;indent&#34;&gt;我们还分析了这种新形式的被动封锁与GFW广为人知的主动探测系统 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;之间的关系。二者是独立运行的。我们发现，主动探测系统也依赖于这种流量分析算法，并额外应用了一条基于数据包长度的豁免规则。因此，能够逃避这种新的封锁的规避策略，也可以帮助防止GFW识别并随后主动探测代理服务器。        &lt;/p&gt;&lt;!-- l. 72 --&gt;
        &lt;p class=&#34;indent&#34;&gt;我们从对这种新审查技术的理解中得出了各种规避策略。我们负责任且及时地与各种流行的反审查工具的开发者分享了我们的发现和规避建议，包括Shadowsocks &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xshadowsocks&#34;&gt;22&lt;/a&gt;]&lt;/span&gt;, V2Ray &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xv2ray&#34;&gt;59&lt;/a&gt;]&lt;/span&gt;, Outline &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xoutline&#34;&gt;42&lt;/a&gt;]&lt;/span&gt;, Lantern &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xlantern&#34;&gt;20&lt;/a&gt;]&lt;/span&gt;, Psiphon &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xpsiphon3&#34;&gt;21&lt;/a&gt;]&lt;/span&gt;, 和Conjure &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xconjure&#34;&gt;33&lt;/a&gt;]&lt;/span&gt;的开发者。自2022年1月以来，这些规避策略被广泛采用和部署，已帮助&lt;em&gt;数百万用户&lt;/em&gt;绕过这一新的封锁技术。据反馈，截至2023年2月，这些工具采用的所有规避策略在中国&lt;em&gt;仍然有效&lt;/em&gt;。        &lt;/p&gt;

        &lt;h2 class=&#34;sectionHead&#34;, id=&#34;2&#34;&gt; &lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:background&#34; href=&#34;#sec:background&#34;&gt;2 背景&lt;/a&gt;&lt;/h2&gt;
       &lt;!-- l. 4 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;2.1&#34;&gt; &lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:background-circumvention-protocols&#34; href=&#34;#sec:background-circumvention-protocols&#34;&gt;2.1 流量混淆策略&lt;/a&gt;&lt;/h3&gt;
       &lt;!-- l. 7 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;Tschantz等人将混淆翻墙流量的方法分为两类：&lt;em&gt;隐写(steganography)&lt;/em&gt;和&lt;em&gt;多态(polymorphism)&lt;/em&gt;  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XTschantz2016a&#34;&gt;57&lt;/a&gt;, § V]&lt;/span&gt;。隐写代理的目标是使翻墙流量看起来像应该被允许的流量；多态性的目标是使翻墙流量看起来不像应该被禁止的流量。        &lt;/p&gt;&lt;!-- l. 13 --&gt;
        &lt;p class=&#34;indent&#34;&gt;实现隐写术的两种最常见的方法是&lt;em&gt;模仿(mimicking)&lt;/em&gt;和&lt;em&gt;隧道传输(tunneling)&lt;/em&gt;。Houmansadr等人 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XHoumansadr2013b&#34;&gt;39&lt;/a&gt;]&lt;/span&gt;得出结论，模仿类协议有着根本性的缺陷，并指出将原始流量通过被允许的协议进行隧道传输是一种更抗封锁的方法。Frolov和Wustrow二人 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xtlsfingerprint&#34;&gt;35&lt;/a&gt;]&lt;/span&gt;证明，即使使用隧道传输，翻墙软件的设计者仍然需要额外的努力让翻墙协议的指纹与流行的实现方式的指纹保持完全一致，以避免受到基于协议指纹的封锁。例如，在2012年，中国和埃塞俄比亚部署了深度包检测系统，通过Tor使用的不常见的密码套件来检测Tor流量 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xtor-cipher-list-ticket&#34;&gt;44&lt;/a&gt;,&lt;a href=&#34;#XWinter2012a&#34;&gt;67&lt;/a&gt;,&lt;a href=&#34;#Xtor-block-ethiopia-ciphers&#34;&gt;55&lt;/a&gt;]&lt;/span&gt;。审查设备供应商之前已经根据&lt;code&gt;meek&lt;/code&gt;  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XFifield2015a&#34;&gt;29&lt;/a&gt;]&lt;/span&gt;发出的TLS指纹和SNI值来识别并封锁它了 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xmeek-cyberoam&#34;&gt;28&lt;/a&gt;]&lt;/span&gt;。        &lt;/p&gt;&lt;!-- l. 26 --&gt;
        &lt;p class=&#34;indent&#34;&gt;为了避免这种复杂性，许多流行的翻墙软件选择了多态的设计。实现多态性的一个常见方法是，从连接中的第一个数据包开始，就对其有效载荷进行完全加密。由于没有任何明文或固定的包头结构指纹，审查者没办法简单地使用正则表达式或通过寻找流量中的特定模式来识别代理流量。这种设计在2009年首次被引入Obfuscated OpenSSH &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xobfuscated-openssh&#34;&gt;16&lt;/a&gt;]&lt;/span&gt;。此后，Obfsproxy &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xobfsproxy&#34;&gt;24&lt;/a&gt;]&lt;/span&gt;、Shadowsocks &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xshadowsocks&#34;&gt;22&lt;/a&gt;]&lt;/span&gt;、Outline &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xoutline&#34;&gt;42&lt;/a&gt;]&lt;/span&gt;、VMess &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xvmess&#34;&gt;23&lt;/a&gt;]&lt;/span&gt;、ScrambleSuit &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XWinter2013b&#34;&gt;68&lt;/a&gt;]&lt;/span&gt;、Obfs4 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xobfs4&#34;&gt;7&lt;/a&gt;]&lt;/span&gt;都采用了这种设计。Geph4 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xgeph4-sosistab&#34;&gt;58&lt;/a&gt;]&lt;/span&gt;、Lantern &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xlantern&#34;&gt;20&lt;/a&gt;]&lt;/span&gt;、Psiphon3 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xpsiphon3&#34;&gt;21&lt;/a&gt;]&lt;/span&gt;和Conjure &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xconjure&#34;&gt;33&lt;/a&gt;]&lt;/span&gt;也部分采用这种设计。        &lt;/p&gt;&lt;!-- l. 36 --&gt;
        &lt;p class=&#34;indent&#34;&gt;完全加密的流量经常被称为“看起来什么都不像”的流量，又或者被误解为“没有特征”；然而，更准确的描述应该是&#34;看起来像随机数据&#34;。事实上，这种流量确实有一个使其与其他流量不同的重要特点：&lt;em&gt;完全加密的流量与随机流量是无法区分的&lt;/em&gt;。由于没有可识别的头，整个连接中的流量都是均匀且高熵的，甚至在第一个数据包中就已经如此。相比之下，即使像TLS这样的加密协议也还有相对低熵的握手包，用以传达支持的版本和扩展。        &lt;/p&gt;&lt;!-- l. 48 --&gt;
        &lt;p class=&#34;indent&#34;&gt;2015年，Wang等人 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XWang2015a&#34;&gt;61&lt;/a&gt;，§5.1]&lt;/span&gt;利用连接中第一个数据包有效载荷的长度和高香农熵的特点来识别随机流量，比如Obfs4。同样，在2017年，Zhixin Wang发布了一个概念验证工具，其使用连接中前三个数据包有效载荷的高香农熵来识别Shadowsocks流量 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xsssniff-isofew&#34;&gt;40&lt;/a&gt;]&lt;/span&gt;。Madeye扩展了该工具，额外使用有效载荷长度分布来检测ShadowsocksR流量 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xsssniff-madeye&#34;&gt;47&lt;/a&gt;]&lt;/span&gt;。He等人 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XHe2019a&#34;&gt;70&lt;/a&gt;，§IV.A]&lt;/span&gt;和Liang等人 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XLiang2020a&#34;&gt;46&lt;/a&gt;，§II.A]&lt;/span&gt;使用单比特频率检测算法，而不是香农熵，来衡量Obfs4流量的随机性。2019年，Alice等人发现，GFW使用每个连接中第一个数据包的长度和熵来怀疑Shadowsocks流量 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;。        &lt;/p&gt;&lt;!-- l. 63 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;2.2&#34;&gt; &lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:background-active-probing&#34; href=&#34;#sec:background-active-probing&#34;&gt;2.2 主动探测攻击及其防御措施&lt;/a&gt;&lt;/h3&gt;
       &lt;!-- l. 89 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;在&lt;em&gt;主动探测&lt;/em&gt;攻击中，审查者向被怀疑的服务器发送精心制作的有效载荷，并测量它的反应。如果服务器以与众不同的方式回应这些探测（例如让审查者将其作为代理使用），审查者就可以识别并封锁它。 早在2011年8月，人们观察到GFW向接受过来自中国的SSH登录的外国SSH服务器发送看似随机的有效载荷 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xactive-probing-ssh&#34;&gt;49&lt;/a&gt;]&lt;/span&gt;。2012年，GFW首先寻找一个独特的TLS密码来怀疑Tor流量；然后向可疑的服务器发送主动探测，以确认其猜测 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XWinter2012a&#34;&gt;67&lt;/a&gt;,&lt;a href=&#34;#XWinter-obfs2-probe&#34;&gt;66&lt;/a&gt;,&lt;a href=&#34;#Xknock-knock-tor&#34;&gt;64&lt;/a&gt;]&lt;/span&gt;。2015年，Ensafi等人对GFW针对各种协议的主动探测攻击进行了详细分析 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XEnsafi2015b&#34;&gt;27&lt;/a&gt;]&lt;/span&gt;。自2019年5月起，中国部署了一个审查系统，分两步检测和封锁Shadowsocks服务器：它首先使用每个连接中第一个数据包有效载荷的长度和熵来被动地识别可能的Shadowsocks流量，然后在分阶段地向可疑的服务器发送各种探针，以确认其猜测 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;。作为回应，研究人员提出了各种针对主动探测攻击的防御措施，包括让服务器对各种连接的反应保持一致 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XFrolov2020a&#34;&gt;34&lt;/a&gt;，&lt;a href=&#34;#XAnonymous2021ShadowsocksAdvise&#34;&gt;9&lt;/a&gt;]&lt;/span&gt;和&lt;em&gt;应用前置&lt;/em&gt;  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xnaiveproxy&#34;&gt;45&lt;/a&gt;，&lt;a href=&#34;#XFrolov2020b&#34;&gt;36&lt;/a&gt;]&lt;/span&gt;。
                    Shadowsocks、Outline和V2Ray都采用了&lt;em&gt;防主动探测&lt;/em&gt;的设计 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XFrolov2020a&#34;&gt;34&lt;/a&gt;,&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;,&lt;a href=&#34;#XShadowsocks2022-spec&#34;&gt;19&lt;/a&gt;,&lt;a href=&#34;#Xoutline-v1.1.0&#34;&gt;43&lt;/a&gt;,&lt;a href=&#34;#Xoutline-changes&#34;&gt;32&lt;/a&gt;,&lt;a href=&#34;#Xshadowsocks-rust-v1.8.5&#34;&gt;71&lt;/a&gt;]&lt;/span&gt;，使得它们自2020年9月以来在中国就没再被封锁过 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;，直到最近在2021年11月被再次封锁 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAnonymous2021Shadowsocks&#34;&gt;10&lt;/a&gt;]&lt;/span&gt;。        &lt;/p&gt;&lt;!-- l. 1 --&gt;
        &lt;p class=&#34;indent&#34;&gt; &lt;/p&gt;

	&lt;h2 class=&#34;sectionHead&#34;, id=&#34;3&#34;&gt; &lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:methodology&#34; href=&#34;#sec:methodology&#34;&gt;3 方法&lt;/a&gt;&lt;/h2&gt;

       &lt;!-- l. 15 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;我们在中国境内外的主机之间制作并发送各种测试探针，让它们被GFW观察到。我们在两个端点主机上抓包并比较流量，来观察GFW的反应。这种记录使我们能够识别任何被丢弃或被操纵的数据包，包括主动探测。        &lt;/p&gt;&lt;!-- l. 77 --&gt;



    &lt;/p&gt;&lt;!-- l. 1 --&gt;
    &lt;p class=&#34;indent&#34;&gt; &lt;/p&gt;
    &lt;figure class=&#34;table&#34; id=&#34;table:exp-summary&#34;&gt;
        &lt;div class=&#34;tabular&#34;&gt;
            &lt;table class=&#34;tabular&#34;&gt;
                &lt;colgroup id=&#34;TBL-2-1g&#34;&gt;
                    &lt;col id=&#34;TBL-2-1&#34; /&gt;
                &lt;/colgroup&gt;
                &lt;colgroup id=&#34;TBL-2-2g&#34;&gt;
                    &lt;col id=&#34;TBL-2-2&#34; /&gt;
                &lt;/colgroup&gt;
                &lt;colgroup id=&#34;TBL-2-3g&#34;&gt;
                    &lt;col id=&#34;TBL-2-3&#34; /&gt;
                &lt;/colgroup&gt;
                &lt;colgroup id=&#34;TBL-2-4g&#34;&gt;
                    &lt;col id=&#34;TBL-2-4&#34; /&gt;
                &lt;/colgroup&gt;
                &lt;colgroup id=&#34;TBL-2-5g&#34;&gt;
                    &lt;col id=&#34;TBL-2-5&#34; /&gt;
                &lt;/colgroup&gt;
                &lt;tr id=&#34;TBL-2-1-&#34;&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-1-1&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
                        &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;实验名称&lt;/span&gt;&lt;/div&gt;
                    &lt;/td&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-1-2&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
                        &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;时间跨度&lt;/span&gt;&lt;/div&gt;
                    &lt;/td&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-1-3&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
                        &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;中国节点&lt;/span&gt;&lt;/div&gt;
                    &lt;/td&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-1-4&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
                        &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;美国节点&lt;/span&gt;&lt;/div&gt;
                    &lt;/td&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-1-5&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
                        &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;章节&lt;/span&gt;&lt;/div&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr class=&#34;hline&#34;&gt;
                    &lt;td&gt;
                        &lt;hr /&gt;
                    &lt;/td&gt;
                    &lt;td&gt;
                        &lt;hr /&gt;
                    &lt;/td&gt;
                    &lt;td&gt;
                        &lt;hr /&gt;
                    &lt;/td&gt;
                    &lt;td&gt;
                        &lt;hr /&gt;
                    &lt;/td&gt;
                    &lt;td&gt;
                        &lt;hr /&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#34;TBL-2-2-&#34;&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-2-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;特征化测量 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-2-2&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;2021年11月6日 – 2022年5月18日 （6个月） &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-2-3&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;3 (TC, BJ),1 (Ali, BJ) &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-2-4&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;3 (DO, SFO) &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-2-5&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;§&lt;/span&gt;&lt;a href=&#34;#sec:reverse-engineering&#34;&gt;&lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;4&lt;/span&gt;&lt;!-- tex4ht:ref: sec:reverse-engineering  --&gt;&lt;/a&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#34;TBL-2-3-&#34;&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-3-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;复现实验 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-3-2&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;2023年2月16日 （1天） &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-3-3&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;1 (TC, BJ) &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-3-4&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;1 (DO, SFO) &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-3-5&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;§&lt;/span&gt;&lt;a href=&#34;#sec:bit-counting&#34;&gt;&lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;4.1&lt;/span&gt;&lt;!-- tex4ht:ref: sec:bit-counting  --&gt;&lt;/a&gt;&lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;,§&lt;/span&gt;&lt;a href=&#34;#sec:ascii-exemption&#34;&gt;&lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;4.2&lt;/span&gt;&lt;!-- tex4ht:ref: sec:ascii-exemption  --&gt;&lt;/a&gt;&lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;,§&lt;/span&gt;&lt;a href=&#34;#sec:allowed-protocols&#34;&gt;&lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;4.3&lt;/span&gt;&lt;!-- tex4ht:ref: sec:allowed-protocols  --&gt;&lt;/a&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#34;TBL-2-4-&#34;&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-4-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;主动探测 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-4-2&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;2022年5月19日 – 6月8日 （3周） &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-4-3&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;1 (TC, BJ) &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-4-4&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;2 (DO, SFO) &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-4-5&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;§&lt;/span&gt;&lt;a href=&#34;#sec:active-probing&#34;&gt;&lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;5&lt;/span&gt;&lt;!-- tex4ht:ref: sec:active-probing  --&gt;&lt;/a&gt; &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#34;TBL-2-5-&#34;&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-5-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;网络扫描 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-5-2&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;2022年5月12日–13日 （2天） &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-5-3&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;9 (TC, BJ) &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-5-4&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;1 (Scan, Univ) &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-5-5&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;§&lt;/span&gt;&lt;a href=&#34;#sec:widespread&#34;&gt;&lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;6&lt;/span&gt;&lt;!-- tex4ht:ref: sec:widespread  --&gt;&lt;/a&gt; &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#34;TBL-2-6-&#34;&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-6-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;实际流量 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-6-2&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;2022年7月–9月 （3个月） &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-6-3&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;1 (TC, BJ) &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-6-4&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;1 (DO, SFO), 1 (Tap, Univ) &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#34;td11&#34; id=&#34;TBL-2-6-5&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span
                            class=&#34;ptmr8t-x-x-90&#34;&gt;§&lt;/span&gt;&lt;a href=&#34;#sec:evaluation&#34;&gt;&lt;span
                                class=&#34;ptmr8t-x-x-90&#34;&gt;7&lt;/span&gt;&lt;!-- tex4ht:ref: sec:evaluation  --&gt;&lt;/a&gt; &lt;/td&gt;
                &lt;/tr&gt;
            &lt;/table&gt;
        &lt;/div&gt;

        &lt;figcaption class=&#34;caption&#34;&gt;&lt;span class=&#34;id&#34;&gt;&lt;a id=&#34;table:exp-summary&#34; href=&#34;#table:exp-summary&#34;&gt;表 1: &lt;/span&gt;&lt;span
												    class=&#34;content&#34;&gt;&lt;b&gt;实验时间线以及实验节点 &lt;/b&gt;&lt;/a&gt;—
	  我们总共用了1台阿里云北京服务器 (Ali) (自治系统号：AS37963)，
	  10台腾讯云北京服务器 (TC) (自治系统号：AS45090)，
	  4台Digital Ocean旧金山服务器(DO) (自治系统号：AS14061)，
	  以及两台位于科罗拉多大学博尔德分校的服务器 (Univ) (自治系统号：AS104)。
            &lt;/span&gt;&lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-4001r2  --&gt;
    &lt;/figure&gt;



        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;实验时间线和实验节点。 &lt;/b&gt;我们在&lt;a href=&#34;#table:exp-summary&#34;&gt;表1&lt;/a&gt;中总结了所有主要实验的时间线和所使用的实验节点。我们总共使用了腾讯云北京（AS45090）的10台VPS和阿里云北京（AS37963）的1台VPS。 我们没有观察到中国境内的实验节点或任何受影响的国外节点之间的审查行为有任何差异。我们使用了Digital Ocean旧金山（AS14061）的四台VPS：其中三台受到了新审查机制的影响，剩下一台则没有受到影响。我们把这四台VPS变成了水槽服务器(sink server)；也就是说，服务器监听1到65535的所有端口，接受TCP连接，但不向客户端发送任何有效载荷。我们还采用了科罗拉多大学博尔德分校（AS104）中的两台机器进行互联网扫描和实时流量分析。我们根据IP2Location数据库 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xip2location&#34;&gt;3&lt;/a&gt;]&lt;/span&gt;检查了我们的VPS的IP地址，并确认它们的地理位置与供应商所报告的位置相符。        &lt;/p&gt;&lt;!-- l. 96 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;触发审查制度。&lt;/b&gt;因为&lt;em&gt;外界观察者是无法区分完全加密的流量与随机数据的&lt;/em&gt;，所以除了使用实际的翻墙工具外，我们还开发了测量工具用来在我们的研究中发送随机数据以触发封锁。这些工具完成一个TCP握手后，会发送一个给定长度的随机有效载荷，然后关闭连接。        &lt;/p&gt;&lt;!-- l. 107 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;使用残留审查(residual censorship)来确认封锁。 &lt;/b&gt;与GFW封锁许多其他协议的方式类似 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XBock2021a&#34;&gt;13&lt;/a&gt;,&lt;a href=&#34;#XChai2019a&#34;&gt;17&lt;/a&gt;,&lt;a href=&#34;#XWang2017a&#34;&gt;63&lt;/a&gt;,&lt;a href=&#34;#XBock2020ESNI&#34;&gt;14&lt;/a&gt;]&lt;/span&gt;，在一个连接触发审查后，GFW会阻止所有具有相同三元组（客户端IP、服务器IP、服务器端口）的后续连接180秒。这种残留审查允许我们通过从同一客户端发送后续连接到服务器的同一端口来确认封锁。我们逐一进行共计五次的TCP连接，中间有一秒钟的时间间隔。如果五次连接都失败了，我们就得出结论，这个三元组被封锁了。如果一个三元组被封锁，我们在接下来的180秒内不会再使用它进行进一步的测试。        &lt;/p&gt;&lt;!-- l. 121 --&gt;
&lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;对重复测试的概率阻断进行计算。 &lt;/b&gt;我们经常要用相同的有效载荷进行多次连接，才能观察到封锁。在&lt;a href=&#34;#sec:blocking-rate&#34;&gt;第6.3节中&lt;/a&gt;，我们解释了这是因为GFW采用了一种&lt;em&gt;概率&lt;/em&gt;阻断策略，大约只有四分之一的概率触发审查。为了减少这种概率行为造成的测量误差，我们在对任何一次阻断（或不阻断）的观察下判断之前，都要发送最多25次有着相同有效载荷的连接。如果我们能够连续成功地用相同的有效载荷进行25次连接，那么我们就得出结论，该有效载荷（或服务器）不受这种新审查的影响。如果在至少发送一次有效载荷后，随后的5次连接尝试都（由于残留审查而）超时了，那么我们就将有效载荷（和服务器）标记为受到了新的审查的影响。在整个研究过程中，我们对所有有效载荷的测试，都采用了这种重复连接的方法。        &lt;/p&gt;&lt;!-- l. 1 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;

	&lt;h2 class=&#34;sectionHead&#34;, id=&#34;4&#34;&gt; &lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:reverse-engineering&#34; href=&#34;#sec:reverse-engineering&#34;&gt;4 测量并认识新审查技术的特点&lt;/a&gt;&lt;/h2&gt;
       &lt;!-- l. 4 --&gt;
&lt;p class=&#34;noindent&#34;&gt;我们进行实验以了解GFW如何检测和阻止完全加密的连接。详见&lt;a href=&#34;#table:exp-summary&#34;&gt;表1&lt;/a&gt;，在2021年11月6日至2022年5月18日期间，我们使用了三台中国的VPS和三台美国的水槽服务器来进行实验。在同一时期，我们还使用了一台阿里云北京VPS（自治系统号：AS37963）来重复我们所有的实验。我们没有观察到中国境内的实验节点与任何受影响此次审查影响的境外节点之间的审查行为有任何差异。2023年2月16日，我们重新进行了实验，确认&lt;em&gt;所有检测规则仍然有效。&lt;/em&gt;这一次，我们使用了一台腾讯云北京的VPS和一台位于Digital Ocean旧金山的水槽服务器。        &lt;/p&gt;
&lt;p class=&#34;indent&#34;&gt;&lt;a href=&#34;#alg:blocking&#34;&gt;算法1&lt;/a&gt;展示并概述了我们通过测量实验推断出的GFW检测规则。&lt;a href=&#34;#fig:example-blocking&#34;&gt;图1&lt;/a&gt;则举出了每个推断规则被应用时的例子。虽然我们无法推断这些检测规则被应用的顺序，也无法推断这些规则是否详尽，但我们的实验证实了GFW审查策略的具体组成部分。我们发现，审查者没有直接定义什么是完全加密的流量，而是应用了至少五条&lt;em&gt;粗糙但高效的&lt;/em&gt;启发式规则来豁免那些不太可能是完全加密的流量；然后它阻止其余任何未被豁免的流量。这些豁免规则是基于常见的协议指纹、使用1比特比例的粗略熵测试、以及可打印的ASCII字符的占比、位置和最大连续数。        &lt;/p&gt;
        &lt;div class=&#34;algorithm&#34;&gt;
            &lt;!-- l. 66 --&gt;
            &lt;p class=&#34;indent&#34;&gt; &lt;/p&gt;
            &lt;figure class=&#34;float&#34; style=&#34;width:75%&#34; id=&#34;alg:blocking&#34;&gt;
               &lt;figcaption class=&#34;caption&#34;&gt; &lt;span class=&#34;id&#34;&gt;&lt;a href=&#34;#alg:blocking&#34;&gt;算法1： &lt;/a&gt;&lt;/span&gt; &lt;span class=&#34;content&#34;&gt;GFW使用&lt;em&gt;至少&lt;/em&gt;五条启发式规则来检测和封锁完全加密的流量。审查者将此算法应用于从中国发往某些IP子网的TCP连接，并采用概率封锁（详见&lt;a href=&#34;#sec:widespread&#34;&gt;第6节&lt;/a&gt;）。&lt;/span&gt;&lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-6001r4  --&gt;

               &lt;hr&gt;如果客户端发送的第一个TCP有效载荷(\(\mathtt {pkt}\))满足以下任何一条豁免规则，则&lt;em&gt;允许&lt;/em&gt;连接继续：
                &lt;ul class=&#34;itemize1&#34;&gt;
                    &lt;li class=&#34;itemize&#34;&gt;&lt;span class=&#34;cmtt-9&#34;&gt;Ex1: &lt;/span&gt;\(\frac {\mathit {popcount}(\mathtt {pkt})}{\mathit {len}(\mathtt {pkt})} \le
                        3.4\) 或者 \(\frac {\mathit {popcount}(\mathtt {pkt})}{\mathit {len}(\mathtt {pkt})} \ge 4.6\).
                    &lt;/li&gt;
                    &lt;li class=&#34;itemize&#34;&gt;&lt;span class=&#34;cmtt-9&#34;&gt;Ex2: &lt;/span&gt;如果\(\mathtt {pkt}\)的前6个（或更多）字节均在 \([\mathtt {0x20},\mathtt{0x7e}]\) 区间.
                    &lt;/li&gt;
                    &lt;li class=&#34;itemize&#34;&gt;&lt;span class=&#34;cmtt-9&#34;&gt;Ex3: &lt;/span&gt;如果\(\mathtt {pkt}\)中超过50%的字节均在 \([\mathtt {0x20},\mathtt {0x7e}]\) 区间.
                    &lt;/li&gt;
                    &lt;li class=&#34;itemize&#34;&gt;&lt;span class=&#34;cmtt-9&#34;&gt;Ex4: &lt;/span&gt;如果\(\mathtt {pkt}\)中有超过20个连续字节均在 \([\mathtt {0x20},\mathtt
                        {0x7e}]\) 区间.
                    &lt;/li&gt;
                    &lt;li class=&#34;itemize&#34;&gt;&lt;span class=&#34;cmtt-9&#34;&gt;Ex5: &lt;/span&gt;如果数据包与TLS或HTTP协议的指纹相符.&lt;/li&gt;
                &lt;/ul&gt;
                &lt;!-- l. 66 --&gt;
                &lt;p class=&#34;noindent&#34;&gt;如果上述条件都不满足，则&lt;em&gt;阻断&lt;/em&gt;连接。&lt;/p&gt;
            &lt;/figure&gt;
        &lt;/div&gt;
        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;4.1&#34;&gt;&lt;a id=&#34;sec:bit-counting&#34; href=&#34;#sec:bit-counting&#34;&gt; &lt;span class=&#34;titlemark&#34;&gt;4.1 &lt;/span&gt;基于熵的豁免规则（&lt;code&gt;Ex1）&lt;/code&gt;&lt;/a&gt;&lt;/h3&gt;
   &lt;!--l. 71--&gt;
    &lt;p class=&#34;noindent&#34;&gt;我们观察到，&lt;em&gt;为1的比特&lt;/em&gt;数影响了一个连接是否被阻断。为了确定这一点，我们向服务器重复发送连接，并观察哪些连接被阻止。在每个连接中，我们发送256个不同的字节模式中的一个，由1个字节重复100次组成（例如，&lt;code&gt;\x00\x00\x00...&lt;/code&gt;，&lt;code&gt;\x01\x01\x01...&lt;/code&gt;，...，&lt;code&gt;\xff\xff\xff...&lt;/code&gt;）。
        我们对每个模式都发送25次包含这一模式的连接到我们的服务器，并观察是否有任何模式导致后续连接被阻断。如果有某个连接被阻断，则表明它的有效载荷触发了审查。我们发现&lt;em&gt;共有40个字节的模式触发了封锁&lt;/em&gt;，而其余216个模式没有。 被封锁的模式例子包括&lt;code&gt;\x0f\x0f...&lt;/code&gt;，&lt;code&gt;\x17\x17\x17...&lt;/code&gt;，和&lt;code&gt;\x1b\x1b\x1b...&lt;/code&gt;（以及其他37个）。    &lt;/p&gt;&lt;!--l. 89--&gt;
    &lt;p class=&#34;indent&#34;&gt;所有被阻断的模式的每个字节的八位比特中都恰好有4位是\(1\)比特（例如，二进制的&lt;code&gt;\x1b&lt;/code&gt;是&lt;code&gt;00011011&lt;/code&gt;）。 我们猜想每个字节的\(1\)比特的数量可能起作用，因为均匀的随机数据将有接近相同数量的二进制的\(1\)比特和\(0\)比特。实质上，这是在测量客户端数据包内的比特的熵。    &lt;/p&gt;&lt;!--l. 97--&gt;
    &lt;p class=&#34;indent&#34;&gt;我们发送这样的字节组合来确认这一猜想：组合中的每种字节单独发送都被允许，但组合起来发送就会被禁止。例如，&lt;code&gt;\xfe\xfe\xfe...&lt;/code&gt;和&lt;code&gt;\x01\x01\x01...&lt;/code&gt;都没有被单独封锁，但这些字节作为&lt;code&gt;\xfe\x01\xfe\x01...&lt;/code&gt;一起发送却被阻止。
        我们注意到&lt;code&gt;\xfe\x01&lt;/code&gt;的16位比特中有8位被设置为\(1\)（平均每个字节设置4个比特），而&lt;code&gt;\xfe&lt;/code&gt;的8位比特中有7位被设置为\(1\)，&lt;code&gt;\x01&lt;/code&gt;的8为比特中有1位被设置为\(1\)。这解释了为什么它们单独发送被允许，但组合起来发送就被阻止。    &lt;/p&gt;&lt;!--l. 108--&gt;
    &lt;p class=&#34;indent&#34;&gt;当然，随机或加密的数据不会总是正好有一半的比特被设置为\(1\)。我们通过发送一串50个随机字节（400比特），并设置了越来越多的比特为\(1\)的实验，来测试GFW需要多接近一半的比特才能阻断。 我们产生了401个比特串，其中有0-400个比特被设置为 \(1\)，并对每个字符串的比特位置进行洗牌，以产生一组随机字符串，每个字节设置0-8比特（以0.02比特/字节为增量）。对于每个字符串，我们发送25次连接含有它的连接，以观察它是否会引发后续连接的封锁。我们发现，所有具有3.4比特/字节的字符串都没有被封锁，而3.4至4.6比特/字节的字符串则被封锁了。    &lt;/p&gt;&lt;!--l. 122--&gt;
    &lt;p class=&#34;indent&#34;&gt;这其中有一个例外，那就是有一个4.26比特/字节集的字符串也没有被封锁。这是因为它有超过50%的字节是可打印的ASCII字符；我们接下来会介绍这是另一条豁免规则&lt;code&gt;（Ex2&lt;/code&gt;）。我们重复了我们的实验，并确认其他具有相同\(1\)比特数但可打印的ASCII字符较少的字符串，确实被阻止了。    &lt;/p&gt;&lt;!--l. 154--&gt;
    &lt;p class=&#34;indent&#34;&gt;综上所述，我们发现，如果一个连接中，客户端的第一个数据包中\(1\)比特比例偏离一半，GFW就会豁免这个连接。这相当于对熵的粗略测量：随机（加密）数据z总有接近一半的比特被设置为\(1\)，而其他协议由于明文或有零填充的协议头，每字节的\(1\)比特数通常较少。例如，谷歌浏览器105版发送的TLS Client Hello包，由于用零填充，每字节平均只有1.56个\(1\)比特，属于豁免范围。    &lt;/p&gt;


       &lt;!-- l. 179 --&gt;
        &lt;p class=&#34;indent&#34;&gt; &lt;/p&gt;
	&lt;figure class=&#34;float&#34; id=&#34;fig:example-blocking&#34;&gt;
	  &lt;figcaption class=&#34;caption&#34;&gt;
	    &lt;span class=&#34;id&#34;&gt;&lt;a href=&#34;#fig:example-blocking&#34;&gt;图1： &lt;/a&gt;&lt;/span&gt;
	    &lt;span class=&#34;content&#34;&gt;
	      &lt;span class=&#34;ptmb8t-&#34;&gt;GFW的流量豁免规则的例子 &lt;/span&gt;- 如果一个TCP连接的第一个数据包的有效载荷与上述任何规则相匹配，GFW就会豁免该连接。未被任何规则豁免的流量将被阻止。 可打印的字符是指范围内的任何字符\([\mathtt {0x20},\mathtt {0x7e}]\)。
			图&lt;a href=&#34;#fig:first-six-exempt&#34;&gt;1(a)&lt;!-- tex4ht:ref: fig:first-six-exempt  --&gt;&lt;/a&gt;,&lt;a href=&#34;#fig:halfprintable-exempt&#34;&gt;1(b)&lt;!-- tex4ht:ref: fig:halfprintable-exempt  --&gt;&lt;/a&gt;, 和&lt;a href=&#34;#fig:contiguous-run-exempt&#34;&gt;1(c)&lt;!-- tex4ht:ref: fig:contiguous-run-exempt  --&gt;&lt;/a&gt;在&lt;a href=&#34;#sec:ascii-exemption&#34;&gt;第4.2节&lt;/a&gt;介绍
		      图&lt;a href=&#34;#fig:popcount-exempt&#34;&gt;1(d)&lt;!-- tex4ht:ref: fig:popcount-exempt  --&gt;&lt;/a&gt;在&lt;a href=&#34;#sec:bit-counting&#34;&gt;第4.1节&lt;/a&gt;介绍。
	      图&lt;a href=&#34;#fig:protocol-match-exempt&#34;&gt;1(e)&lt;!-- tex4ht:ref: fig:protocol-match-exempt  --&gt;&lt;/a&gt;在&lt;a href=&#34;#sec:allowed-protocols&#34;&gt;第4.3节介绍&lt;!-- tex4ht:ref: fig:protocol-match-exempt  --&gt; &lt;/a&gt;。
	    &lt;/span&gt;
	  &lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-7006r4  --&gt;

&lt;!-- l. 179 --&gt;
  &lt;img alt=&#34;&#34; id=&#34;fig:first-six-exempt&#34; src=&#34;figures/first-six-.png&#34;&gt;
  &lt;figcaption&gt;
    &lt;a href=&#34;#fig:first-six-exempt&#34;&gt;(a) 前六个字节为可打印的ASCII的豁免规则&lt;/a&gt;（&lt;code&gt;Ex2&lt;/code&gt;）：
    如果一个连接的前六个（或更多）字节都是可打印的ASCII，则GFW将其豁免。
  &lt;/figcaption&gt;

  &lt;img alt=&#34;&#34; id=&#34;fig:halfprintable-exempt&#34; src=&#34;figures/halfprintable-.png&#34;&gt;
  &lt;figcaption&gt;
    &lt;a href=&#34;#fig:halfprintable-exempt&#34;&gt;(b) 半数字节为可打印的ASCII的豁免规则&lt;/a&gt;（&lt;code&gt;Ex3&lt;/code&gt;）：如果一个连接的第一个有效载荷有超过50%的可打印的ASCII，则GFW将其豁免。
  &lt;/figcaption&gt;

  &lt;img alt=&#34;&#34; id=&#34;fig:contiguous-run-exempt&#34; src=&#34;figures/consecutive-bytes-.png&#34;&gt;
  &lt;figcaption&gt;
    &lt;a href=&#34;#fig:contiguous-run-exempt&#34;&gt;(c) 连续可打印豁免&lt;/a&gt;（&lt;code&gt;Ex4&lt;/code&gt;）：GFW计算连续可打印的ASCII字节的最大数量，如果该值超过20个字节，则豁免连接。
  &lt;/figcaption&gt;

    &lt;!-- l. 179 --&gt;
  &lt;img alt=&#34;&#34; id=&#34;fig:popcount-exempt&#34; src=&#34;figures/popcount-.png&#34;&gt;
  &lt;figcaption&gt;
    &lt;a href=&#34;#fig:popcount-exempt&#34;&gt;(d) popcount豁免&lt;/a&gt;（&lt;code&gt;Ex1&lt;/code&gt;）：GFW计算每个字节的平均1比特数（popcount），作为衡量熵的粗略标准，如果该值小于3.4或大于4.6，则豁免连接。
  &lt;/figcaption&gt;

  &lt;img alt=&#34;&#34; id=&#34;fig:protocol-match-exempt&#34; src=&#34;figures/protocol-.png&#34;&gt;
  &lt;figcaption&gt;
    &lt;a href=&#34;#fig:protocol-match-exempt&#34;&gt;(e) 协议豁免&lt;/a&gt;（&lt;code&gt;Ex5&lt;/code&gt;）：如果一个连接的前几个字节符合HTTP或TLS协议，则GFW豁免其连接。
  &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;h3 class=&#34;subsectionHead&#34;, id=&#34;4.2&#34;&gt;&lt;a id=&#34;sec:ascii-exemption&#34; href=&#34;#sec:ascii-exemption&#34;&gt;
    &lt;span class=&#34;titlemark&#34;&gt;4.2 &lt;/span&gt;基于可打印的ASCII字符的豁免规则(&lt;code&gt;Ex2-4&lt;/code&gt;)&lt;/a&gt;&lt;/h3&gt;
   &lt;!--l. 192--&gt;
    &lt;p class=&#34;noindent&#34;&gt;我们观察到在&lt;a href=&#34;#sec:bit-counting&#34;&gt;第4.1节中&lt;/a&gt;发现的比特计数规则有几个例外。例如，模式&lt;code&gt;\x4b\x4b\x4b...&lt;/code&gt;没有被封锁，尽管每个字节正好设置了4位。事实上，实际上有70个字节（8选4）正好有4位为\(1\)比特，但是我们的分析发现，其中只有40个触发了审查。那另外30个呢？    &lt;/p&gt;&lt;!--l. 205--&gt;
    &lt;p class=&#34;indent&#34;&gt;这另外30个字节的值都属于&lt;em&gt;可打印的ASCII字符&lt;/em&gt;的字节范围，即&lt;code&gt;0x20-0x7e&lt;/code&gt;。
      我们推测，GFW豁免这些字符可能是为了允许&#34;明文&#34;（人类可读）协议。    &lt;/p&gt;
    &lt;!--l. 210--&gt;

&lt;p class=&#34;indent&#34;&gt;我们发现，GFW有&lt;em&gt;三种关于可打印的ASCII字符的豁免方式&lt;/em&gt;，都是基于连接中客户端发送的第一个数据包的有效载荷：如果前六个字节是可打印的（&lt;code&gt;Ex2&lt;/code&gt;）；如果超过一半的字节是可打印的（&lt;code&gt;Ex3&lt;/code&gt;）；或者如果它包含超过20个连续的可打印字节（&lt;code&gt;Ex4&lt;/code&gt;），则允许连接。    &lt;/p&gt;&lt;!--l. 221--&gt;

&lt;p class=&#34;noindent&#34;&gt;
  &lt;b&gt;前六个字节是可打印的（&lt;code&gt;Ex2&lt;/code&gt;）。&lt;/b&gt;
  我们观察到，如果一个连接的前6个字节在可打印的字节范围&lt;code&gt;0x20-0x7e&lt;/code&gt;内，那么GFW就会豁免该连接。如果前6个字节中有超出这个范围的字符，那么连接就可能会被阻止，前提是它没有符合其他豁免的规则（例如，每个字节集有少于3.4位的\(1\)比特）。
  我们通过生成不同有效载荷进行测试，其中前\(n\)字节来自不同的字符集（如可打印的ASCII字符），而消息的其余分部将是随机的不可打印字符。 我们观察到，对于\(n \lt 6\)，连接被阻断，但对于\(n\ge 6\)，即前\(n\)字节都是可打印的ASCII字符时，没有发生阻断。
&lt;/p&gt;&lt;!--l. 240--&gt;

&lt;p class=&#34;noindent&#34;&gt;
  &lt;b&gt;第一个数据包有一半的有效载荷是可打印的（&lt;code&gt;Ex3&lt;/code&gt;）。&lt;/b&gt;
  如果第一个数据包的有效载荷中超过一半的字节属于可打印的ASCII范围&lt;code&gt;0x20-0x7e&lt;/code&gt;，那么GFW就会豁免该连接。
  我们通过构造并发送这样的有效载荷来测试：其前10字节由可打印ASCII范围以外的字符组成（例如&lt;code&gt;0xe8&lt;/code&gt;），然后是一个6个字节的重复序列：5个在这个可打印范围内（如&lt;code&gt;0x4b&lt;/code&gt;），而最后一个在可打印范围外。我们重复这个6字节的序列5次，然后在字符串的末尾用可打印范围外的\(n\)个字节来填充(用Python符号表示：&lt;code&gt;&#34;\xe8&#34;*10 + (&#34;\x4b&#34;*5 + &#34;\xe8&#34;)*5 + &#34;\xe8&#34;*n)&lt;/code&gt;)。
  这个实验给我们一个可变长度的模式，随着我们增加\(n\)，可打印的ASCII范围内的字节的比例减少了。
  我们发现，对于 \(n &amp;lt; 10\)，连接不会被阻断，而对于 \(n \ge 10\)，连接会被阻断。
  这相当于当可打印字符的比例小于或等于一半时被阻断，而当大于一半时不被阻断。
&lt;/p&gt;&lt;!--l. 256--&gt;

&lt;p class=&#34;indent&#34;&gt;
  我们设计这样的有效载荷是为了避免触发其他GFW豁免规则，例如\(1\)比特比例（&lt;code&gt;Ex1&lt;/code&gt;）、可打印前缀（&lt;code&gt;Ex2&lt;/code&gt;）或连续的可打印字符（&lt;code&gt;Ex4&lt;/code&gt;）。
  例如，我们分别使用 &lt;code&gt;0x4b&lt;/code&gt;和&lt;code&gt;0xe8 &lt;/code&gt;作为可打印和不可打印的字符，因为它们都正好有4位的设置。
  这可以防止GFW因为前面讨论过的\(1\)比特比例规则（&lt;code&gt;Ex1&lt;/code&gt;）而豁免封锁我们的连接的情况。
  此外，我们避免让可打印字符&lt;code&gt;0x4b&lt;/code&gt;连续出现，因为我们观察到这样的模式也能豁免封锁连接，这一点我们接下来会讨论。
  我们用其他同样符合这些限制条件的模式（如&lt;code&gt;0x8d&lt;/code&gt;和&lt;code&gt;0x2e&lt;/code&gt;）重复了我们的实验，并观察到相同的结果。
&lt;/p&gt;&lt;!--l. 275--&gt;

&lt;p class=&#34;noindent&#34;&gt;
  &lt;b&gt;超过20个连续的字节是可打印的（&lt;code&gt;Ex4&lt;/code&gt;）。&lt;/b&gt;
  一个可打印字符的连续出现也可以免除封锁，即使可打印字符的总比例不到一半。
  为了测试这一点，我们发送了一个由可打印范围以外的字符（&lt;code&gt;0xe8&lt;/code&gt;）组成的100个字节的模式，以及来自可打印范围的不同数量的连续字节（我们使用&lt;code&gt;0x4b&lt;/code&gt;）。
  我们的有效载荷从10个字节的&lt;code&gt;0xe8&lt;/code&gt;开始，接着是\(n\)字节的&lt;code&gt;0x4b&lt;/code&gt;，然后是\(90-n\)字节的&lt;code&gt;0xe8&lt;/code&gt;，总长度为100个字节。
  我们让变量\(n\)在0-90之间变化，并把每个相同的载荷都向我们的服务器发送25次。
  我们发现，对于 \(n\le 20\)，连接被阻断了。当 \(n &amp;gt; 20\)，连接没有被阻断。
  这证明当有连续的可打印的ASCII字符出现时，连接会被豁免。
  当然，当 \(n &amp;gt; 50\)，连接也会被豁免，因为豁免规则&lt;code&gt;Ex3&lt;/code&gt;。
&lt;/p&gt;&lt;!--l. 292--&gt;

&lt;p class=&#34;noindent&#34;&gt;
  &lt;b&gt;其他编码方式。&lt;/b&gt;
  我们测试了如果第一个数据包中包含中文字符，是否也可以与可打印的ASCII字符一样，让连接免于阻断。
  我们使用了以UTF-8编码的6-36个中文字符串，以及GBK（与我们使用的GB2312字符相同）。
  所有这些测试连接都被阻断了，这表明&lt;em&gt;不存在基于汉字的豁免规则&lt;/em&gt;。
  这可能是因这些编码中出现的汉字的情况很少，或者是因为如果要解析这些编码，会对审查系统增加不合理的复杂性，因为很难知道一个编码字符串的开始或结束位置。
&lt;/p&gt;&lt;!--l. 301--&gt;

&lt;p class=&#34;noindent&#34;&gt;&lt;/p&gt;


&lt;h3 class=&#34;subsectionHead&#34;, id=&#34;4.3&#34;&gt;&lt;a id=&#34;sec:allowed-protocols&#34; href=&#34;#sec:allowed-protocols&#34;&gt; &lt;span class=&#34;titlemark&#34;&gt;4.3 &lt;/span&gt;基于常见协议的豁免规则（&lt;code&gt;Ex5）&lt;/code&gt;&lt;/a&gt;&lt;/h3&gt;
       &lt;!-- l. 304 --&gt;
&lt;p class=&#34;noindent&#34;&gt;
  为了避免误伤流行的协议，我们观察到GFW明确地豁免了两种流行的协议。
  GFW似乎是用&lt;em&gt;客户端数据包的前3-6个字节&lt;/em&gt;来推断协议：如果它们与已知协议的字节相匹配，连接就会被免除阻断，即使数据包的其余部分不符合该协议。我们测试了六种常见的协议，发现TLS和HTTP协议被明确地豁免了。这个豁免列表可能并不详尽，因为可能还有其他我们没有测试的豁免协议。
&lt;/p&gt;&lt;!-- l. 319 --&gt;

&lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;TLS。 &lt;/b&gt;TLS连接以TLS ClientHello消息开始，该消息的前三个字节会使GFW豁免连接。我们观察到，GFW豁免了任何前三个字节与以下正则表达式匹配的连接：        &lt;/p&gt;&lt;!-- l. 325 --&gt;
        &lt;p class=&#34;indent&#34;&gt;
        &lt;/p&gt;

	&lt;blockquote class=&#34;quote&#34;&gt;
	  &lt;code&gt;
	    [\x16-\x17]\x03[\x00-\x09]
	  &lt;/code&gt;
	&lt;/blockquote&gt;

	&lt;!-- l. 329 --&gt;&lt;p class=&#34;indent&#34;&gt;
  这对应于一个字节的记录类型(record type)，后面是一个两字节的版本(version)。
  我们列举了所有256个&lt;code&gt;XX\x03\x03&lt;/code&gt;的模式，并在后面加上97个字节的随机数据。我们发现除了那些以&lt;code&gt;0x16&lt;/code&gt;（对应TLS中的Handshake包，用于ClientHello）或&lt;code&gt;0x17 &lt;/code&gt;（对应TLS中的应用数据类包(Application Data)）开始的模式外，其他所有模式都被封锁。
  虽然通常的TLS连接不会以应用数据开头 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xrfc5246-appendixE&#34;&gt;53&lt;/a&gt;,&lt;a href=&#34;#Xrfc8446-tls13-hello&#34;&gt;52&lt;/a&gt;]&lt;/span&gt;，
  但当TLS被用于多路径TCP（MPTCP） &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xmptcp&#34;&gt;31&lt;/a&gt;]&lt;/span&gt;时，
  常见的情况是，其中一个TCP子流被用于ClientHello，而其他子流在TCP连接建立后立即发送应用数据 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xbonaventure-mptcp-tls-00&#34;&gt;15&lt;/a&gt;]&lt;/span&gt;。
  到目前为止，只有TLS的&lt;code&gt;0x03[0x00-0x03] &lt;/code&gt;版本被定义 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xrfc5246-appendixE&#34;&gt;53&lt;/a&gt;,&lt;a href=&#34;#Xrfc8446-tls13-hello&#34;&gt;52&lt;/a&gt;]&lt;/span&gt;，但GFW甚至允许更晚的（尚未定义）版本。        &lt;/p&gt;&lt;!--l. 364--&gt;

&lt;p class=&#34;noindent&#34;&gt;
  &lt;b&gt;HTTP。 &lt;/b&gt;
  审查者用来识别HTTP流量的字节模式很简单，就是在HTTP请求方法的后面跟有一个空格。如果一个信息以&lt;code&gt;GET␣&lt;/code&gt;、&lt;code&gt;PUT␣&lt;/code&gt;、&lt;code&gt;POST␣&lt;/code&gt;或&lt;code&gt;HEAD␣&lt;/code&gt;开头，那么这个连接就会被免于阻断。每个请求方法的后面的空格字符（&lt;code&gt;0x20&lt;/code&gt;）是让连接免于屏蔽的必要条件。如果不包括这个空格字符，或用任何其他字节代替它，就不能豁免连接。其他的HTTP请求方式（&lt;code&gt;OPTIONS␣, DELETE␣, CONNECT␣, TRACE␣, PATCH␣&lt;/code&gt;）均因为前6个字节是可打印字符，而已经满足可打印的ASCII豁免规则（&lt;code&gt;Ex2&lt;/code&gt;）。我们发现HTTP请求方法是不区分大小写的：&lt;code&gt;GeT␣&lt;/code&gt;、&lt;code&gt;get␣&lt;/code&gt;和类似的变体都可以使连接被豁免。请求方式的错误拼写（例如，&lt;code&gt;TEG␣&lt;/code&gt;）不属于豁免范围。        &lt;/p&gt;&lt;!--l. 386--&gt;

&lt;p class=&#34;noindent&#34;&gt;
  &lt;b&gt;不被豁免的协议。 &lt;/b&gt;
  我们测试了其他常见的协议：SSH、SMTP和FTP将被豁免，因为它们都以至少6个字节的可打印的ASCII开头（规则&lt;code&gt;Ex2&lt;/code&gt;）。DNS-over-TCP由于包含很大一部分的零，使得它被&lt;code&gt;Ex1&lt;/code&gt;规则豁免。然而，如果在DNS-over-TCP消息后附加足够多的随机数据，它将被阻止。        &lt;/p&gt;&lt;!--l. 410--&gt;

&lt;p class=&#34;indent&#34;&gt;上面观察到的现象让大家提出了一个问题：为什么审查者使用明确的规则来豁免TLS和HTTP，而不是其他协议。 毕竟，审查者不需要明确地豁免这两种协议：HTTP通常会都满足前6个字节为可打印的ASCII的豁免规则（&lt;code&gt;Ex2&lt;/code&gt;），而TLS ClientHello包由于有许多零字段，其也会因位数熵相对较低而满足&lt;code&gt;Ex1&lt;/code&gt;豁免规则。也许这是因为审查者可以采用这些简单而高效的规则来快速地豁免大部分的网络流量（TLS和HTTP），而不需要进行如计算载荷中\(1\)比特的比例、可打印的ASCII的比例等更深入的分析。        &lt;/p&gt;&lt;!--l. 441--&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;

        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;4.4&#34;&gt;&lt;a id=&#34;sec:residual&#34; href=&#34;#sec:residual&#34;&gt; &lt;span class=&#34;titlemark&#34;&gt;4.4 &lt;/span&gt;GFW是如何阻断连接的&lt;/a&gt;&lt;/h3&gt;
       &lt;!-- l. 444 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;一旦GFW使用&lt;a href=&#34;#alg:blocking&#34;&gt;算法1&lt;/a&gt;检测到完全加密的流量，就会按照下面介绍的方式阻断后续流量。        &lt;/p&gt;&lt;!-- l. 448 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;丢弃从客户端到服务器的数据包。 &lt;/b&gt;我们先触发GFW的阻断，然后比较在客户端和服务器捕获的数据包。我们观察到，在触发审查后，客户端的数据包被GFW丢弃，并没有到达服务器。然而，服务器发送的数据包没有被阻断，客户端仍然可以收到。        &lt;/p&gt;&lt;!-- l. 458 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;UDP流量不受影响。 &lt;/b&gt;新的审查系统只限于TCP。发送一个具有随机有效载荷的UDP数据包不能触发审查。此外，即使某个3元组（客户端IP、服务器IP、服务器端口）由于TCP连接而被封锁，往来于同一（服务器IP、服务器端口）的UDP数据包也不受影响。由于没有UDP拦截，用户在使用Shadowsocks时可能会遇到奇怪的现象：他们仍然可以使用某些依赖UDP的网站或应用程序（如QUIC或FaceTime），但无法访问使用TCP的网站。这是因为Shadowsocks用TCP代理TCP流量，用UDP代理UDP流量。审查者不检测或阻止UDP流量，可能反映了其&lt;em&gt;更糟就是更好(worse is better)&lt;/em&gt;的工程思维。从实际情况来看，目前的TCP封锁已经足够有效地让这些流行的翻墙工具瘫痪，而如果增加UDP审查，则需要额外的资源，并给审查系统引入额外的复杂性。        &lt;/p&gt;&lt;!-- l. 478 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;所有端口的流量都可能被阻断。 &lt;/b&gt;我们在美国建立了一个监听在所有端口（从1到65535）的水槽服务器。然后，我们让中国的客户端不断地用50字节的随机有效载荷与美国服务器的每个端口进行连接，并在某个端口被封锁后停止反复地连接这一端口。我们发现，从1到65535的所有端口都可能被封锁。因此，在一个不寻常的端口上运行翻墙服务器并不能缓解封锁。我们也没有观察到使用不同端口会导致不同的审查行为。        &lt;/p&gt;
        &lt;figure class=&#34;figure&#34; id=&#34;fig:residual-two&#34;&gt;
            &lt;!-- l. 490 --&gt;
            &lt;p class=&#34;noindent&#34;&gt; &lt;img alt=&#34;&#34; src=&#34;figures/residual_cdf_p20000_20499-.png&#34;&gt;

                &lt;a id=&#34;x1-10002&#34;&gt;&lt;/a&gt;
            &lt;/p&gt;
            &lt;figcaption class=&#34;caption&#34;&gt;
                &lt;span class=&#34;id&#34;&gt; &lt;a href=&#34;#fig:residual-two&#34;&gt;图2： &lt;/a&gt;&lt;/span&gt; &lt;span class=&#34;content&#34;&gt; &lt;span class=&#34;ptmb8t-&#34;&gt;残留审查时间 &lt;/span&gt;--当我们反复地将50字节的随机数据同时发送到单个服务器的500个端口时，残留审查时间急剧下降。大约40%的封锁只持续了10秒，短于只有一个端口被封锁时的180秒持续时间。这表明，GFW可能会限制它在任何特定时间内残留审查的连接数量。               &lt;/span&gt;&lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-10001r4  --&gt;
        &lt;/figure&gt;
       &lt;!-- l. 492 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
           &lt;b&gt;残留审查(residual censorship)的持续时间受到正在被残留审查的元组的数量的影响。&lt;/b&gt;我们发现，这个新的审查系统一旦阻断了一个连接，它就会在后续的120或180秒内继续丢弃&lt;em&gt;所有&lt;/em&gt;具有相同3元组（客户端IP、服务器IP、服务器端口）的TCP数据包。这种行为通常被称为“残留审查” &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XBock2021a&#34;&gt;13&lt;/a&gt;,&lt;a href=&#34;#XChai2019a&#34;&gt;17&lt;/a&gt;,&lt;a href=&#34;#XWang2017a&#34;&gt;63&lt;/a&gt;,&lt;a href=&#34;#XBock2020ESNI&#34;&gt;14&lt;/a&gt;]&lt;/span&gt;。与其他一些残留审查系统不同 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XBock2021a&#34;&gt;13&lt;/a&gt;]&lt;/span&gt;，GFW的残留审查定时器不会在观察到更多触发审查的数据包后被重置。        &lt;/p&gt;&lt;!-- l. 502 --&gt;
        &lt;p class=&#34;indent&#34;&gt;我们还发现，GFW似乎限制了它在任何给定时间内残余审查的连接的数量。我们让中国的客户端重复性地同时连接到一个服务器的500个端口。在每个连接中，客户端发送50字节的随机数据，然后关闭连接。我们记录了每次发生残留审查的持续时长。&lt;a href=&#34;#fig:residual-two&#34;&gt;如图2&lt;/a&gt;所示，与只有一个端口被封锁时的180秒持续时间相比，该实验中的残留审查持续时间大幅下降。        &lt;/p&gt;

        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;4.5&#34;&gt;
          &lt;a id=&#34;sec:reassemble&#34; href=&#34;#sec:reassemble&#34;&gt; &lt;span class=&#34;titlemark&#34;&gt;4.5 &lt;/span&gt;GFW是如何重组流量的&lt;/a&gt;
	&lt;/h3&gt;
       &lt;!-- l. 514 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;在这一节中，我们将研究GFW的新审查系统是如何重新组合流量，并考虑流量方向的。        &lt;/p&gt;&lt;!-- l. 516 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;一个完整的TCP握手是必要的。 &lt;/b&gt;我们观察到，发送一个&lt;code&gt;SYN&lt;/code&gt;包，然后再发送一个包含随机数据的&lt;code&gt;PSH+ACK&lt;/code&gt;包（在服务器没有完成握手的情况下），并不足以触发阻断。这样的残留审查更难被攻击者利用 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XBock2021a&#34;&gt;13&lt;/a&gt;]&lt;/span&gt;。        &lt;/p&gt;&lt;!-- l. 523 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;只有客户端到服务器的数据包可以触发阻断。 &lt;/b&gt;我们发现，GFW不仅检查随机数据是否被发送到属于受影响的IP范围内的目标IP地址，而且还检查并只在随机数据从客户端发送到服务器时才进行阻断。这里的服务器被定义为在TCP握手过程中发送&lt;code&gt;SYN+ACK&lt;/code&gt;的主机。        &lt;/p&gt;&lt;!-- l. 528 --&gt;
        &lt;p class=&#34;indent&#34;&gt;我们通过在两台主机之间设置的四个实验来了解这一点。在第一个实验中，我们让在中国的客户端连接并向外国服务器发送随机数据；在第二个实验中，我们仍然让中国的客户端连接到外国服务器，但让外国服务器向客户端发送随机数据；在第三个实验中，我们让美国的客户端连接并向中国服务器发送随机数据；在第四个实验中，我们让美国的客户端连接到中国服务器，但随后让中国服务器向美国客户端发送随机数据。只有第一个实验中的连接被封锁了。        &lt;/p&gt;&lt;!-- l. 536 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;GFW只检查第一个数据包。 &lt;/b&gt;GFW似乎只分析TCP连接中的第一个数据包，而不对有多个数据包的流量进行重新组合。我们通过以下实验来测试这一点。在TCP握手后，我们发送第一个数据包，其中只有一个字节的有效载荷 &lt;code&gt;\x21&lt;/code&gt;。在等待一秒钟后，我们再发送带有200字节随机有效载荷的第二个数据包。我们重复了25次实验，但连接从未被封锁。 这是因为在看到第一个数据包后，GFW已经通过规则&lt;code&gt;Ex1&lt;/code&gt;豁免了连接，因为它的有效载荷中包含100%可打印的ASCII。换句话说，如果GFW在其流量分析过程中把多个数据包重新组合成一个流，它就能够阻止这些连接。        &lt;/p&gt;&lt;!-- l. 553 --&gt;
        &lt;p class=&#34;indent&#34;&gt;我们发现，GFW不会等到看到服务器的ACK响应时才去阻止一个连接。我们用一个&lt;code&gt;iptables&lt;/code&gt;规则将我们的服务器配置为放弃任何传出的ACK数据包。然后我们用200字节的随机有效载荷与服务器建立连接。尽管服务器没有发送任何ACK数据包，GFW仍然阻止了这些连接。        &lt;/p&gt;&lt;!-- l. 560 --&gt;
        &lt;p class=&#34;noindent&#34;&gt; &lt;b&gt;GFW对第一个数据包等待时间超过了5分钟。 &lt;/b&gt;我们研究了GFW会在TCP握手之后，但在看到第一个数据包之前，对一个TCP连接进行了多长时间的监控。根据观察，它需要一个完整的TCP握手来触发封锁，我们因此推断GFW可能是有状态的。因此，我们有理由怀疑GFW只在有限的时间内监控一个连接，因为要永久追踪一个连接的状态而不放弃的开销很大。        &lt;/p&gt;&lt;!-- l. 569 --&gt;
        &lt;p class=&#34;indent&#34;&gt;我们的客户端完成了TCP握手，然后等待了100秒、180秒或300秒，然后发送200字节的随机数据。接着，我们重复了这个实验，但使用&lt;code&gt;iptables&lt;/code&gt;规则丢弃了任何RST或TCP keepalive数据包，以防它们帮助GFW保持对连接的追踪。 我们发现这些连接仍然触发了阻断，这表明GFW对连接状态的追踪至少有5分钟。        &lt;/p&gt;&lt;!-- l. 1 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h2 class=&#34;sectionHead&#34;, id=&#34;5&#34;&gt;
           &lt;a id=&#34;sec:active-probing&#34; href=&#34;#sec:active-probing&#34;&gt; &lt;span class=&#34;titlemark&#34;&gt;5 &lt;/span&gt;与主动探测系统的关系&lt;/a&gt;       &lt;/h2&gt;
       &lt;!-- l. 4 --&gt;
        &lt;p class=&#34;indent&#34;&gt; &lt;/p&gt;
        &lt;figure class=&#34;float&#34; id=&#34;table:probes&#34;&gt;
            &lt;div class=&#34;tabular&#34;&gt;
                &lt;table class=&#34;tabular&#34; id=&#34;TBL-3&#34;&gt;
                    &lt;colgroup id=&#34;TBL-3-1g&#34;&gt;
                        &lt;col id=&#34;TBL-3-1&#34;&gt;
                        &lt;col id=&#34;TBL-3-2&#34;&gt;
                        &lt;col id=&#34;TBL-3-3&#34;&gt;
                        &lt;col id=&#34;TBL-3-4&#34;&gt;
                        &lt;col id=&#34;TBL-3-5&#34;&gt;
                    &lt;/colgroup&gt;
                    &lt;tr id=&#34;TBL-3-1-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-1-1&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
                            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;有效载荷                     &lt;/div&gt;
                        &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; colspan=&#34;2&#34; id=&#34;TBL-3-1-2&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
                            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;受影响的服务器                     &lt;/div&gt;
                        &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; colspan=&#34;2&#34; id=&#34;TBL-3-1-4&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
                            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;未受影响的服务器                        &lt;/div&gt;
                        &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-2-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-2-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-2-2&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;
                            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;连接数&lt;/div&gt;
                        &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-2-3&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;
                            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;探测数&lt;/div&gt;
                        &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-2-4&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;
                            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;连接数&lt;/div&gt;
                        &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-2-5&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;
                            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;探测数&lt;/div&gt;
                        &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-3-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-3-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;2字节的随机(\xfe\x01) &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-3-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;33k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-3-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-3-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-3-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-4-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-4-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;50字节的随机                    &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-4-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;29k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-4-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-4-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-4-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-5-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-5-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;200字节的随机               &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-5-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;33k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-5-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;141 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-5-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-5-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;679 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-6-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-6-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;&#34;GET &#34; + 50字节的随机数 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-6-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;170k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-6-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-6-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-6-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-7-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-7-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;\x16\x03\x03 + 50个字节的随机数 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-7-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;170k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-7-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-7-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-7-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-8-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-8-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;\x17\x03\x03 + 50个字节的随机数 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-8-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;170k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-8-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-8-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-8-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-9-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-9-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;&#34;GET &#34; + 50个字节的随机数 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-9-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;170k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-9-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-9-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-9-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-10-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-10-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;\x16\x03\x03 + 200字节的随机数 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-10-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;170k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-10-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-10-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-10-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-11-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-11-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;\x17\x03\x03 + 200字节的随机数 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-11-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;170k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-11-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-11-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-11-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-12-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-12-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;低\(1\)比特平均值（2.5） &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-12-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;170k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-12-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-12-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-12-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-13-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-13-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;高\(1\)比特平均值（5.2） &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-13-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;170k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-13-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-13-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-13-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-14-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-14-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;超过一半的可打印 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-14-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;170k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-14-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-14-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-14-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-15-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-15-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;前六个字节可打印+200字节随机 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-15-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;170k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-15-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-15-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-15-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr id=&#34;TBL-3-16-&#34;&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-16-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt;超过20个连续的字节 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-16-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;170k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-16-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-16-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;169k &lt;/td&gt;
                        &lt;td class=&#34;td11&#34; id=&#34;TBL-3-16-5&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt;0 &lt;/td&gt;
                    &lt;/tr&gt;
                &lt;/table&gt;
            &lt;/div&gt;

            &lt;figcaption class=&#34;caption&#34;&gt;&lt;a href=&#34;#table:probes&#34;&gt; &lt;span class=&#34;id&#34;&gt;表2： &lt;/span&gt;&lt;/a&gt;
                &lt;span class=&#34;content&#34;&gt;在2022年5月19日至6月8日期间，我们的客户从中国腾讯云北京数据中心的VPS重复发送相同的14个有效载荷，到美国DigitalOcean旧金山数据中心的两个不同主机的14个端口。据了解，其中一台美国主机受到了当前审查系统的影响，而另一台美国主机则不受影响。总的来说，我们在中国的客户重复向这两台美国服务器的每个端口发送了大约17万个连接。唯一的例外情况是，当残留审查制度被触发，客户端无法与受影响的服务器进行连接时，成功的合法连接总数约为3.3万次。               &lt;/span&gt;&lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-12001r5  --&gt;
        &lt;/figure&gt;
       &lt;!-- l. 6 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;正如&lt;a href=&#34;#sec:background-active-probing&#34;&gt;第2.2节&lt;/a&gt;所介绍的，GFW自2019年以来一直在向Shadowsocks服务器发送主动探测探针 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;。在这一节中，我们研究了这个新发现的实时阻断系统和已知的主动探测系统之间的关系。通过测量实验和对历史数据集的分析，我们发现，虽然这两个审查系统并行工作，但主动探测系统的流量分析模块应用了&lt;a href=&#34;#alg:blocking&#34;&gt;算法1&lt;/a&gt;和&lt;a href=&#34;#fig:example-blocking&#34;&gt;图1&lt;/a&gt;中总结的所有五条豁免规则，并且还用一条额外的规则，来检查第一个数据包的有效载荷长度。我们还表明，主动探测系统&lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;使用的流量分析算法可能自2019年以来有所进化。        &lt;/p&gt;&lt;!-- l. 32 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;主动探测实验。 &lt;/b&gt;在部署这个新的实时阻断系统之前，从外界推断主动探测系统的流量分析算法，如果说是有可能的话，也是极具挑战性的。这是因为GFW在看到触发连接和发送主动探测之间设置了一个任意长度的延迟 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;，§3.5]&lt;/span&gt;。这就使得我们很难说明GFW的哪些探测是由我们发送的哪些连接触发的。现在我们已经在&lt;a href=&#34;#sec:reverse-engineering&#34;&gt;第4节中&lt;/a&gt;推断出了这个新的阻断系统的流量检测规则列表，我们可以测试被&lt;a href=&#34;#alg:blocking&#34;&gt;算法1&lt;/a&gt;豁免的有效载荷是否也不会被主动探测系统所怀疑。        &lt;/p&gt;&lt;!-- l. 44 --&gt;
        &lt;p class=&#34;indent&#34;&gt;我们在2022年5月19日和6月8日之间进行了实验。&lt;a href=&#34;#table:probes&#34;&gt;如表2&lt;/a&gt;所示，我们制作了14种不同类型的有效载荷：其中3种是长度为2、50和200字节的随机数据；其余11种是具有不同长度的数据，这些数据仅能被&lt;a href=&#34;#alg:blocking&#34;&gt;算法1&lt;/a&gt;中的某一个豁免规则豁免。然后，我们从中国北京腾讯云的一个VPS向美国旧金山DigitalOcean的两个不同主机的14个端口，发送了14种有效载荷。其中一台美国主机已知受到当前阻断系统的影响，而另一台美国主机则不受影响。这样，如果我们收到来自GFW的任何探测，我们就知道当前封锁系统使用的某些豁免规则没有被主动探测系统使用。        &lt;/p&gt;&lt;!-- l. 56 --&gt;
        &lt;p class=&#34;indent&#34;&gt;我们在中国的客户端总共向两台美国服务器的每个端口发送了约17万次连接。然后我们采取措施，将来自GFW的主动探测与其他互联网扫描探测隔离开。我们根据IP2Location数据库 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xip2location&#34;&gt;3&lt;/a&gt;]&lt;/span&gt;和AbuseIPDB &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAbuseIPDB&#34;&gt;2&lt;/a&gt;]&lt;/span&gt;检查每个探测的源IP地址。如果它是一个非中国的IP或者来自一个已知的被用来扫描的IP地址，我们就不认为它是来自GFW的主动探测。我们进一步检查并确认该探针是否属于GFW发送的任何已知类型的探针。        &lt;/p&gt;&lt;!-- l. 62 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;这两个系统独立工作。 &lt;/b&gt;新的审查机器&lt;em&gt;纯粹是&lt;/em&gt;根据被动流量分析做出封杀决定，而不依赖中国知名的主动探测基础设施 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XWinter2012a&#34;&gt;67&lt;/a&gt;,&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;,&lt;a href=&#34;#XWinter-obfs2-probe&#34;&gt;66&lt;/a&gt;,&lt;a href=&#34;#Xknock-knock-tor&#34;&gt;64&lt;/a&gt;,&lt;a href=&#34;#XEnsafi2015b&#34;&gt;27&lt;/a&gt;]&lt;/span&gt;。我们之所以知道这一点，是因为虽然GFW仍然向服务器发送主动探测，但在超过99%的测试中，GFW在封锁一个连接之前没有向服务器发送过任何主动探测。举个例子，&lt;a href=&#34;#table:probes&#34;&gt;如表2&lt;/a&gt;所总结的，我们进行了33119次连接，但只收到179次主动探测。事实上，与之前的工作 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;, §4.2]&lt;/span&gt;的发现相似，主动探测很少被触发。        &lt;/p&gt;&lt;!-- l. 87 --&gt;
        &lt;p class=&#34;indent&#34;&gt;我们想强调的是，这一发现并不意味着对主动探测的防御没有必要或不再重要 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XFrolov2020a&#34;&gt;34&lt;/a&gt;,&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;,&lt;a href=&#34;#XAnonymous2021ShadowsocksAdvise&#34;&gt;9&lt;/a&gt;]&lt;/span&gt;。恰恰相反，我们认为GFW对纯被动流量分析的依赖，部分原因是Shadowsocks、Outline、VMess和其他许多翻墙软件已经对主动探测采取了有效的防御措施 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XFrolov2020a&#34;&gt;34&lt;/a&gt;、&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;、&lt;a href=&#34;#XAnonymous2021ShadowsocksAdvise&#34;&gt;9&lt;/a&gt;、&lt;a href=&#34;#XShadowsocks2022-spec&#34;&gt;19&lt;/a&gt;、&lt;a href=&#34;#Xoutline-v1.1.0&#34;&gt;43&lt;/a&gt;、&lt;a href=&#34;#Xoutline-changes&#34;&gt;32&lt;/a&gt;、&lt;a href=&#34;#Xshadowsocks-rust-v1.8.5&#34;&gt;71&lt;/a&gt;]&lt;/span&gt;。GFW仍然向服务器发送主动探测这一事实，意味着审查者仍然试图使用主动探测，尽可能准确地识别翻墙服务器。        &lt;/p&gt;&lt;!-- l. 98 --&gt;
        &lt;p class=&#34;noindent&#34;&gt; &lt;b&gt;主动探测系统对可疑流量应用了五条豁免规则，并增加了一条基于载荷长度的豁免规则。 &lt;/b&gt;这个实验表明了两点。首先，与Alice等人 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;, §4.2]&lt;/span&gt;的研究结果类似，主动探测系统应用一个额外的规则来检查连接中的有效载荷的长度。在我们的案例中，只有200字节有效载荷的连接曾经触发了主动探测，而2字节或50字节的连接则从来没有。其次，如果流量符合&lt;a href=&#34;#alg:blocking&#34;&gt;算法1&lt;/a&gt;中列出的五条豁免规则中的任何一条，那么该流量也不会触发主动探测系统。        &lt;/p&gt;&lt;!-- l. 126 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;自2019年以来，主动探测系统已经有所发展。 &lt;/b&gt;我们想知道&lt;a href=&#34;#alg:blocking&#34;&gt;算法1&lt;/a&gt;中的检测规则是否曾经被用来触发主动探测。为了分析它，我们从Alice等人 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;, §4.1]&lt;/span&gt;的低熵实验中获得了282个曾经被重放的有效载荷（这证明这些有效载荷曾经触发了GFW的主动探测）。然后我们写了一个程序来确定一个有效载荷是否会被当前的阻断系统豁免，并将获得的282个有效载荷输入该程序。结果，以前触发主动探测的45个探测被豁免了（根据规则&lt;code&gt;Ex3&lt;/code&gt;）。2022年5月19日，我们反复发送这45个有效载荷，让它们被GFW看到，并确认它们确实被当前的阻断系统豁免了。对于每个有效载荷，我们用它从腾讯云北京的VPS到Digital Ocean旧金山的水槽服务器进行了25次连接。 这个结果表明， &lt;em&gt;自2020年以来，GFW很可能已经更新了其主动探测系统的流量分析模块&lt;/em&gt;。此外，目前GFW发送的探针也与2020年观察到的探针不同 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;, §3.2]&lt;/span&gt;。 新的探针基本上是随机有效载荷，分别以16、64和256字节为中位数的分布。对于这些长度中的每一个，GFW发送的探针数量大致相同：一台服务器收到了48、46和47个探针，另一台收到了238、228和233个探针。        &lt;/p&gt;
        &lt;h2 class=&#34;sectionHead&#34; id=&#34;6&#34;&gt;
           &lt;a id=&#34;sec:widespread&#34; href=&#34;#sec:widespread&#34;&gt; &lt;span class=&#34;titlemark&#34;&gt;6 &lt;/span&gt;了解阻断策略&lt;/a&gt;       &lt;/h2&gt;
       &lt;!-- l. 4 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;在本节中，我们进行了测量实验，以确定审查者的封锁策略。我们发现，可能是为了减少误报和降低运营成本，审查者策略性地将封锁范围限制在热门数据中心的特定IP范围内，并对发往这些IP范围的所有连接采用概率性封堵策略，封锁率大约为26%。        &lt;/p&gt;&lt;!-- l. 12 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;6.1&#34;&gt;
           &lt;a id=&#34;sec:internet-scanning&#34; href=&#34;#sec:internet-scanning&#34;&gt; &lt;span class=&#34;titlemark&#34;&gt;6.1 &lt;/span&gt;互联网扫描实验&lt;/a&gt;           &lt;/h3&gt;
       &lt;!-- l. 15 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;2022年5月12日，我们从位于科罗拉多大学博尔德分校的服务器上对互联网上10%的IPv4地址的TCP 80端口进行了扫描。按照前人工作中，如何识别在互联网扫描中发现不可靠主机的方法 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xlzr&#34;&gt;41&lt;/a&gt;]&lt;/span&gt;，我们排除了那些TCP响应窗口为0的服务器（因为我们无法向他们发送数据），以及不接受后续连接的IP地址。这就给我们留下了700万个可扫描的IP地址。然后，我们将这700万个IP地址随机平均分成九个组，并将每组分配到腾讯云北京数据中心的九个实验节点上。然后，我们将一个我们编写的测量程序安装在所有九个实验节点上，并用它进行实验。对于每个IP，该程序连续连接到其80端口，最多25次，每次连接间有一秒钟的间隔。在每个连接中，我们发送相同的50个字节的随机的、可以触发封锁的数据。如果我们在发送数据后看到连续5次连接超时（连接失败），我们就将该IP标记为受影响新审查系统的影响。 反之，如果所有25次连接都成功，我们则将该IP标记为未受到影响。我们将完全无法连接的IP标记为未知（例如，服务器关闭，或者与GFW无关的网络故障使我们无法首先连接）。        &lt;/p&gt;&lt;!-- l. 34 --&gt;
        &lt;p class=&#34;indent&#34;&gt;我们还重复了这个过程，但发送了50个字节的&lt;code&gt;\x00&lt;/code&gt;，这个载荷并会不触发GFW的封锁。如果一个服务器在这个测试中也被标记为受到影响，那这很可能是由于服务器封锁了我们的连接，而不是GFW封锁的。我们从受到影响的IP结果中排除这些IP。这样就只剩下600多万个IP了。        &lt;/p&gt;&lt;!-- l. 39 --&gt;
        &lt;p class=&#34;indent&#34;&gt;最后，我们排除了可能是由于间歇性网络故障或不可靠的有利条件造成的 &#34;模棱两可 &#34;的结果。 具体来说，我们排除了那些被我们的随机载荷或全零载荷扫描标记为未知（我们从未能够连接），或有间歇性连接超时（例如，几个连接超时，但不是连续的5个）的IP。这就留下了550万个我们可以很容易地将其标记为不受影响（所有25个连接都成功了）或受影响（在某些时候，在我们发送随机数据后，它似乎被封锁了）的IP地址。        &lt;/p&gt;&lt;!-- l. 53 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;6.2&#34;&gt;

               &lt;a id=&#34;sec:affected-ips-asns&#34; href=&#34;#sec:affected-ips-asns&#34;&gt;  &lt;span class=&#34;titlemark&#34;&gt;6.2 &lt;/span&gt;并非所有子网或自治系统都受到同等程度的审查 &lt;/a&gt;       &lt;/h3&gt;
        &lt;figure class=&#34;figure&#34; id=&#34;fig:asn-prefix&#34;&gt;
            &lt;!-- l. 56 --&gt;
            &lt;p class=&#34;noindent&#34;&gt; &lt;img alt=&#34;&#34; src=&#34;figures/asn-prefix-cdf-.png&#34;&gt;
                &lt;a id=&#34;x1-15002&#34;&gt;&lt;/a&gt;
            &lt;/p&gt;
            &lt;figcaption class=&#34;caption&#34;&gt;

                   &lt;a href=&#34;#fig:asn-prefix&#34;&gt;  &lt;span class=&#34;id&#34;&gt;图3： &lt;/span&gt; &lt;span class=&#34;content&#34;&gt; &lt;span class=&#34;ptmb8t-&#34;&gt;受影响的AS和IP前缀的比例 &lt;/span&gt;-- &lt;/span&gt;&lt;/a&gt;对于每个自治系统（AS）（和/20IP前缀），我们计算GFW影响的IP占其中所有测试IP的比例，并绘制CDF。我们可以看到，只有一小部分AS受到影响，大多数子网受影响与否的状态是&#34;全有或全无&#34;（要么整个子网的IP都受到影响，要么只有极少数IP受到影响）。                &lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-15001r6  --&gt;
        &lt;/figure&gt;
        &lt;figure class=&#34;figure&#34; id=&#34;fig:top-asn&#34;&gt;
            &lt;!-- l. 58 --&gt;
            &lt;p class=&#34;noindent&#34;&gt; &lt;img alt=&#34;&#34; src=&#34;figures/top-asn-.png&#34;&gt;
                &lt;a id=&#34;x1-15004&#34;&gt;&lt;/a&gt;
            &lt;/p&gt;
            &lt;figcaption class=&#34;caption&#34;&gt;

               &lt;a href=&#34;#fig:top-asn&#34;&gt;  &lt;span class=&#34;id&#34;&gt;图4： &lt;/span&gt; &lt;span class=&#34;content&#34;&gt; &lt;span class=&#34;ptmb8t-&#34;&gt;受影响最大的自治系统 &lt;/span&gt;&lt;/span&gt;&lt;/a&gt;--我们观察到，并非所有的自治系统（AS）都受到影响，甚至在每个AS中，不同的前缀受到的影响也不同。对于每个AS，我们查看了他们网络中的每个/20IP前缀，并计算了每个/20子网中被封锁的IP的比例。结果非常接近于全有或全无：要么/20中的所有IP都受到影响，要么没有。                &lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-15003r6  --&gt;
        &lt;/figure&gt;
       &lt;!-- l. 60 --&gt;
        &lt;p class=&#34;indent&#34;&gt;在经过处理的550万个IP中，&lt;b&gt;98%的IP地址没有受到&lt;/b&gt;GFW封锁的&lt;b&gt;影响&lt;/b&gt;，这表明中国在采用这种新的审查系统时是相当保守的。我们使用&lt;code&gt;pyasn&lt;/code&gt;以及2022年4月的AS数据库 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xpyasn&#34;&gt;51&lt;/a&gt;]&lt;/span&gt;，将这550万个IP地址归入其分配的IP前缀和AS中。 对于大于/20的IP前缀，我们将其分成每/20前缀一组，以保持分配的大小大致相同。我们的550万个IP包括了538个至少有5个测量结果的AS，其中绝大多数基本不受GFW的阻断影响。        &lt;/p&gt;&lt;!-- l. 71 --&gt;
        &lt;p class=&#34;indent&#34;&gt;&lt;a href=&#34;#fig:asn-prefix&#34;&gt;图3&lt;/a&gt;显示了受影响的自治系统（ASes）和/20IP前缀的分布情况。我们发现，90%以上的AS是以全有或全无的方式受到影响的：要么我们在AS中测试的所有IP地址都受到GFW的阻断影响，要么我们在AS中测试的所有IP地址都没有受到影响。我们还观察到，只有少数AS受到影响：超过95%的AS被观察到只有不到10%的IP地址受到影响，只有7个AS被观察到其中有超过30%的IP地址受到了影响。        &lt;/p&gt;&lt;!-- l. 86 --&gt;
&lt;p class=&#34;indent&#34;&gt;&lt;a href=&#34;#fig:top-asn&#34;&gt;图4&lt;/a&gt;显示了受影响最大的AS。虽然测量结果偏向于显示较大规模的AS（因为在我们的扫描中占有更多的IP），但它显示了受到严重影响的AS（例如，阿里巴巴美国，Constant）和未受影响的AS（Akamai，Cloudflare）。此外，一些AS既有受影响的IP前缀，也有不受影响的IP前缀（亚马逊、Digital OCean、Linode）。我们看到的所有受影响或部分受影响的AS都是&lt;b&gt;受欢迎的，可用于托管代理服务器的VPS供应商&lt;/b&gt;。而未受影响的大型AS通常不向个人客户出售VPS主机（如CDN）。        &lt;/p&gt;


        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;6.3&#34;&gt;
          &lt;a id=&#34;sec:blocking-rate&#34; href=&#34;#sec:blocking-rate&#34;&gt; &lt;span class=&#34;titlemark&#34;&gt;6.3 &lt;/span&gt;概率封堵的特点&lt;/a&gt;
	&lt;/h3&gt;
       &lt;!-- l. 107 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;正如&lt;a href=&#34;#sec:methodology&#34;&gt;第3节&lt;/a&gt;所介绍的，在得出任何关于封锁的结论之前，我们发送最多25次具有相同有效载荷的连接。这是必要的，因为审查者仅是有概率地实行封锁的。换句话说，仅仅向受影响的服务器发送一次随机的有效载荷，只是有时会触发阻断；但是，如果一个人不断向受影响的服务器发送相同有效载荷的连接，那么阻断终会发生。这就产生了一个疑问：一个连接被封锁的概率是多少？以及为什么审查者只是有概率地实行封锁？        &lt;/p&gt;&lt;!-- l. 118 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;估计封锁概率。 &lt;/b&gt;在我们对10%的互联网的扫描中（&lt;a href=&#34;#sec:affected-ips-asns&#34;&gt;第6.2节&lt;/a&gt;），有109,489个IP地址被我们标记为受到封锁影响。如&lt;a href=&#34;#figure:blocking-rate-fit&#34;&gt;第5节&lt;/a&gt;所示，在被封锁之前，我们可以与每个IP地址进行成功的随机数据连接的数量分布符合一个几何分布。这个结果表明，对每次连接的阻断是独立的，概率为\(26.3\%\)。        &lt;/p&gt;&lt;!-- l. 126 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;为什么采用概率封锁。 &lt;/b&gt;我们猜想，审查者采用概率封锁可能有两个原因：首先，它允许审查者只检查四分之一的连接，减少计算资源。第二，它帮助审查者减少对非翻墙连接的误伤。虽然这种减少也是以降低真阳性率为代价的，但残留审查可能弥补了这一点：一旦一个连接被封锁，其随后的连接也会被封锁数分钟。这使得翻墙流量一旦被发现就很难再成功连接。这也可能进一步支持了之前的说法，即审查者更重视降低检测中的假阳性率，而不执着于极高的真阳性率 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XTschantz2016a&#34;&gt;57&lt;/a&gt;]&lt;/span&gt;。        &lt;/p&gt;
        &lt;figure class=&#34;figure&#34; id=&#34;figure:blocking-rate-fit&#34;&gt;
            &lt;!-- l. 141 --&gt;
            &lt;p class=&#34;noindent&#34;&gt; &lt;img alt=&#34;&#34; src=&#34;figures/blocking-rate-fit-.png&#34;&gt;
                &lt;a id=&#34;x1-16002&#34;&gt;&lt;/a&gt;
            &lt;/p&gt;
            &lt;figcaption class=&#34;caption&#34;&gt;


               &lt;a href=&#34;#figure:blocking-rate-fit&#34;&gt;  &lt;span class=&#34;id&#34;&gt;图5： &lt;/span&gt; &lt;span class=&#34;content&#34;&gt;&lt;/span&gt;&lt;/a&gt;从我们在中国的客户端发往109,489个受影响的IP地址，在每个IP地址被封锁前，已经成功的连接的数量的累积分布函数(CDF)。我们对每个IP地址的80端口进行了最多25次连接。该分布符合几何分布，表明GFW对每个连接的阻断是独立的，其概率为\(p=26.3\%\)。                &lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-16001r6  --&gt;
        &lt;/figure&gt;

        &lt;h2 class=&#34;sectionHead&#34;, id=&#34;7&#34;&gt;
           &lt;a id=&#34;sec:evaluation&#34; href=&#34;#sec:evaluation&#34;&gt; &lt;span class=&#34;titlemark&#34;&gt;7 &lt;/span&gt;评估GFW的检测规则&lt;/a&gt;       &lt;/h2&gt;
       &lt;!-- l. 3 --&gt;
&lt;p class=&#34;noindent&#34;&gt;在本节中，我们评估了&lt;a href=&#34;#sec:reverse-engineering&#34;&gt;第4节&lt;/a&gt;中推断出的GFW检测规则的假阳性率和我们推测的全面性。为了确定这种阻断对常规流量可能产生的影响，我们在不实际阻断任何流量的情况下，在我们大学的网络流量上模拟了推断出的检测规则。与GFW不同，我们对观察到的&lt;em&gt;所有&lt;/em&gt;TCP连接模拟了检测规则，而没有将检测仅仅限制在26%的发往流行数据中心的特定IP范围。我们假设在大学网络中很少甚至没有翻墙流量，这样任何根据检测规则被阻断的流量就可能代表了检测中的&lt;em&gt;假阳性&lt;/em&gt;。我们发现，我们推断出的检测算法将阻止大学网络上所有连接的大约0.6%。由于GFW的黑箱性质，我们推断出的规则可能只是GFW使用全部规则的一个子集；但是，证据表明，当我们将被判断为会被阻断的连接的前缀加上随机数据，一并从中国发往受到影响的IP地址时，所有被&lt;a href=&#34;#alg:blocking&#34;&gt;算法1&lt;/a&gt;判断为会被阻断的连接真的被GFW阻断了。这表明我们推断的规则很好地覆盖了GFW实际使用的规则。        &lt;/p&gt;&lt;!-- l. 25 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;7.1&#34;&gt;

           &lt;a id=&#34;traffic-analysis-exp&#34; href=&#34;#traffic-analysis-exp&#34;&gt;  &lt;span class=&#34;titlemark&#34;&gt;7.1 &lt;/span&gt;流量分析实验 &lt;/a&gt;       &lt;/h3&gt;

       &lt;!-- l. 27 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;我们拥有对科罗拉多大学博尔德分校40Gbps的实时网络流量的访问权。这一权限允许我们处理校园内所有传入和传出的数据包的副本。利用这一点，我们收集了一个数据集，其中&lt;em&gt;只包含目的地IP和端口号&lt;/em&gt;，以及不符合&lt;a href=&#34;#alg:blocking&#34;&gt;算法1&lt;/a&gt;中任何豁免规则的连接的的有效载荷的&lt;em&gt;前6个字节&lt;/em&gt;。更确切地说，我们使用&lt;code&gt;PF_RING&lt;/code&gt; &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xpfring&#34;&gt;50&lt;/a&gt;]&lt;/span&gt;实现了一个自定义的数据包分析工具。对于每个连接，我们检查了客户端发送的第一个数据包。我们确保该数据包具有正确的TCP校验和，并且其序列号是连接中TCP握手后的第一个预期数据包（确保我们没有错过第一个数据包）。对于那些没有被&lt;a href=&#34;#alg:blocking&#34;&gt;算法1&lt;/a&gt;豁免的连接，即那些我们预计会被封锁的连接，我们记录了目标端口和连接的前六个字节，以帮助识别其协议。        &lt;/p&gt;&lt;!-- l. 47 --&gt;
&lt;p class=&#34;indent&#34;&gt;我们在2022年7月至2022年9月期间进行了这种收集。我们总共分析了17亿个连接，并记录了44,2928个不同的将被封锁的连接的前6字节。对于这44,2928个6字节前缀中的每一个，我们将相同的194字节的随机数据附加到它上面，使之成为一个200字节的有效载荷。然后，我们在2022年9月重复发送每个有效载荷，使其经过真正的GFW，以测试它们是否真的被封锁了，或者反而有我们之前没有发现的豁免情况。对于每个有效载荷，我们携带着它，从腾讯云北京的VPS向Digital Ocean旧金山的水槽服务器发送多达25个连接。        &lt;/p&gt;


        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;7.2&#34;&gt;
          &lt;a id=&#34;sec:blocking-analysis&#34; href=&#34;#sec:blocking-analysis&#34;&gt;  &lt;span class=&#34;titlemark&#34;&gt;7.2 &lt;/span&gt; &lt;/a&gt; &lt;a id=&#34;sec:blocking-analysis&#34; href=&#34;#sec:blocking-analysis&#34;&gt;实验结果和分析 &lt;/a&gt;
	&lt;/h3&gt;
       &lt;!-- l. 70 --&gt;
&lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;估算假阳性率。&lt;/b&gt;  在2022年7月至2022年9月期间，我们总共分析了该大学网络上的17亿个连接。对于每个连接，我们确定&lt;a href=&#34;#alg:blocking&#34;&gt;算法1&lt;/a&gt;中的哪些豁免规则可以使其免于被阻断。&lt;a href=&#34;#figure:exemptions&#34;&gt;如图6&lt;/a&gt;所示，我们观察到，在我们推断的GFW的检测规则下，&lt;em&gt;该大学平均有0.6%的TCP连接会被阻止&lt;/em&gt;。        &lt;/p&gt;

        &lt;figure class=&#34;figure&#34; id=&#34;figure:exemptions&#34;&gt;
            &lt;!-- l. 65 --&gt;
            &lt;p class=&#34;noindent&#34;&gt; &lt;img alt=&#34;&#34; src=&#34;figures/exemptions-.png&#34;&gt;
                &lt;a id=&#34;x1-18002&#34;&gt;&lt;/a&gt;
            &lt;/p&gt;
            &lt;figcaption class=&#34;caption&#34;&gt;

                   &lt;a href=&#34;#figure:exemptions&#34;&gt;  &lt;span class=&#34;id&#34;&gt;图6： &lt;/span&gt; &lt;span class=&#34;content&#34;&gt;&lt;b&gt;常见的豁免 &lt;/b&gt;&lt;/span&gt;&lt;/a&gt;--对于科罗拉多大学博尔德分校的实时流量中的每个连接，我们确定&lt;a href=&#34;#alg:blocking&#34;&gt;算法1&lt;/a&gt;中的哪些规则可以使其免于被阻止。我们将第&lt;a href=&#34;#sec:allowed-protocols&#34;&gt;4.3节中&lt;/a&gt;的豁免规则Ex5分为3、4、5字节的模式，并将它们呈现在三行中，以便进行细粒度的分类。我们分析了从2022年7月到2022年9月收集的17亿个连接。为了简洁起见，这张图只显示了计数大于100万的交叉点。 我们在全集中观察到37个不同的豁免交叉点。                &lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-18001r7  --&gt;
        &lt;/figure&gt;

       &lt;!-- l. 88 --&gt;
        &lt;p class=&#34;indent&#34;&gt;审查者至少采用了两种策略来减少假阳性（误封）。首先，正如&lt;a href=&#34;#sec:widespread&#34;&gt;第6节&lt;/a&gt;所介绍的，GFW只对一部分IP子网进行审查。这一决定可能是为了缓解审查者所面临的基本比率谬误问题(base rate fallacy) &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xaxelsson1999base&#34;&gt;11&lt;/a&gt;]&lt;/span&gt;。由于翻墙连接相对占比较小，所以即使算法的的误报率很小（如0.6%），但如果算法被广泛应用于所有流量，也会导致误伤很多的非翻墙流量。通过缩小其适用的IP范围，中国可以减少其检测算法带来的误伤。其次，正如&lt;a href=&#34;#sec:blocking-rate&#34;&gt;第6.3节&lt;/a&gt;所探讨的那样，即使是对这一小部分发往受到审查影响的IP子网上的流量，GFW也只阻止所有流量的四分之一。这就进一步将误伤数量降低到原本的四分之一。        &lt;/p&gt;&lt;!-- l. 104 --&gt;
&lt;p class=&#34;indent&#34;&gt;我们发现的0.6%的连接也有可能就是完全加密流量。为了研究这种可能性，我们对每个连接中看到的独特的6字节前缀的数量进行了统计，根据推断出的规则，这些前缀将被GFW阻止。如果这些连接都真的是完全加密的代理，那么我们与其会看到在可能的6字节值上有一个均匀的分布（256^6）。否则，如果有频繁出现的6字节值，那么这些前缀则有可能属于流行协议，这也就代表GFW的流量检测出现了误报。        &lt;/p&gt;&lt;!-- l. 113 --&gt;

        &lt;figure class=&#34;img&#34; id=&#34;fig:blocked-cdf&#34;&gt;
            &lt;!-- l. 79 --&gt;
            &lt;p class=&#34;noindent&#34;&gt; &lt;img alt=&#34;&#34; src=&#34;figures/blocked-cdf-.png&#34;&gt;
                &lt;a id=&#34;x1-19002&#34;&gt;&lt;/a&gt;
            &lt;/p&gt;
            &lt;figcaption class=&#34;caption&#34;&gt;
               &lt;a href=&#34;#fig:blocked-cdf&#34;&gt;
                    &lt;span class=&#34;id&#34;&gt;图7： &lt;/span&gt;
                    &lt;span class=&#34;content&#34;&gt;&lt;b&gt;被阻断的连接的前6字节 &lt;/b&gt;-- &lt;/span&gt;&lt;/a&gt;对于在我们推断的GFW规则下，会被阻断的来自我们网络实时流量的970万（0.6%）连接，我们计算其不同的前6字节出现的次数。最流行的6字节前缀在47.9万个连接中出现（5.0%），这意味着一条明确允许这个6字节值的豁免规则可以将GFW的假阳性率降低。                &lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-19001r7  --&gt;
        &lt;/figure&gt;


&lt;p class=&#34;indent&#34;&gt;&lt;a href=&#34;#fig:blocked-cdf&#34;&gt;图7&lt;/a&gt;显示了在我们推断的GFW规则下，来自大学网络的实时流量中，被标记会被阻断的所有970万个连接的前6字节的分布情况。此外，&lt;a href=&#34;#table:repeated&#34;&gt;表3&lt;/a&gt;显示了将被阻断的连接的前6字节值。虽然我们无法识别其中的许多协议，但它们的出现频率和低熵表明，它们不可能是完全加密的代理。        &lt;/p&gt;&lt;!-- l. 121 --&gt;


        &lt;div class=&#34;table&#34;&gt;
            &lt;!-- l. 81 --&gt;
            &lt;p class=&#34;indent&#34;&gt; &lt;/p&gt;
            &lt;figure class=&#34;table&#34; id=&#34;table:repeated&#34;&gt;
                &lt;div class=&#34;tabular&#34;&gt;
                    &lt;table class=&#34;tabular&#34; id=&#34;TBL-4&#34;&gt;
                        &lt;colgroup id=&#34;TBL-4-1g&#34;&gt;
                            &lt;col id=&#34;TBL-4-1&#34;&gt;
                            &lt;col id=&#34;TBL-4-2&#34;&gt;
                            &lt;col id=&#34;TBL-4-3&#34;&gt;
                            &lt;col id=&#34;TBL-4-4&#34;&gt;
                        &lt;/colgroup&gt;
                        &lt;tr id=&#34;TBL-4-1-&#34;&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-1-1&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
                                &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;字节数（十六进制）&lt;/span&gt;&lt;/div&gt;
                            &lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-1-2&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
                                &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;端口号&lt;/span&gt;&lt;/div&gt;
                            &lt;/td&gt;
                            &lt;td class=&#34;td11&#34; colspan=&#34;2&#34; id=&#34;TBL-4-1-3&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
                                &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;出现频次&lt;/span&gt;&lt;/div&gt;
                            &lt;/td&gt;
                        &lt;/tr&gt;
                        &lt;tr id=&#34;TBL-4-2-&#34;&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-2-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span class=&#34;cmtt-9&#34;&gt;45 44 00 01 00 00 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-2-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;5222 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-2-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;479K &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-2-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;5.0% &lt;/span&gt;&lt;/td&gt;
                        &lt;/tr&gt;
                        &lt;tr id=&#34;TBL-4-3-&#34;&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-3-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span class=&#34;cmtt-9&#34;&gt;ee 2f 8c ec 40 d1 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-3-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;8000 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-3-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;427K &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-3-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;4.4%&lt;/span&gt;&lt;/td&gt;
                        &lt;/tr&gt;
                        &lt;tr id=&#34;TBL-4-4-&#34;&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-4-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span class=&#34;cmtt-9&#34;&gt;00 00 00 00 00 00 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-4-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;50386 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-4-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;104K &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-4-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;1.1% &lt;/span&gt;&lt;/td&gt;
                        &lt;/tr&gt;
                        &lt;tr id=&#34;TBL-4-5-&#34;&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-5-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span class=&#34;cmtt-9&#34;&gt;00 c4 71 58 64 51 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-5-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;443 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-5-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;34K &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-5-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;0.4%&lt;/span&gt;&lt;/td&gt;
                        &lt;/tr&gt;
                        &lt;tr id=&#34;TBL-4-6-&#34;&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-6-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span class=&#34;cmtt-9&#34;&gt;00 C4 71 42 30 6E &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-6-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;443 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-6-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;33K &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-6-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;0.3% &lt;/span&gt;&lt;/td&gt;
                        &lt;/tr&gt;
                        &lt;tr id=&#34;TBL-4-7-&#34;&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-7-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span class=&#34;cmtt-9&#34;&gt;0E 53 77 61 72 6D &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-7-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;7680 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-7-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;32K &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-7-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;0.3% &lt;/span&gt;&lt;/td&gt;
                        &lt;/tr&gt;
                        &lt;tr id=&#34;TBL-4-8-&#34;&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-8-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span class=&#34;cmtt-9&#34;&gt;1B 00 04 C6 27 53 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-8-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;8886 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-8-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;32K &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-8-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;0.3% &lt;/span&gt;&lt;/td&gt;
                        &lt;/tr&gt;
                        &lt;tr id=&#34;TBL-4-9-&#34;&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-9-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span class=&#34;cmtt-9&#34;&gt;c6 e6 cd ed 00 00 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-9-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;33445 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-9-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;29K &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-9-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;0.3% &lt;/span&gt;&lt;/td&gt;
                        &lt;/tr&gt;
                        &lt;tr id=&#34;TBL-4-10-&#34;&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-10-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span class=&#34;cmtt-9&#34;&gt;00 01 00 00 0f 00 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-10-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;443 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-10-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;27K &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-10-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;0.3% &lt;/span&gt;&lt;/td&gt;
                        &lt;/tr&gt;
                        &lt;tr id=&#34;TBL-4-11-&#34;&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-11-1&#34; style=&#34;white-space:nowrap; text-align:left;&#34;&gt; &lt;span class=&#34;cmtt-9&#34;&gt;16 f1 04 00 a1 00 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-11-2&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;80 &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-11-3&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;12K &lt;/span&gt;&lt;/td&gt;
                            &lt;td class=&#34;td11&#34; id=&#34;TBL-4-11-4&#34; style=&#34;white-space:nowrap; text-align:right;&#34;&gt; &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;0.1% &lt;/span&gt;&lt;/td&gt;
                        &lt;/tr&gt;
                    &lt;/table&gt;
                &lt;/div&gt;
               &lt;a id=&#34;x1-19004&#34;&gt;&lt;/a&gt;
               &lt;figcaption class=&#34;caption&#34;&gt;

                       &lt;a href=&#34;#table:repeated&#34;&gt;  &lt;span class=&#34;id&#34;&gt;表3： &lt;/span&gt; &lt;span class=&#34;content&#34;&gt; &lt;b&gt;十个最常见的被阻断连接的前六个字节&lt;/b&gt;-- &lt;/span&gt;&lt;/a&gt;我们记录了在科罗拉多大学博尔德分校网络上模拟被阻断的所有连接的前六个字节。在这个数据中，我们找到重复的六个字节，并显示前十个最常见的六个字节的端口号，以及各自占总模拟被阻断连接的百分比。&lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-19003r7  --&gt;&lt;/figure&gt;
        &lt;/div&gt;

        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;估计推断出的规则的全面性。&lt;/b&gt;
            在我们制作的442,928个有效载荷中，我们发现只有一个前缀被GFW豁免了，它提醒我们注意TLS应用数据前缀豁免（&lt;code&gt;\x17\x03[\x00-\x09]&lt;/code&gt;）。我们把这条豁免规则加入到了我们的推断规则中（&lt;code&gt;Ex5&lt;/code&gt;）。这一结果表明，我们推断的豁免规则很好地覆盖了GFW实际使用的检测规则。        &lt;/p&gt;
        &lt;h2 class=&#34;sectionHead&#34;, id=&#34;8&#34;&gt;&lt;a id=&#34;sec:circumvention&#34; href=&#34;#sec:circumvention&#34;&gt; &lt;span class=&#34;titlemark&#34;&gt;8 &lt;/span&gt;规避策略&lt;/a&gt;       &lt;/h2&gt;
       &lt;!-- l. 4 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;我们对这个新的审查制度的理解帮助我们能够推导出多种规避策略。在&lt;a href=&#34;#sec:customizable-iv&#34;&gt;第8.1节&lt;/a&gt;和&lt;a href=&#34;#sec:popcount&#34;&gt;第8.2节&lt;/a&gt;中，我们介绍了两种被广泛采用的规避检测的方法，它们分别从2022年1月和2022年10月开始帮助中国的用户绕过这次的新审查技术。我们在&lt;a href=&#34;#sec:other-circumvention-strategies&#34;&gt;附录A&lt;/a&gt;中讨论了其他规避策略。我们负责任地及时与拥有数百万用户的各种流行的翻墙软件的开发者分享了我们的发现和建议，这一点我们将在&lt;a href=&#34;#sec:responsible-disclosure&#34;&gt;第8.3节&lt;/a&gt;中详细说明。        &lt;/p&gt;&lt;!-- l. 18 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;8.1&#34;&gt;

               &lt;a id=&#34;sec:customizable-iv&#34; href=&#34;#sec:customizable-iv&#34;&gt;  &lt;span class=&#34;titlemark&#34;&gt;8.1 &lt;/span&gt;可定制的有效载荷前缀 &lt;/a&gt;       &lt;/h3&gt;
       &lt;!-- l. 21 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;a href=&#34;#alg:blocking&#34;&gt;算法1&lt;/a&gt;中的豁免规则&lt;code&gt;Ex2&lt;/code&gt;和&lt;code&gt;Ex5&lt;/code&gt;只查看连接中的前几个字节。这样做能让GFW高效地豁免不是完全加密的流量；但这样的做法同时也使其可以被用来规避检测。具体来说，我们建议在（翻墙）连接的第一个数据包的有效载荷上预置一个可定制的前缀。        &lt;/p&gt;&lt;!-- l. 29 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;可定制的IV头。 &lt;/b&gt;Shadowsocks连接以初始化向量（IV）开始，根据加密方式的不同，其长度为16或32字节 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xshadowsocks&#34;&gt;22&lt;/a&gt;]&lt;/span&gt;。正如&lt;a href=&#34;#sec:ascii-exemption&#34;&gt;第4.2节&lt;/a&gt;所介绍的，将IV的前6个（或更多）字节变成可打印的ASCII，将使这些连接被&lt;code&gt;Ex2&lt;/code&gt;规则豁免。同样，将IV的前3、4或5个字节变成普通协议头，将使连接被&lt;code&gt;Ex5&lt;/code&gt;规则豁免（例如，将IV的前3个字节变成&lt;code&gt;0x16 0x03 0x03&lt;/code&gt;）。这些对策只需对客户端进行很小的改动，而对服务器没有任何改动，因此已经被许多流行的翻墙工具所采用 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xshadowsocks-rust-salt&#34;&gt;72&lt;/a&gt;,&lt;a href=&#34;#Xv2ray-salt&#34;&gt;62&lt;/a&gt;,&lt;a href=&#34;#Xsagernet-salt&#34;&gt;48&lt;/a&gt;,&lt;a href=&#34;#Xoutline-salt&#34;&gt;56&lt;/a&gt;]&lt;/span&gt;。将32字节IV的前几个字节限制为可打印的ASCII，不会将其随机性降低到影响加密安全性的程度。例如，即使将前6个字节固定为某个可打印的ASCII，IV中仍然有26个随机字节，这仍然比典型的16字节IV的随机性要大。        &lt;/p&gt;&lt;!-- l. 51 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;局限性。 &lt;/b&gt;这是一个权宜之计，有可能被审查者很容易地阻止。审查者可能会跳过前几个字节，将检测规则应用于连接中的其余数据。协议模仿在实践中也很困难 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XHoumansadr2013b&#34;&gt;39&lt;/a&gt;]&lt;/span&gt;。审查者可以执行更严格的检测规则，或对服务器进行主动探测，以检查它是否真的在运行TLS或HTTP。然而，这一策略在自2022年1月被许多流行的翻墙工具采用后，直到目前的2023年2月仍然有效。这一事实强调了即使是简单的应对方案也能有效对抗资源有限的审查者 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xcat-and-mouse&#34;&gt;8&lt;/a&gt;,&lt;a href=&#34;#XTschantz2016a&#34;&gt;57&lt;/a&gt;,&lt;a href=&#34;#XFifield2016a&#34;&gt;30&lt;/a&gt;]&lt;/span&gt;。      &lt;/p&gt;&lt;!-- l. 72 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;8.2&#34;&gt;

           &lt;a id=&#34;sec:popcount&#34; href=&#34;#sec:popcount&#34;&gt;  &lt;span class=&#34;titlemark&#34;&gt;8.2 &lt;/span&gt;改变Popcount &lt;/a&gt;       &lt;/h3&gt;
       &lt;!-- l. 75 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;正如&lt;a href=&#34;#sec:bit-counting&#34;&gt;第4.1节&lt;/a&gt;所介绍的，如果一个连接的第一个数据包每字节的1比特数量的平均值（popcount）小于等于3.4或大于等于4.6（&lt;code&gt;Ex1&lt;/code&gt;），GFW就会豁免该连接。基于这一观察，人们可以通过在数据包中插入额外的1（或者0）来增加（减少）popcount，以绕过封锁。我们设计并分析了一个灵活的方案，它可以将每字节的popcount改变为任何给定的值或范围。我们在Shadowsocks-rust &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xshadowsocks-rust&#34;&gt;54&lt;/a&gt;]&lt;/span&gt;和Shadowsocks-Android &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xshadowsocks-android&#34;&gt;6&lt;/a&gt;]&lt;/span&gt;上实现了这个方案。自2022年10月以来帮助中国的用户绕过封锁 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xcat-and-mouse&#34;&gt;8&lt;/a&gt;]&lt;/span&gt;。2023年1月，面向中国的一个大型翻墙服务提供商（要求不具名），也采用了这个方案的其中一个版本，并取得了类似的成功。        &lt;/p&gt;&lt;!-- l. 93 --&gt;
        &lt;p class=&#34;indent&#34;&gt;从一个高度概括的层面看，我们把原始的完全加密的数据包作为输入：通过只对密文进行操作，我们无需承担其保密性被破坏的风险。当发送一个数据包时，我们首先计算其每字节的平均popcount；如果该值大于4，那么我们计算我们必须向数据包中添加多少个1比特，以获得一个超过4.6popcount的载荷。反之，如果popcount小于4，那么我们要计算要增加多少个0比特才能使popcount减少到3.4以下。在任何一种情况下，我们在原始密文中添加必要数量的1比特或0比特，然后添加4个字节，表示所添加的比特数，最终给我们一个比特串\(B\)，使其每字节的popcount值会被豁免。        &lt;/p&gt;&lt;!-- l. 109 --&gt;
        &lt;p class=&#34;indent&#34;&gt;当然，简单地添加1或0会很容易产生协议指纹。为了解决这个问题，我们进行比特级的随机重新排序。特别是，我们利用现有的共享秘密，如密码，作为一个种子，以确定的方式构建一个置换向量。在每个连接中，我们更新这个排列向量，并在发送前用它来对比特串\(B\)中的所有比特重新排序。为了解码，接收方首先更新排列向量，然后用它来还原对比特串的排序；然后读取最后4个字节来确定增加的比特数，删除该比特数，从而能够恢复原来的（完全加密）数据包。        &lt;/p&gt;&lt;!-- l. 124 --&gt;
        &lt;p class=&#34;indent&#34;&gt;在实践中，我们额外采取了两个步骤来进一步混淆流量。因为如果所有的连接都共享相同的平均字节popcount值，那这是就会成为一个明显的指纹，所以我们将popcount的目标值设置为一个可参数化的范围。其次，由于明文的4字节长度标签可能成为一个指纹，所以我们对其进行加密（与这些翻墙工具对代理流量进行加密的方式相同）。        &lt;/p&gt;&lt;!-- l. 145 --&gt;
&lt;p class=&#34;indent&#34;&gt;这个方案有几个优点。&lt;em&gt;首先&lt;/em&gt;，该方案支持可参数化地调整平均每字节popcount的值，以防GFW更新其popcount规则来缩小被豁免的popcount范围。&lt;em&gt;其次&lt;/em&gt;，由于它的精心设计，没有明显的指纹会向审查者发出信号，表明这是一个经过popcount调整的数据包。&lt;em&gt;最后&lt;/em&gt;，它的流量开销很低；它只添加严格需要数量的1（或0）比特。在最坏的情况下，即把popcount从4增加到4.6，这只产生了大约17.6%的额外开销。因此，它不仅可以应用于第一个数据包，还可以应用于连接中的每一个数据包。这样即使审查者在未来检测除第一个数据包以外的数据包，这一策略也仍然有效。        &lt;/p&gt;&lt;!-- l. 191 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h3 class=&#34;subsectionHead&#34;, id=&#34;8.3&#34;&gt;

           &lt;a id=&#34;sec:responsible-disclosure&#34; href=&#34;#sec:responsible-disclosure&#34;&gt;  &lt;span class=&#34;titlemark&#34;&gt;8.3 &lt;/span&gt;负责任的披露 &lt;/a&gt;       &lt;/h3&gt;
       &lt;!-- l. 194 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;2021年11月16日，在GFW采用这种新的封锁方式的十天后 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAnonymous2021Shadowsocks&#34;&gt;10&lt;/a&gt;]&lt;/span&gt;，我们向公众披露了这种新封锁方式的细节 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xtwitter-blocking-announcement-en&#34;&gt;37&lt;/a&gt;,&lt;a href=&#34;#Xtwitter-blocking-announcement-zh&#34;&gt;38&lt;/a&gt;]&lt;/span&gt;。随着我们对这种新封锁的更深入理解，我们得出并评估了不同的规避策略。我们负责任地及时与拥有&lt;em&gt;数百万用户&lt;/em&gt;的各种流行的翻墙工具的开发者分享了我们的发现和建议，包括Shadowsocks &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xshadowsocks&#34;&gt;22&lt;/a&gt;]&lt;/span&gt;, V2Ray &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xv2ray&#34;&gt;59&lt;/a&gt;]&lt;/span&gt;, Outline &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xoutline&#34;&gt;42&lt;/a&gt;]&lt;/span&gt;, Lantern &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xlantern&#34;&gt;20&lt;/a&gt;]&lt;/span&gt;, Psiphon &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xpsiphon3&#34;&gt;21&lt;/a&gt;]&lt;/span&gt;, and Conjure &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xconjure&#34;&gt;33&lt;/a&gt;]&lt;/span&gt;。下面我们详细介绍我们的披露和反审查社区的反应。        &lt;/p&gt;&lt;!-- l. 205 --&gt;
        &lt;p class=&#34;indent&#34;&gt;2022年1月13日，我们与一群开发者分享了我们的第一个规避策略。这个解决方案，详见&lt;a href=&#34;#sec:customizable-iv&#34;&gt;第8.1节&lt;/a&gt;，只需要对客户端进行的很少量的代码修改，而无需对服务器进行任何修改。到2022年1月14日，Shadowsocks-rust开发者zonyitoo、V2Ray开发者Xiaokang Wang和Sagernet开发者nekohasekai已经将这个规避解决方案作为选项添加到他们的客户端 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xshadowsocks-rust-salt&#34;&gt;72&lt;/a&gt;,&lt;a href=&#34;#Xv2ray-salt&#34;&gt;62&lt;/a&gt;,&lt;a href=&#34;#Xsagernet-salt&#34;&gt;48&lt;/a&gt;]&lt;/span&gt;。2022年10月4日，database64128在Shadowsocks-go上实现了这种策略的用户自定义版本 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xshadowsocks-go-salt&#34;&gt;18&lt;/a&gt;]&lt;/span&gt;。2022年10月25日，Outline开发者为他们的客户端采用了一个高度可定制的解决方案 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xoutline-salt&#34;&gt;56&lt;/a&gt;]&lt;/span&gt;。2022年10月14日，我们发布了修改过的Shadowsocks &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xcat-and-mouse&#34;&gt;8&lt;/a&gt;]&lt;/span&gt;，其采用了我们在&lt;a href=&#34;#sec:popcount&#34;&gt;第8.2节&lt;/a&gt;中详述的改变popcount的策略。        &lt;/p&gt;&lt;!-- l. 223 --&gt;
        &lt;p class=&#34;indent&#34;&gt;截至2023年2月14日，这些工具所采用的所有规避策略据报告&lt;em&gt;在中国仍然有效&lt;/em&gt;。2023年1月，Outline的开发者报告说，自从他们采用上述缓解措施后，（选择加入匿名数据统计的）Outline服务器的数量增加了一倍。2023年1月，中国的一家大型翻墙服务提供商（目前要求不具名）也采用了我们提出的方案，并且也取得了成功。        &lt;/p&gt;&lt;!-- l. 233 --&gt;
        &lt;p class=&#34;indent&#34;&gt;虽然我们没有研究中国以外的国家，但根据汇报，我们提出的规避策略在另一个封锁全加密代理的国家——伊朗，也是有效的 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xiran-shadowsocks-not-working&#34;&gt;65&lt;/a&gt;]&lt;/span&gt;。2023年2月13日，Lantern的开发者报告说，自2023年1月以来，所采用的协议&#34;占了我们来自伊朗流量的大部分&#34;。2023年2月13日，另一个翻墙服务提供商报告说，自2022年11月启用Outline的规避功能后，他们的服务从完全被封锁变成了每天为85万名来自伊朗的用户提供服务。        &lt;/p&gt;&lt;!-- l. 1 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h2 class=&#34;sectionHead&#34;, id=&#34;9&#34;&gt;

           &lt;a id=&#34;sec:ethics&#34; href=&#34;#sec:ethics&#34;&gt;  &lt;span class=&#34;titlemark&#34;&gt;9 &lt;/span&gt; &lt;/a&gt; &lt;a id=&#34;sec:ethics&#34; href=&#34;#sec:ethics&#34;&gt;伦理 &lt;/a&gt;     &lt;/h2&gt;
       &lt;!-- l. 3 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;对审查机器的测量研究带有一定的风险和责任，我们对此非常重视。我们的研究涉及处理敏感的网络流量，扫描大量的主机，并在一个敏感国家进行网络测量。由于这项工作的敏感性，我们向我们机构的伦理审查委员会(IRB)提出了详细的研究计划以供审核。虽然IRB决定这项工作不涉及人类主体（因此不需要IRB审核），但我们仍然设计并采取了广泛的防范措施，以尽量减少潜在的风险和伤害。在本节中，我们将讨论这些风险，并详细介绍我们为管理和减轻这些风险而采取的防范措施。        &lt;/p&gt;&lt;!-- l. 16 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;流量分析。 &lt;/b&gt;我们在部署我们的网络测量工具时，与我们大学的网络运营商密切合作。他们在管理此类项目方面有着丰富的经验，可以确保我们的测量工具在网络使用政策允许的范围内，并尊重用户隐私。我们设计的实验避免收集潜在的敏感信息，如IP地址，因为这可能会暴露人类的身份信息。我们收集最少的信息，并专注于跟踪汇总统计，以避免可能分析个人信息的风险。具体来说，我们只分析每个连接中的第一个TCP数据包，而忽略任何后续数据包。此外，我们只记录&lt;em&gt;前六个字节&lt;/em&gt;的数据，并对其出现次数进行汇总统计；没有任何原始流量被人类检查或记录。我们奉行最小特权原则，只让我们团队中的一部分人访问这些数据。        &lt;/p&gt;&lt;!-- l. 42 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;互联网扫描。 &lt;/b&gt;为了最大限度地减少因互联网扫描让某些服务器不堪重负的风险，我们遵循了先前在互联网扫描和大规模审查制度测量方面的最佳做法 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xzmap&#34;&gt;26&lt;/a&gt;,&lt;a href=&#34;#XVanderSloot2018a&#34;&gt;60&lt;/a&gt;]&lt;/span&gt;。我们在科罗拉多大学博尔德分校的扫描主机的80端口上设置了一个专门的网页，以及一个反向DNS。该网页解释了我们的扫描收集了哪些数据，并提供了选择退出未来扫描的方法。在我们的整个实验期间，我们收到并履行了七个删除请求，根据过去扫描互联网的经验，七个请求属正常情况 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XDurumeric-Internet-Scan-2014&#34;&gt;25&lt;/a&gt;，§5.3]&lt;/span&gt;  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#Xzmap&#34;&gt;26&lt;/a&gt;，§5.1]&lt;/span&gt;。我们对这些服务器的后续扫描只占用很低的带宽：我们为每个请求发送不到100字节，而且对每台服务器每一次只发送一个连接，以避免压垮他们的网络或连接池资源。        &lt;/p&gt;&lt;!-- l. 61 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;实验节点的使用。 &lt;/b&gt;从受审查国家内部对审查进行主动测量需要额外的考虑和审慎的评估。我们首先探索了采用远程测量的可能性，但确认这种审查不能从中国境外触发。虽然被审查者观察到敏感连接所产生的风险可能很低，但我们仍然遵循先前工作中讨论的类似标准，限制了我们发送的敏感连接的数量 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;。特别是，我们只将80端口的查询发送给正在监听该端口的服务器，并且没有对同一服务器进行并发连接，以避免让服务器不堪重负。        &lt;/p&gt;&lt;!-- l. 71 --&gt;
        &lt;p class=&#34;indent&#34;&gt;我们的研究团队咨询了对中国审查制度的性质和法律问题有着深刻理解的专家，他们帮助我们在使用哪些VPS供应商和如何使用它们方面做出了明智的决定。我们选择了两家由知名商业公司经营的大型VPS供应商，以避免任何潜在的针对个人的法律风险。我们用一位既不是中国公民也没有居住在中国的研究人员的准确身份和联系信息注册了我们的VPS。在整个研究过程中，我们没有收到来自VPS供应商的投诉。 正如在之前的工作中所做的那样 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XAlice2020a&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;，我们没有提前通知这些大型的VPS供应商。这样做一方面避免了潜在的实验偏差（如对结果的干扰），另一方面也避免了给VPS供应商带来潜在的法律义务或负担。        &lt;/p&gt;&lt;!-- l. 88 --&gt;
        &lt;p class=&#34;indent&#34;&gt;我们对服务器可能被GFW暂时或长期封锁的风险进行管理。对于在本研究中我们控制的所有主机，我们给它们分配了专用的IP地址，以避免共享的IP地址被封锁。此外，我们从一家允许翻墙，甚至提供自动安装翻墙工具的VPS供应商那里租用了我们位于非审查网络的主机。我们使用自己的服务器进行了测试，与之前关于中国残留审查的研究结果类似 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XBock2021a&#34;&gt;13&lt;/a&gt;,&lt;a href=&#34;#XChai2019a&#34;&gt;17&lt;/a&gt;,&lt;a href=&#34;#XWang2017a&#34;&gt;63&lt;/a&gt;,&lt;a href=&#34;#XBock2020ESNI&#34;&gt;14&lt;/a&gt;]&lt;/span&gt;，我们确认GFW从未封锁我们任何机器的IP地址超过180秒，而且封锁只影响我们自己的客户端到服务器的流量，不干扰其他人的客户端到服务器的流量。在我们的服务器已经被使用了五个月后仍未被长期封锁的情况下，我们才开始进行大规模扫描。        &lt;/p&gt;
        &lt;h2 class=&#34;sectionHead&#34;, id=&#34;10&#34;&gt;

           &lt;a id=&#34;sec:conclusion&#34; href=&#34;#sec:conclusion&#34;&gt;  &lt;span class=&#34;titlemark&#34;&gt;10 &lt;/span&gt;结论 &lt;/a&gt;     &lt;/h2&gt;
       &lt;!-- l. 4 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;在这项工作中，我们曝光并研究了中国最新的审查系统，该系统可以实时动态地封锁完全加密流量。这种强大的新审查形式已经部分地或完全地影响了许多主流翻墙工具，包括Shadowsocks、Outline、VMess、Obfs4、Lantern、Phiphon和Conjure。我们进行了广泛的测量，以推断GFW的流量分析算法的各种属性，并用真实世界的流量评估了算法的全面性和误报率。我们利用我们对这个新审查系统的了解，得出有效的规避策略。我们负责任地将我们的发现和建议透露给不同的反审查工具的开发者，从而帮助数百万用户成功地规避了这种新形式的封锁。        &lt;/p&gt;&lt;!-- l. 1 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h2 class=&#34;likesectionHead&#34;, id=&#34;acks&#34;&gt;
           &lt;a id=&#34;acknowledgements&#34; href=&#34;#acknowledgements&#34;&gt;鸣谢&lt;/a&gt;     &lt;/h2&gt;
        &lt;p&gt;&lt;a id=&#34;Q1-1-27&#34;&gt;&lt;/a&gt;&lt;/p&gt;
       &lt;!-- l. 4 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;我们感谢我们的牧羊人和其他匿名审稿人的宝贵意见和反馈。我们也感谢勇敢的中国用户向我们立即报告封锁事件。我们感谢Benjamin M. Schwartz, zonyitoo, nekohasekai, database64128, AkinoKaede, Max Lv, Mygod, DuckSoft, 以及其他许多来自反审查社区的开发者，感谢他们及时的补丁、协助和讨论。我们对来自Jigsaw的Outline开发者Vinicius Fortuna表示诚挚的感谢，感谢他提供有见地的建议并协助我们接触社区。我们感谢Lantern开发者Adam Fisk和Ox Cart分享了他们的工具在伊朗的部署情况。我们也感谢Milad Nasr提供的丰富信息。 我们感谢klzgrad针对论文初稿分享的独到思考和评论。我们也非常感谢David Fifield，他提供了一个针对obfs4的概念验证补丁，为研究讨论做出了贡献，对论文的早期草稿提供了建设性的反馈和建议，并在整个研究过程中提供了指导和支持。        &lt;/p&gt;&lt;!-- l. 32 --&gt;
        &lt;p class=&#34;indent&#34;&gt;这项工作得到了美国国家科学基金会CNS-1943240、CNS-1953786、CNS-1954063和CNS-2145783拨款的部分支持，也得到了美国国防部高级研究计划局（DARPA）的青年教师奖计划（DARPA-RA-21-03-09-YFA9-FP-003）和DARPA的HR00112190125号协议支持。所表达的观点、意见和/或发现属于作者本人，不应解读为代表美国国防部或美国政府的官方观点或政策。批准公开发布；分发无限制。        &lt;/p&gt;
        &lt;h2 class=&#34;likesectionHead&#34;, id=&#34;availability&#34;&gt;
           &lt;a id=&#34;availability&#34; href=&#34;#availability&#34;&gt;可用性&lt;/a&gt;        &lt;/h2&gt;
        &lt;p&gt;&lt;a id=&#34;Q1-1-29&#34;&gt;&lt;/a&gt;&lt;/p&gt;
       &lt;!-- l. 4 --&gt;
&lt;p class=&#34;noindent&#34;&gt;为了保持可复现性并鼓励后续的研究，我们发布了我们的源代码和数据：
  &lt;a class=&#34;url&#34; href=&#34;https://gfw.report/publications/usenixsecurity23/en&#34;&gt;https://gfw.report/publications/usenixsecurity23/en&lt;/a&gt;。
&lt;/p&gt;&lt;!-- l. 1 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h2 class=&#34;likesectionHead&#34;, id=&#34;references&#34;&gt;
           &lt;a id=&#34;references&#34; href=&#34;#references&#34;&gt;参考文献&lt;/a&gt;       &lt;/h2&gt;
       &lt;!-- l. 1 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;

        &lt;div class=&#34;thebibliography&#34;&gt;
            &lt;ol class=citation-numbering&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XWikipedia19CPC&#34;&gt;
                    &lt;/a&gt;
                    19th Central Committee of the Chinese Communist Party.
                    &lt;a class=&#34;url&#34; href=&#34;https://en.wikipedia.org/wiki/19th_Central_Committee_of_the_Chinese_Communist_Party&#34;&gt;
                     https://en.wikipedia.org/wiki/19th_Central_Committee_of_the_Chinese_Communist_Party
                    &lt;/a&gt;
                    .
                &lt;/li&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XAbuseIPDB&#34;&gt;
                    &lt;/a&gt;
                    Abuseipdb.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.abuseipdb.com/&#34;&gt;
                     https://www.abuseipdb.com/
                    &lt;/a&gt;
                    .
                &lt;/li&gt;
                &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xip2location&#34;&gt;
                    &lt;/a&gt;
                    Ip2location lite data.
                    &lt;a class=&#34;url&#34; href=&#34;http://www.ip2location.com/&#34;&gt;
                     http://www.ip2location.com/
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XWikipediaSixthPlenary&#34;&gt;
                    &lt;/a&gt;
                    Sixth Plenary Session of the 19th CPC Central Committee.
                    &lt;a class=&#34;url&#34; href=&#34;https://zh.wikipedia.org/zh-cn/中国共产党第十九届中央委员会第六次全体会议&#34;&gt;
                        https://zh.wikipedia.org/zh-cn/中国共产党第十九届中央委员会第六次全体会议
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XAlice2020a&#34;&gt;
                    &lt;/a&gt;
                    Alice, Bob, Carol, Jan Beznazwy, and
                                  Amir
                                  Houmansadr. How China detects and blocks
                                  Shadowsocks. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Internet Measurement Conference
                    &lt;/span&gt;
                    .
                                  ACM, 2020.
                    &lt;a class=&#34;url&#34; href=&#34;https://censorbib.nymity.ch/pdf/Alice2020a.pdf&#34;&gt;
                     https://censorbib.nymity.ch/pdf/Alice2020a.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xshadowsocks-android&#34;&gt;
                    &lt;/a&gt;
                    Shadowsocks android
                                  developers. Shadowsocks-android.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/shadowsocks/shadowsocks-android&#34;&gt;
                     https://github.com/shadowsocks/shadowsocks-android
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xobfs4&#34;&gt;
                    &lt;/a&gt;
                    Yawning Angel et al. Obfs4 specification.
                    &lt;a class=&#34;url&#34; href=&#34;https://gitlab.com/yawning/obfs4/blob/master/doc/obfs4-spec.txt&#34;&gt;
                     https://gitlab.com/yawning/obfs4/blob/master/doc/obfs4-spec.txt
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xcat-and-mouse&#34;&gt;
                    &lt;/a&gt;
                    Anonymous and Amonymous. Sharing
                                  a modified
                                  Shadowsocks as well
                                  as our thoughts on the cat-and-mouse game, October
                                  2022.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/136&#34;&gt;
                     https://github.com/net4people/bbs/issues/136
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XAnonymous2021ShadowsocksAdvise&#34;&gt;
                    &lt;/a&gt;
                    Anonymous,
                                  Anonymous, Anonymous, David
                                  Fifield, and Amir Houmansadr. A practical guide to
                                  defend against the GFW’s latest active probing, January
                                  2021.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/58&#34;&gt;
                     https://github.com/net4people/bbs/issues/58
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XAnonymous2021Shadowsocks&#34;&gt;
                    &lt;/a&gt;
                    Anonymous, Vinicius
                                  Fortuna, David
                                  Fifield, Xiaokang Wang, Mygod, moranno,
                                  et al. Properly configured shadowsocks servers
                                  reportedly blocked in china, November 2021.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/69#issuecomment-962666385&#34;&gt;
                     https://github.com/net4people/bbs/issues/69#issuecomment-962666385
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xaxelsson1999base&#34;&gt;
                    &lt;/a&gt;
                    Stefan Axelsson. The
                                  base-rate fallacy and its
                                  implications for the difficulty of intrusion detection. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Proceedings of the 6th ACM Conference on Computer
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     and Communications Security
                    &lt;/span&gt;
                    , pages 1–7, 1999.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.cse.psu.edu/~trj1/cse543-f16/docs/Axelsson.pdf&#34;&gt;
                     https://www.cse.psu.edu/~trj1/cse543-f16/docs/Axelsson.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XBock2020Iran&#34;&gt;
                    &lt;/a&gt;
                    Kevin
                                  Bock. Iran: A new model for censorship, March 2020.
                    &lt;a class=&#34;url&#34; href=&#34;https://geneva.cs.umd.edu/posts/iran-whitelister/&#34;&gt;
                     https://geneva.cs.umd.edu/posts/iran-whitelister/
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XBock2021a&#34;&gt;
                    &lt;/a&gt;
                    Kevin Bock, Pranav Bharadwaj, Jasraj
                                  Singh, and
                                  Dave Levin. Your censor is my censor: Weaponizing
                                  censorship infrastructure for availability attacks. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Workshop on Offensive Technologies
                    &lt;/span&gt;
                    . IEEE, 2021.
                    &lt;a class=&#34;url&#34; href=&#34;http://www.cs.umd.edu/~dml/papers/weaponizing_woot21.pdf&#34;&gt;
                     http://www.cs.umd.edu/~dml/papers/weaponizing_woot21.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XBock2020ESNI&#34;&gt;
                    &lt;/a&gt;
                    Kevin Bock, iyouport, Anonymous,
                                  Louis-Henri
                                  Merino, David Fifield, Amir Houmansadr, and
                                  Dave Levin. Exposing and circumventing
                                  China’s censorship of ESNI, August 2020.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/43#issuecomment-673322409&#34;&gt;
                     https://github.com/net4people/bbs/issues/43#issuecomment-673322409
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xbonaventure-mptcp-tls-00&#34;&gt;
                    &lt;/a&gt;
                    Olivier Bonaventure.
                                  MPTLS : Making
                                  TLS and Multipath TCP stronger together.
                                  Internet-Draft draft-bonaventure-mptcp-tls-00,
                                  Internet Engineering Task Force, October 2014.
                    &lt;a class=&#34;url&#34; href=&#34;https://datatracker.ietf.org/doc/draft-bonaventure-mptcp-tls/00/&#34;&gt;
                     https://datatracker.ietf.org/doc/draft-bonaventure-mptcp-tls/00/
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xobfuscated-openssh&#34;&gt;
                    &lt;/a&gt;
                    brl. Obfuscated OpenSSH.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/brl/obfuscated-openssh&#34;&gt;
                     https://github.com/brl/obfuscated-openssh
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XChai2019a&#34;&gt;
                    &lt;/a&gt;
                    Zimo Chai, Amirhossein Ghafari, and
                                  Amir
                                  Houmansadr. On the importance of encrypted-SNI
                                  (ESNI) to censorship circumvention. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Free and Open
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Communications on the Internet
                    &lt;/span&gt;
                    . USENIX, 2019.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/foci19-paper_chai_update.pdf&#34;&gt;
                     https://www.usenix.org/system/files/foci19-paper_chai_update.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xshadowsocks-go-salt&#34;&gt;
                    &lt;/a&gt;
                    database64128. taint: add
                                  unsafe stream prefix, October 2022.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/shadowsocks/shadowsocks-org/issues/204#issuecomment-1266710067&#34;&gt;
                     https://github.com/shadowsocks/shadowsocks-org/issues/204#issuecomment-1266710067
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XShadowsocks2022-spec&#34;&gt;
                    &lt;/a&gt;
                    database64128, zonyitoo,
                                  Xiaokang Wang, and
                                  nekohasekai. Shadowsocks 2022 Edition: Secure L4
                                  Tunnel with Symmetric Encryption, October 2022.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/58&#34;&gt;
                     https://github.com/net4people/bbs/issues/58
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xlantern&#34;&gt;
                    &lt;/a&gt;
                    Lantern developers. Lantern.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/getlantern&#34;&gt;
                     https://github.com/getlantern
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xpsiphon3&#34;&gt;
                    &lt;/a&gt;
                    Psiphon3 developers. Psiphon3.
                    &lt;a class=&#34;url&#34; href=&#34;https://psiphon.ca/&#34;&gt;
                     https://psiphon.ca/
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xshadowsocks&#34;&gt;
                    &lt;/a&gt;
                    Shadowsocks
                                  developers. Shadowsocks aead cihpher specification.
                    &lt;a class=&#34;url&#34; href=&#34;https://shadowsocks.org/guide/aead.html&#34;&gt;
                     https://shadowsocks.org/guide/aead.html
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xvmess&#34;&gt;
                    &lt;/a&gt;
                    VMess developers. Vmess.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.v2fly.org/en_US/developer/protocols/vmess.html&#34;&gt;
                     https://www.v2fly.org/en_US/developer/protocols/vmess.html
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xobfsproxy&#34;&gt;
                    &lt;/a&gt;
                    Roger Dingledine. Obfsproxy: the
                                  next step in the censorship arms race.
                    &lt;a class=&#34;url&#34; href=&#34;https://blog.torproject.org/obfsproxy-next-step-censorship-arms-race&#34;&gt;
                     https://blog.torproject.org/obfsproxy-next-step-censorship-arms-race
                    &lt;/a&gt;
                    ,
                                  February 2012.
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XDurumeric-Internet-Scan-2014&#34;&gt;
                    &lt;/a&gt;
                    Zakir Durumeric,
                                  Michael Bailey, and
                                  J. Alex Halderman. An Internet-Wide view of
                                  Internet-Wide scanning. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     23rd USENIX Security
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Symposium (USENIX Security 14)
                    &lt;/span&gt;
                    , pages 65–78,
                                  San Diego, CA, August 2014. USENIX Association.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/conference/usenixsecurity14/technical-sessions/presentation/durumeric&#34;&gt;
                     https://www.usenix.org/conference/usenixsecurity14/technical-sessions/presentation/durumeric
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xzmap&#34;&gt;
                    &lt;/a&gt;
                    Zakir Durumeric, Eric Wustrow, and
                                  J. Alex
                                  Halderman. ZMap: Fast internet-wide scanning and
                                  its security applications. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     22nd USENIX Security
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Symposium (USENIX Security 13)
                    &lt;/span&gt;
                    , pages 605–620,
                                  Washington, D.C., August 2013. USENIX Association.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/conference/usenixsecurity13/technical-sessions/paper/durumeric&#34;&gt;
                     https://www.usenix.org/conference/usenixsecurity13/technical-sessions/paper/durumeric
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XEnsafi2015b&#34;&gt;
                    &lt;/a&gt;
                    Roya Ensafi, David Fifield,
                                  Philipp Winter,
                                  Nick Feamster, Nicholas Weaver, and Vern
                                  Paxson. Examining how the Great Firewall
                                  discovers hidden circumvention servers. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Internet Measurement Conference
                    &lt;/span&gt;
                    . ACM, 2015.
                    &lt;a class=&#34;url&#34; href=&#34;http://conferences2.sigcomm.org/imc/2015/papers/p445.pdf&#34;&gt;
                     http://conferences2.sigcomm.org/imc/2015/papers/p445.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xmeek-cyberoam&#34;&gt;
                    &lt;/a&gt;
                    David Fifield. Cyberoam firewall
                                  blocks meek by TLS signature.
                    &lt;a class=&#34;url&#34; href=&#34;https://groups.google.com/forum/#!topic/traffic-obf/BpFSCVgi5rs/&#34;&gt;
                     https://groups.google.com/forum/#!topic/traffic-obf/BpFSCVgi5rs/
                    &lt;/a&gt;
                    ,
                                  2016.
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XFifield2015a&#34;&gt;
                    &lt;/a&gt;
                    David Fifield, Chang Lan, Rod
                                  Hynes, Percy
                                  Wegmann, and Vern Paxson. Blocking-resistant
                                  communication through domain fronting.
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Privacy Enhancing Technologies
                    &lt;/span&gt;
                    , 2015(2), 2015.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.icir.org/vern/papers/meek-PETS-2015.pdf&#34;&gt;
                     https://www.icir.org/vern/papers/meek-PETS-2015.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XFifield2016a&#34;&gt;
                    &lt;/a&gt;
                    David Fifield and Lynn Tsai.
                                  Censors’ delay in
                                  blocking circumvention proxies. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Free and Open
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Communications on the Internet
                    &lt;/span&gt;
                    . USENIX, 2016.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci16/foci16-paper-fifield.pdf&#34;&gt;
                     https://www.usenix.org/system/files/conference/foci16/foci16-paper-fifield.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xmptcp&#34;&gt;
                    &lt;/a&gt;
                    A. Ford, C. Raiciu,
                                  M. Handley, O. Bonaventure, and C. Paasch. TCP
                                  Extensions for Multipath Operation with Multiple
                                  Addresses. RFC 8684, RFC Editor, March 2020.
                    &lt;a class=&#34;url&#34; href=&#34;https://tools.ietf.org/html/rfc8684&#34;&gt;
                     https://tools.ietf.org/html/rfc8684
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xoutline-changes&#34;&gt;
                    &lt;/a&gt;
                    Vinicius Fortuna. Outline
                                  changes
                                  since the prelinimary report, August 2020.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/22#issuecomment-670781627&#34;&gt;
                     https://github.com/net4people/bbs/issues/22#issuecomment-670781627
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xconjure&#34;&gt;
                    &lt;/a&gt;
                    Sergey Frolov, Jack Wampler, Sze Chuen
                                  Tan,
                                  J. Alex Halderman, Nikita Borisov, and Eric Wustrow.
                                  Conjure:
                                  Summoning proxies from unused address space. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Computer and Communications Security
                    &lt;/span&gt;
                    . ACM, 2019.
                    &lt;a class=&#34;url&#34; href=&#34;https://jhalderm.com/pub/papers/conjure-ccs19.pdf&#34;&gt;
                     https://jhalderm.com/pub/papers/conjure-ccs19.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XFrolov2020a&#34;&gt;
                    &lt;/a&gt;
                    Sergey Frolov, Jack Wampler, and
                                  Eric Wustrow. Detecting probe-resistant
                                  proxies. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Network and Distributed
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     System Security
                    &lt;/span&gt;
                    . The Internet Society, 2020.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.ndss-symposium.org/wp-content/uploads/2020/02/23087.pdf&#34;&gt;
                     https://www.ndss-symposium.org/wp-content/uploads/2020/02/23087.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xtlsfingerprint&#34;&gt;
                    &lt;/a&gt;
                    Sergey Frolov and Eric Wustrow.
                                  The use of
                                  TLS in censorship circumvention. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Network and
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Distributed System Security
                    &lt;/span&gt;
                    . The Internet Society,
                                  2019.
                    &lt;a class=&#34;url&#34; href=&#34;https://tlsfingerprint.io/static/frolov2019.pdf&#34;&gt;
                     https://tlsfingerprint.io/static/frolov2019.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XFrolov2020b&#34;&gt;
                    &lt;/a&gt;
                    Sergey Frolov and Eric Wustrow.
                                  HTTPT:
                                  A probe-resistant proxy. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Free and Open
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Communications on the Internet
                    &lt;/span&gt;
                    . USENIX, 2020.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/foci20-paper-frolov.pdf&#34;&gt;
                     https://www.usenix.org/system/files/foci20-paper-frolov.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xtwitter-blocking-announcement-en&#34;&gt;
                    &lt;/a&gt;
                    GFW Report.
                                  The GFW has now been
                                  able to dynamically block any seemingly
                                  random traffic in real time, November 2021.
                    &lt;a class=&#34;url&#34; href=&#34;https://twitter.com/gfw_report/status/1460796633571069955&#34;&gt;
                     https://twitter.com/gfw_report/status/1460796633571069955
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xtwitter-blocking-announcement-zh&#34;&gt;
                    &lt;/a&gt;
                    GFW Report. 有证据表明中国的防火长城已经对任何看似随机的流量进行动态的封锁, November 2021.
                    &lt;a class=&#34;url&#34; href=&#34;https://twitter.com/gfw_report/status/1460800856086003717&#34;&gt;
                     https://twitter.com/gfw_report/status/1460800856086003717
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XHoumansadr2013b&#34;&gt;
                    &lt;/a&gt;
                    Amir Houmansadr, Chad
                                  Brubaker, and Vitaly
                                  Shmatikov. The parrot is dead: Observing unobservable
                                  network communications. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Symposium on Security &amp;amp;
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Privacy
                    &lt;/span&gt;
                    . IEEE, 2013.
                    &lt;a class=&#34;url&#34; href=&#34;https://people.cs.umass.edu/~amir/papers/parrot.pdf&#34;&gt;
                     https://people.cs.umass.edu/~amir/papers/parrot.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xsssniff-isofew&#34;&gt;
                    &lt;/a&gt;
                    isofew. sssniff, 2017.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/isofew/sssniff&#34;&gt;
                     https://github.com/isofew/sssniff
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xlzr&#34;&gt;
                    &lt;/a&gt;
                    Liz Izhikevich, Renata Teixeira, and Zakir
                                  Durumeric. \(\{\)LZR\(\}\): Identifying unexpected internet
                                  services. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     30th USENIX Security Symposium
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     (USENIX Security 21)
                    &lt;/span&gt;
                    , pages 3111–3128, 2021.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/conference/usenixsecurity21/presentation/izhikevich&#34;&gt;
                     https://www.usenix.org/conference/usenixsecurity21/presentation/izhikevich
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xoutline&#34;&gt;
                    &lt;/a&gt;
                    Jigsaw. Outline.
                    &lt;a class=&#34;url&#34; href=&#34;https://getoutline.org/&#34;&gt;
                     https://getoutline.org/
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xoutline-v1.1.0&#34;&gt;
                    &lt;/a&gt;
                    Jigsaw. Outline v1.1.0.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/Jigsaw-Code/outline-ss-server/releases/tag/v1.1.0&#34;&gt;
                     https://github.com/Jigsaw-Code/outline-ss-server/releases/tag/v1.1.0
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xtor-cipher-list-ticket&#34;&gt;
                    &lt;/a&gt;
                    George Kadianakis. GFW
                                  probes based on tor’s ssl
                                  cipher list, 2011.
                    &lt;a class=&#34;url&#34; href=&#34;https://gitlab.torproject.org/legacy/trac/-/issues/4744&#34;&gt;
                     https://gitlab.torproject.org/legacy/trac/-/issues/4744
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xnaiveproxy&#34;&gt;
                    &lt;/a&gt;
                    klzgrad. NaïveProxy.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/klzgrad/naiveproxy&#34;&gt;
                     https://github.com/klzgrad/naiveproxy
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XLiang2020a&#34;&gt;
                    &lt;/a&gt;
                    Di Liang and Yongzhong He. Obfs4
                                  traffic
                                  identification based on multiple-feature fusion. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     2020
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     IEEE International Conference on Power, Intelligent
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Computing and Systems (ICPICS)
                    &lt;/span&gt;
                    , pages 323–327,
                                  2020.
                    &lt;a class=&#34;url&#34; href=&#34;https://ieeexplore.ieee.org/document/9202018&#34;&gt;
                     https://ieeexplore.ieee.org/document/9202018
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xsssniff-madeye&#34;&gt;
                    &lt;/a&gt;
                    madeye. sssniff, 2017.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/madeye/sssniff&#34;&gt;
                     https://github.com/madeye/sssniff
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xsagernet-salt&#34;&gt;
                    &lt;/a&gt;
                    nekohasekai. Add shadowsocks
                                  reducedIvHeadEntropy option, January 2022.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/SagerNet/v2ray-core/commit/27fad5daaa1c33ed1c928d6c447df983a88d14a3&#34;&gt;
                     https://github.com/SagerNet/v2ray-core/commit/27fad5daaa1c33ed1c928d6c447df983a88d14a3
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xactive-probing-ssh&#34;&gt;
                    &lt;/a&gt;
                    Leif Nixon. Some
                                  observations on the Great Firewall of China, November
                                  2011.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.nsc.liu.se/~nixon/sshprobes.html&#34;&gt;
                     https://www.nsc.liu.se/~nixon/sshprobes.html
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xpfring&#34;&gt;
                    &lt;/a&gt;
                    ntop. PF_RING: High-speed
                                  packet capture, filtering and analysis.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.ntop.org/products/packet-capture/pf_ring/&#34;&gt;
                     https://www.ntop.org/products/packet-capture/pf_ring/
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xpyasn&#34;&gt;
                    &lt;/a&gt;
                    pyasn developers. pyasn.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/hadiasghari/pyasn&#34;&gt;
                     https://github.com/hadiasghari/pyasn
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xrfc8446-tls13-hello&#34;&gt;
                    &lt;/a&gt;
                    Eric Rescorla. The
                                  Transport Layer Security
                                  (TLS) Protocol Version 1.3. RFC 8446, August 2018.
                    &lt;a class=&#34;url&#34; href=&#34;https://datatracker.ietf.org/doc/html/rfc8446#section-4.1.2&#34;&gt;
                     https://datatracker.ietf.org/doc/html/rfc8446#section-4.1.2
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xrfc5246-appendixE&#34;&gt;
                    &lt;/a&gt;
                    Eric Rescorla and Tim
                                  Dierks. The
                                  Transport Layer Security (TLS) Protocol
                                  Version 1.2. RFC 5246, August 2008.
                    &lt;a class=&#34;url&#34; href=&#34;https://datatracker.ietf.org/doc/html/rfc5246#appendix-E&#34;&gt;
                     https://datatracker.ietf.org/doc/html/rfc5246#appendix-E
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xshadowsocks-rust&#34;&gt;
                    &lt;/a&gt;
                    Shadowsocks rust developers.
                                  Shadowsocks-rust.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/shadowsocks/shadowsocks-rust&#34;&gt;
                     https://github.com/shadowsocks/shadowsocks-rust
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xtor-block-ethiopia-ciphers&#34;&gt;
                    &lt;/a&gt;
                    Runa Sandvik.
                                  Ethiopia
                                  introduces deep packet inspection.
                    &lt;a class=&#34;url&#34; href=&#34;https://blog.torproject.org/ethiopia-introduces-deep-packet-inspection&#34;&gt;
                     https://blog.torproject.org/ethiopia-introduces-deep-packet-inspection
                    &lt;/a&gt;
                    ,
                                  2012.
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xoutline-salt&#34;&gt;
                    &lt;/a&gt;
                    Benjamin M. Schwartz and Vinicius
                                  Fortuna.
                                  feat: salt prefix support, November 2022.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/Jigsaw-Code/outline-client/pull/1454&#34;&gt;
                     https://github.com/Jigsaw-Code/outline-client/pull/1454
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XTschantz2016a&#34;&gt;
                    &lt;/a&gt;
                    Michael Carl Tschantz, Sadia
                                  Afroz, Anonymous,
                                  and Vern Paxson. SoK: Towards grounding
                                  censorship circumvention in empiricism. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Symposium on Security &amp;amp; Privacy
                    &lt;/span&gt;
                    . IEEE, 2016.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.eecs.berkeley.edu/~sa499/papers/oakland2016.pdf&#34;&gt;
                     https://www.eecs.berkeley.edu/~sa499/papers/oakland2016.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xgeph4-sosistab&#34;&gt;
                    &lt;/a&gt;
                    Eric Tung. Geph4
                                  sosistab - an obfuscated datagram transport for horrible
                                  networks.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/geph-official/sosistab&#34;&gt;
                     https://github.com/geph-official/sosistab
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xv2ray&#34;&gt;
                    &lt;/a&gt;
                    V2Ray developers. V2Ray.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/v2fly/v2ray-core&#34;&gt;
                     https://github.com/v2fly/v2ray-core
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XVanderSloot2018a&#34;&gt;
                    &lt;/a&gt;
                    Benjamin VanderSloot, Allison
                                  McDonald,
                                  Will Scott, J. Alex Halderman, and Roya
                                  Ensafi. Quack: Scalable remote measurement
                                  of application-layer censorship. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     USENIX
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Security Symposium
                    &lt;/span&gt;
                    . USENIX, 2018.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/usenixsecurity18/sec18-vandersloot.pdf&#34;&gt;
                     https://www.usenix.org/system/files/conference/usenixsecurity18/sec18-vandersloot.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XWang2015a&#34;&gt;
                    &lt;/a&gt;
                    Liang Wang, Kevin P. Dyer, Aditya
                                  Akella,
                                  Thomas Ristenpart, and Thomas Shrimpton.
                                  Seeing through network-protocol obfuscation. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Computer and Communications Security
                    &lt;/span&gt;
                    . ACM, 2015.
                    &lt;a class=&#34;url&#34; href=&#34;http://pages.cs.wisc.edu/~liangw/pub/ccsfp653-wangA.pdf&#34;&gt;
                     http://pages.cs.wisc.edu/~liangw/pub/ccsfp653-wangA.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xv2ray-salt&#34;&gt;
                    &lt;/a&gt;
                    Xiaokang Wang. Shadowsockets
                                  reduecd IV head
                                  entropy experiment, January 2022.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/v2fly/v2ray-core/pull/1552&#34;&gt;
                     https://github.com/v2fly/v2ray-core/pull/1552
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XWang2017a&#34;&gt;
                    &lt;/a&gt;
                    Zhongjie Wang, Yue Cao, Zhiyun Qian,
                                  Chengyu
                                  Song, and Srikanth V. Krishnamurthy. Your state is
                                  not mine: A closer look at evading stateful Internet
                                  censorship. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Internet Measurement Conference
                    &lt;/span&gt;
                    .
                                  ACM, 2017.
                    &lt;a class=&#34;url&#34; href=&#34;http://www.cs.ucr.edu/~krish/imc17.pdf&#34;&gt;
                     http://www.cs.ucr.edu/~krish/imc17.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xknock-knock-tor&#34;&gt;
                    &lt;/a&gt;
                    Tim Wilde. Knock knock
                                  knockin’ on bridges’ doors, 2012.
                    &lt;a class=&#34;url&#34; href=&#34;https://blog.torproject.org/blog/knock-knock-knockin-bridges-doors&#34;&gt;
                     https://blog.torproject.org/blog/knock-knock-knockin-bridges-doors
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xiran-shadowsocks-not-working&#34;&gt;
                    &lt;/a&gt;
                    WinkVPN,
                                  GibMeMyPacket, wkrp, et al.
                                  Shadowsocks blocked in Iran?, October 2022.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/net4people/bbs/issues/142#issuecomment-1289393093&#34;&gt;
                     https://github.com/net4people/bbs/issues/142#issuecomment-1289393093
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XWinter-obfs2-probe&#34;&gt;
                    &lt;/a&gt;
                    Philipp Winter. GFW
                                  actively probes obfs2bridges,
                                  March 2013.
                    &lt;a class=&#34;url&#34; href=&#34;https://bugs.torproject.org/8591&#34;&gt;
                     https://bugs.torproject.org/8591
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XWinter2012a&#34;&gt;
                    &lt;/a&gt;
                    Philipp Winter and Stefan
                                  Lindskog. How the Great
                                  Firewall of China is blocking Tor. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Free and Open
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Communications on the Internet
                    &lt;/span&gt;
                    . USENIX, 2012.
                    &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci12/foci12-final2.pdf&#34;&gt;
                     https://www.usenix.org/system/files/conference/foci12/foci12-final2.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XWinter2013b&#34;&gt;
                    &lt;/a&gt;
                    Philipp Winter, Tobias Pulls, and
                                  Juergen Fuss.
                                  ScrambleSuit: A polymorphic network protocol to
                                  circumvent censorship. In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Workshop on Privacy in the
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Electronic Society
                    &lt;/span&gt;
                    . ACM, 2013.
                    &lt;a class=&#34;url&#34; href=&#34;https://censorbib.nymity.ch/pdf/Winter2013b.pdf&#34;&gt;
                     https://censorbib.nymity.ch/pdf/Winter2013b.pdf
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XXspeed2021&#34;&gt;
                    &lt;/a&gt;
                    xspeed, Vinicius Fortuna, et al. I
                                  think
                                  SS is detected by GFW, November 2021.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/shadowsocks/shadowsocks-libev/issues/2860#issuecomment-974250511&#34;&gt;
                     https://github.com/shadowsocks/shadowsocks-libev/issues/2860#issuecomment-974250511
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;XHe2019a&#34;&gt;
                    &lt;/a&gt;
                    He Yongzhong, Hu Liping,
                                  and Gao Rui. Detection of Tor traffic hiding
                                  under obfs4 protocol based on two-level filtering.
                                  In
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     2019 2nd International Conference on Data
                    &lt;/span&gt;
                    &lt;span class=&#34;ptmri8t-&#34;&gt;
                     Intelligence and Security (ICDIS)
                    &lt;/span&gt;
                    , pages 195–200,
                                  2019.
                    &lt;a class=&#34;url&#34; href=&#34;https://ieeexplore.ieee.org/document/8855280&#34;&gt;
                     https://ieeexplore.ieee.org/document/8855280
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xshadowsocks-rust-v1.8.5&#34;&gt;
                    &lt;/a&gt;
                    zonyitoo.
                                  Shadowsocks-rust v1.8.5.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/shadowsocks/shadowsocks-rust/releases/tag/v1.8.5&#34;&gt;
                     https://github.com/shadowsocks/shadowsocks-rust/releases/tag/v1.8.5
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
                   &lt;li class=&#34;bibitem&#34;&gt;
                    &lt;a id=&#34;Xshadowsocks-rust-salt&#34;&gt;
                    &lt;/a&gt;
                    zonyitoo. Security:
                                  First 6 bytes of payload
                                  should be printable characters, January 2022.
                    &lt;a class=&#34;url&#34; href=&#34;https://github.com/shadowsocks/shadowsocks-rust/commit/53aab484f8daba6f5cee6896b034af943cc3d406&#34;&gt;
                     https://github.com/shadowsocks/shadowsocks-rust/commit/53aab484f8daba6f5cee6896b034af943cc3d406
                    &lt;/a&gt;
                    .
                   &lt;/li&gt;
            &lt;/ol&gt;
        &lt;/div&gt;


       &lt;!-- l. 13 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;
        &lt;/p&gt;
        &lt;h2 class=&#34;sectionHead&#34;, id=&#34;sec:other-circumvention-strategies&#34;&gt;

               &lt;a id=&#34;sec:other-circumvention-strategies&#34; href=&#34;#sec:other-circumvention-strategies&#34;&gt;  &lt;span class=&#34;titlemark&#34;&gt;A &lt;/span&gt;其他暂时性的规避策略 &lt;/a&gt;       &lt;/h2&gt;
       &lt;!-- l. 16 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;使用非TCP传输协议。 &lt;/b&gt;正如&lt;a href=&#34;#sec:residual&#34;&gt;第4.4节&lt;/a&gt;所介绍的，UDP流量不会触发阻断。目前，人们可以通过简单地切换到（或隧道传输）UDP或QUIC来翻墙。这只是一种权宜之计，因为审查者可以对UDP进行审查。        &lt;/p&gt;&lt;!-- l. 27 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;对第一个数据包进行Base64编码。 &lt;/b&gt;回顾一下，如果第一个数据包的50%以上的字节是可打印的ASCII码，GFW就不会对连接进行审查。满足这一特性的一个直接方法是对所有的加密流量进行简单的base64编码。这也只是一个权宜之计；base64编码的数据很容易被发现，审查者可以简单地进行base64解码，然后应用其规则。虽然它今天对GFW很有效，但我们不认为它是一个长期的解决方案。        &lt;/p&gt;&lt;!-- l. 42 --&gt;
        &lt;p class=&#34;noindent&#34;&gt;&lt;b&gt;超过20个连续的可打印的ASCII字节。 &lt;/b&gt;如果第一个数据包有超过20个连续的可打印的ASCII字节，GFW就会豁免连接。满足这一要求的方法之一是只对完全加密的数据包的一小部分进行base64编码，或者甚至只是在密码文本中插入至少21个可打印的ASCII字符。虽然我们认为这比对整个数据包进行base64编码更难发现，但它也让我们觉得仅仅是一种短期的权宜之计。        &lt;/p&gt;&lt;!-- l. 56 --&gt;
        &lt;p class=&#34;indent&#34;&gt;所有上述对策都可以只在客户端实现，而不需要代理服务器的支持。 这可以通过应用先前工作 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#XBock2020Iran&#34;&gt;12&lt;/a&gt;]&lt;/span&gt;中的一个想法来实现：发送一个诸如上述的数据包，由审查者处理，而&lt;em&gt;不是&lt;/em&gt;由代理服务器处理。例如，在发送连接的&lt;em&gt;实际&lt;/em&gt;第一个数据包之前，客户端可以发送一个满足上述规则之一的数据包，但它有一个错误的校验值（审查者不会检查，但代理会）或一个有限的TTL（大到足以到达审查者，但到达不了目标服务器）。 虽然这些技术首先是针对伊朗的协议过滤器验证的，但我们已经验证了相同的方法对GFW针对完全加密流量的封锁也起作用。虽然这为部署提供了一个令人鼓舞的简单途径，但它本身并没有将这些权宜之计提升为长期的解决方案。        &lt;/p&gt;

        &lt;!-- There really shouldn&#39;t be any extra &lt;/div&gt; which will close the &lt;div class=&#34;js-toc-cotent&#34;&gt; and make comments section not indexed by ToC JS script. --&gt;</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>Sharing a modified Shadowsocks</title>
        <link>https://gfw.report/blog/modified_shadowsocks/en/</link>
        <pubDate>Sat, 15 Oct 2022 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/modified_shadowsocks/en/</guid>
        
        <description>&lt;p&gt;In this post, we release and open source a modified version of Shadowsocks that can bypass the current GFW&amp;rsquo;s detection and blocking.
We first introduce the reason why this modified Shadowsocks can bypass the detection and blocking.
We then share a simple tutorial on how to setup the client and server. We will also cover two other ways that help Shadowsocks and VMess bypass the current GFW&amp;rsquo;s blocking.&lt;/p&gt;
&lt;h2 id=&#34;motivations&#34;&gt;Motivations&lt;/h2&gt;
&lt;p&gt;We release this modified Shadowsocks tool today for three reasons:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;First, we want to provide Chinese netizens with a (temporarily) viable solution to bypass censorship, mitigating the GFW&amp;rsquo;s massive blocking of multiple censorship circumvention tools since October 3rd, 2022.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Second, we would like to take this opportunity to start a discussion among anti-censorship researchers and developers. Our empirical research shows that the current GFW can already accurately identify Shadowsocks, VMess, and Obfs4 and many other full-encrypted protocols. We estimate that the GFW&amp;rsquo;s current traffic detection algorithm has &lt;code&gt;0.6%&lt;/code&gt; false positives, while the false negatives are almost negligible. This finding urgently requires us to brainstorm and discuss how to improve the current protocols collectively.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Finally, we would like to use this release as an experiment to observe both the censor and the anti-censorship community on how fast each side can react to a new (anti-)censorship event.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;why-can-this-modified-shadowsocks-circumvent-the-gfws-current-detection-and-blocking&#34;&gt;Why can this modified Shadowsocks circumvent the GFW&amp;rsquo;s current detection and blocking?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://gfw.report/publications/usenixsecurity23/en/&#34;&gt;We worked with other researchers to discover&lt;/a&gt; that the current GFW utilizes a number of different rules to identify fully encrypted protocols like Shadowsocks, VMesss, and Obfs4. One of these rules takes advantage of the fact that the ratio of 0 bit to 1 bit in these encrypted flows is close to 1:1. Therefore, if we add more 0s or 1s to the encrypted traffic and then rearrange the bit sequence, we can achieve the goal of changing the original ratio feature to bypass detection and blocking.&lt;/p&gt;
&lt;h2 id=&#34;how-do-i-use-this-modified-shadowsocks&#34;&gt;How do I use this modified Shadowsocks?&lt;/h2&gt;
&lt;p&gt;This modified version of Shadowsocks is based on &lt;a href=&#34;https://github.com/shadowsocks/shadowsocks-rust&#34;&gt;Shadowsocks-rust&lt;/a&gt;, and we also make use of &lt;a href=&#34;https://github.com/shadowsocks/shadowsocks-android&#34;&gt;Shadowsocks-android&lt;/a&gt; to compile the apk files for Android users. All client and server side software can be found at &lt;a href=&#34;https://github.com/gfw-report/shadowsocks-rust/tree/low-entropy&#34;&gt;this branch&lt;/a&gt; and &lt;a href=&#34;https://github.com/gfw-report/shadowsocks-rust/releases&#34;&gt;this release&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;installing-the-server&#34;&gt;Installing the server&lt;/h3&gt;
&lt;p&gt;The installation process is the same as installing any other &lt;code&gt;Shadowsocks-rust&lt;/code&gt; server.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;First you login to your remote server, and then get the &lt;a href=&#34;https://github.com/gfw-report/shadowsocks-rust/releases&#34;&gt;server binary&lt;/a&gt; with:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wget https://github.com/gfw-report/shadowsocks-rust/releases/download/v0.0.1-beta/shadowsocks-v1.15.0-alpha.9.x86_64-unknown-linux-gnu.tar.xz
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tar xvf shadowsocks-v1.15.0-alpha.9.x86_64-unknown-linux-gnu.tar.xz
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Then you create a configuration file:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;sudo nano server_config.json&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Copy and past the following settings to the file. Note that you need to replace the password &lt;code&gt;ExamplePassword&lt;/code&gt; with a much stronger one. A handy way to do this from your terminal is: &lt;code&gt;openssl rand -base64 16&lt;/code&gt;. You may also want to change the &lt;code&gt;server_port&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;#34;server&amp;#34;: &amp;#34;0.0.0.0&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;#34;server_port&amp;#34;: 8388,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;#34;password&amp;#34;: &amp;#34;ExamplePassword&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;#34;method&amp;#34;: &amp;#34;aes-256-gcm&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After finishing editing, you type &lt;code&gt;Ctrl + x&lt;/code&gt; to exit. The text editor will ask &lt;code&gt;&amp;quot;Save modified buffer?&amp;quot;&lt;/code&gt;, and you can type &lt;code&gt;y&lt;/code&gt; and then hit &lt;code&gt;Enter&lt;/code&gt;.&lt;/p&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Now you can start running the binary with the configuration file, but to make it work even after you ended your SSH session, you may want to create a &lt;code&gt;tmux&lt;/code&gt; session by:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tmux
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You then do:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;./ssserver -c ./server_config.json
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Finally, type &lt;code&gt;Ctrl + b&lt;/code&gt; and then type &lt;code&gt;d&lt;/code&gt; to detach from the tmux session.&lt;/p&gt;
&lt;h3 id=&#34;firewall-configuration&#34;&gt;Firewall configuration&lt;/h3&gt;
&lt;p&gt;We use &lt;code&gt;ufw&lt;/code&gt; to open ports for the Shadowsocks server.&lt;/p&gt;
&lt;p&gt;To install &lt;code&gt;ufw&lt;/code&gt; on a Debian-based server:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt update &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt install -y ufw
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then open ports for &lt;code&gt;ssh&lt;/code&gt; and &lt;code&gt;Shadowsocks-rust&lt;/code&gt;. Note that if you set the &lt;code&gt;server_port&lt;/code&gt; to a value different than &lt;code&gt;8388&lt;/code&gt; in &lt;code&gt;server_config.json&lt;/code&gt;, you need to change the value &lt;code&gt;8388&lt;/code&gt; below accordingly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo ufw allow ssh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo ufw allow &lt;span style=&#34;color:#ae81ff&#34;&gt;8388&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now enable &lt;code&gt;ufw&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo ufw enable
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If it prompts &lt;code&gt;Command may disrupt existing ssh connections. Proceed with operation (y|n)?&lt;/code&gt;, type &lt;code&gt;y&lt;/code&gt; and hit &lt;code&gt;Enter&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Finally, run &lt;code&gt;sudo ufw status&lt;/code&gt;, and the output should look like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Status: active
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;To                         Action      From
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--                         ------      ----
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;22/tcp                     ALLOW       Anywhere
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;8388                       ALLOW       Anywhere
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;22/tcp (v6)                ALLOW       Anywhere (v6)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;8388 (v6)                  ALLOW       Anywhere (v6)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;client-side-configuration&#34;&gt;Client side configuration&lt;/h3&gt;
&lt;p&gt;Below is a configuration file for Client. Remember to change the &lt;code&gt;server&lt;/code&gt; value from &lt;code&gt;ExampleServerIP&lt;/code&gt; to your remote server&amp;rsquo;s public IP address. If you used andorid and installed from the apk file we provided, the usage should be the same as usual.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;server&amp;#34;: &amp;#34;ExampleServerIP&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;server_port&amp;#34;: 8388,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;password&amp;#34;: &amp;#34;ExamplePassword&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;method&amp;#34;: &amp;#34;aes-256-gcm&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;local_address&amp;#34;: &amp;#34;127.0.0.1&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;local_port&amp;#34;: 1080
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;limitation-of-the-current-implementation&#34;&gt;Limitation of the current implementation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Since we made changes to the Shadowsocks protocol, it is not compatible with other Shadowsocks clients and servers for now. Users need to download the client and server we prepared.&lt;/li&gt;
&lt;li&gt;Currently, the clients only support Windows, Linux, macOS, Android phone, and Android TV. It doesn&amp;rsquo;t not support iOS. We welcome iOS developers who have the ability to implement this modified protocol. We also encourage iOS developers to contact us and we will share other ways to bypass the censorship with you.&lt;/li&gt;
&lt;li&gt;In terms of encryption method, the modified version does not yet support &lt;a href=&#34;https://github.com/Shadowsocks-NET/shadowsocks-specs/blob/main/2022-1-shadowsocks-2022-edition.md&#34;&gt;Shadowsocks-2022&lt;/a&gt;. This is not because we intend not to support it, rather, it&amp;rsquo;s just that we do not have enough time to do it yet. Our current recommended encryption method choices are: &lt;code&gt;chacha20-ietf-poly1305&lt;/code&gt; or &lt;code&gt;aes-256-gcm&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;In terms of implementation, we have made changes directly on the core code. It&amp;rsquo;s not because we want to start maintaining a separate folk of the Shadowsocks protocol, rather, we just have got enough time to make the modified algorithm a user-selectable option yet. We will actively communicate with the Shadowsocks developers and hope to eventually merge the new protocol into Shadowsocks as a user-selectable option.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;are-you-aware-of-any-other-ways-to-circumvent-the-current-blocking&#34;&gt;Are you aware of any other ways to circumvent the current blocking?&lt;/h2&gt;
&lt;p&gt;We know of two other currently viable options, all of which utilize a different traffic detection rule by the GFW.&lt;/p&gt;
&lt;p&gt;If you are a V2Ray user, you can turn on the &lt;code&gt;ExperimentReducedIvHeadEntropy&lt;/code&gt; option to avoid the GFW&amp;rsquo;s detection and blocking. The advantage of this option is that you do not need to make any changes to your servers.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/database64128&#34;&gt;@database64128&lt;/a&gt; also &lt;a href=&#34;https://github.com/shadowsocks/shadowsocks-org/issues/204#issuecomment-1266710067&#34;&gt;implemented another way to bypass the censorship&lt;/a&gt;. Because the protocol is changed, it requires updating both client and server to use it.&lt;/p&gt;
&lt;h2 id=&#34;acknowledgment&#34;&gt;Acknowledgment&lt;/h2&gt;
&lt;p&gt;We thank David Fifield for commenting on an earlier draft of this article.&lt;/p&gt;
&lt;h2 id=&#34;contact&#34;&gt;Contact&lt;/h2&gt;
&lt;p&gt;We encourage you to share your thoughts, comments, user experiences publicly or privately. Our private contact information can be found at the footer of &lt;a href=&#34;https://gfw.report&#34;&gt;GFW Report&lt;/a&gt;.&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>Sharing our thoughts on the cat-and-mouse game</title>
        <link>https://gfw.report/blog/thoughs_on_cat_and_mouse_game/en/</link>
        <pubDate>Sat, 15 Oct 2022 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/thoughs_on_cat_and_mouse_game/en/</guid>
        
        <description>&lt;p&gt;In this post, we share some of our thoughts on the cat-and-mouse game of censorship. Our views are based on our observations and reflections on both the censor and the anti-censorship community; we have also been deeply influenced by &lt;a href=&#34;https://github.com/klzgrad&#34;&gt;klzgrad&lt;/a&gt;, David Fifield, and many other anti-censorship developers and researchers.&lt;/p&gt;
&lt;p&gt;In particular, we start with answering why censor always starts the massive blocking a few days or weeks before politically sensitive period of time in China; we then argue that, comparing to the anti-censorship community, a fundamental weakness of censor is its inflexibility. We further discuss how to exploit censor&amp;rsquo;s weaknesses to achieve better anti-censorship effect with limited resources.&lt;/p&gt;
&lt;h3 id=&#34;censors-timing-choice-of-new-blocking-techniques&#34;&gt;Censor&amp;rsquo;s timing choice of new blocking techniques&lt;/h3&gt;
&lt;p&gt;As many long-time Internet censorship observers have noticed, Chinese censors always start using their new censorship weapons on a large scale a few days or weeks before a politically sensitive event. In fact, such timing choices are no coincident. So what are the specific reasons? We suspect there are at least three reasons, and we encourage everyone to share their thoughts on them.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;First, it is an important political task for censors to ensure that they have sufficient control over public opinion and information flow, at least during politically sensitive time periods. This task is often described in official parlance as &amp;ldquo;protecting the cybersecurity during such-and-such event&amp;rdquo;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Second, censors are willing to tolerate more collateral damage caused by false positives in detection during sensitive times. This nature provides new censorship weapons a more permissive trial-and-error environment when they are first put into use. Tschantz et al. analyze and summarize a large number of censorship incidents and find that &amp;ldquo;real censors tend to use vulnerabilities that produce underblocking but not overblocking&amp;rdquo; (see &lt;a href=&#34;https://censorbib.nymity.ch/pdf/Tschantz2016a.pdf#page=14&#34;&gt;recommendation 5&lt;/a&gt;). And this tendency shifts slightly during politically sensitive times: censors become more tolerant of the collateral damage caused by false positives in detection in trade of a tighter social control. By deploying a new censorship weapon during such period of time, the censor&amp;rsquo;s mistake will be more tolerated even if the tool caused any overblocking accident due to bugs that were not tested out in the prior phases. &lt;a href=&#34;https://github.com/klzgrad&#34;&gt;klzgrad&lt;/a&gt; shares a similar view in &lt;a href=&#34;https://github.com/net4people/bbs/issues/129#issuecomment-1268598644&#34;&gt;this comment&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Finally, and most importantly, a often overlooked reason is the fact that &lt;strong&gt;the GFW is actually trying to compensate for and cover up its fundamental weakness of inflexibility. In this cat-and-mouse game, the censors know that they are simply no match for the anti-censorship community in terms of responsiveness and flexibility.&lt;/strong&gt; If they started deploying their new secret weapon long before the sensitive period begins, the anti-censorship community will have more time to study it and find new ways to bypass censorship. At that point, if they can&amp;rsquo;t be flexible and fast enough to improve their censorship weapons, then their attempts to tighten their controls over the Internet during politically sensitive times will fall flat. David Fifield shared a similar point of view in &lt;a href=&#34;https://github.com/net4people/bbs/issues/129#issuecomment-1267454858&#34;&gt;this comment&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;censors-have-weaknesses&#34;&gt;Censors have weaknesses&lt;/h3&gt;
&lt;p&gt;The censor&amp;rsquo;s lack of flexibility is dictated by the nature of itself and the problems it faces. Specifically, it is itself part of a large bureaucracy, which inevitably leads to inefficient internal operations and rigid behaviors. And yet the problem it faces is as complex as monitoring and censoring network traffic on a national scale. &lt;strong&gt;It is not hard to imagine that a new censorship weapon always has to go through the procedures of early-phase research, grants application, more formal scientific research, product development, debugging, surveying on real-world traffic, experimental deployment, and then the final nationwide large-scale deployment and use. The length of the process can take quite a long time&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;One may be wondering if it indeed takes such a long time for the censor to deploy a censorship weapon. Let&amp;rsquo;s take &lt;a href=&#34;https://gfw.report/blog/modified_shadowsocks/en/&#34;&gt;this release&lt;/a&gt; as another experiment to observe how fast the censor and anti-censorship community can react. In particular, let&amp;rsquo;s see how long it takes the censors to block our released tool that has many weaknesses.&lt;/p&gt;
&lt;h3 id=&#34;how-to-exploit-censor-weaknesses&#34;&gt;How to exploit censor weaknesses?&lt;/h3&gt;
&lt;p&gt;Exploiting the censor&amp;rsquo;s weakness, we came up with a few principles in hope they can make the anti-censorship efforts more effective.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Be more tolerant of imperfect circumvention solutions and do not give up on an imperfect circumvention solution too soon. As mentioned in the previous section, the fact that the GFW is less flexible than the anti-censorship community is often overlooked. And because of that, many circumvention solutions have been dismissed and killed prematurely simply because they &amp;ldquo;have weaknesses&amp;rdquo;. This is often because when anti-censorship developers and researchers envisioning themselves as censors, they tend to focus on the first step for censor &amp;ndash; &amp;ldquo;pre-research&amp;rdquo; &amp;ndash; and thinking that a circumvention solution would be easily blocked; however, they actually underestimated the long process of funding applications, formal scientific research, product development, debugging, surveying real-world traffic, experimental deployments, and finally, nationwide deployment, that the real censors have to face. In fact, if an anti-censorship developer spends an afternoon rolling out a new anti-censorship tool, but it takes the censor a large amount of time, energy, human, material and financial resources to block it in six months, we have to say this &amp;ldquo;imperfect&amp;rdquo; tool served as a great leverage.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Increase the diversity of censorship circumvention solutions by letting a thousand flowers bloom. In many people&amp;rsquo;s imagination, the GFW is a perfect censor because of its national-level resources; however, in reality, there are limited number of teams with the skills, ability, and resources to walk through all the procedures to make a censorship weapon from an idea to a real weapon deployed national-wide. Therefore, the more anti-censorship solutions the community can create, the less likely these limited resource censor teams will be able to block all tools in one go. And as long as there is one working circumvention solution left in one of these massive blocking event, the information is not disrupted completely.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Actively report new censorship events, promptly measure and understand new censorship techniques, and share the viable circumvention strategies with the community. Achieving this will require communication, effort, and cooperation between Chinese netizens, researchers, and developers. Encouragingly, we are now seeing more and more people joining this collaboration and working together as a collective.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Develop backup circumvention tools in advance. We have seen that the GFW makes up for its lack of flexibility by starting using its new secret weapons in large scale a few days before politically sensitive events. So can we use a similar strategy where we develop more backup plans in normal times, and then send them out just before sensitive times, like this release? This way, even if the technical staffs working for the GFW immediately spot any flaws in the new tool, and knew how to block the tool, it would still take them a long research and development cycle before actually being able to block it in real world.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>分享一个修改版的Shadowsocks</title>
        <link>https://gfw.report/blog/modified_shadowsocks/zh/</link>
        <pubDate>Sat, 15 Oct 2022 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/modified_shadowsocks/zh/</guid>
        
        <description>&lt;p&gt;我们在这篇文章中发布和开源一个修改版的Shadowsocks。这个版本的Shadowsocks可以绕过当前GFW的检测以及封锁。我们首先介绍这个修改后的Shadowsocks的原理，再分享一个如何部署服务器和客户端的简单教程。我们还会介绍其他两种当前能够帮助Shadowsocks和VMess绕过当前GFW封锁的办法。&lt;/p&gt;
&lt;h2 id=&#34;动机&#34;&gt;动机&lt;/h2&gt;
&lt;p&gt;我们在此时发表这个版本有三个目的：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;首先，我们想为中国网民提供一个（暂时）可行的翻墙方案。用增加翻墙协议多样性的方式，缓解10月3号以来的GFW对多种翻墙工具的大规模封锁。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;其次，我们想抛砖引玉地引起研究者和开发者的讨论。我们实证性的研究显示，当前的GFW已经可以精准地识别Shadowsocks，VMess，以及Obfs4这类完全加密协议（full-encrypted protocol）。我们估算GFW当前的流量检测算法会误伤约&lt;code&gt;0.6%&lt;/code&gt;的非翻墙链接，而假阴性则低得几乎可以忽略不计。这迫切的需要我们群力群策地改进当前的协议。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最后，我们想把这次发布当作一场实验，同时观察审查者和反审查社区在面对新的（反）审查事件时的反应速度。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;为什么这个修改后的shadowsocks可以规避gfw当前的检测和封锁&#34;&gt;为什么这个修改后的Shadowsocks可以规避GFW当前的检测和封锁？&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://gfw.report/publications/usenixsecurity23/zh/&#34;&gt;我们与其他研究人员合作发现&lt;/a&gt;，当前的GFW会利用多种不同的规则来识别Shadowsocks，VMesss，以及Obfs4这类完全加密协议。其中一条规则就利用了这些加密流量的0比特与1比特的比例接近1:1的特性。因此，如果我们在加密流量中加入更多的0或1，再对比特序列进行重排，就可以达到改变原有比例特征，绕过检测和封锁的目的。&lt;/p&gt;
&lt;h2 id=&#34;我怎么用这个修改版的shadowsocks&#34;&gt;我怎么用这个修改版的Shadowsocks？&lt;/h2&gt;
&lt;p&gt;这个修改版的Shadowsocks基于&lt;a href=&#34;https://github.com/shadowsocks/shadowsocks-rust&#34;&gt;Shadowsocks-rust&lt;/a&gt;，我们还利用&lt;a href=&#34;https://github.com/shadowsocks/shadowsocks-android&#34;&gt;Shadowsocks-android&lt;/a&gt;编译了apk文件供安卓用户使用。所有的客户端和服务端软件都可以在&lt;a href=&#34;https://github.com/gfw-report/shadowsocks-rust/tree/low-entropy&#34;&gt;这个branch&lt;/a&gt;和&lt;a href=&#34;https://github.com/gfw-report/shadowsocks-rust/releases&#34;&gt;这个release&lt;/a&gt;找到。&lt;/p&gt;
&lt;h3 id=&#34;安装服务端&#34;&gt;安装服务端&lt;/h3&gt;
&lt;p&gt;安装修改版的服务器的过程与安装任何其他&lt;code&gt;Shadowsocks-rust&lt;/code&gt;服务器无异。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;首先你需要登陆你的远程服务器，然后下载&lt;a href=&#34;https://github.com/gfw-report/shadowsocks-rust/releases&#34;&gt;编译好的文件&lt;/a&gt;：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wget https://github.com/gfw-report/shadowsocks-rust/releases/download/v0.0.1-beta/shadowsocks-v1.15.0-alpha.9.x86_64-unknown-linux-gnu.tar.xz
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tar xvf shadowsocks-v1.15.0-alpha.9.x86_64-unknown-linux-gnu.tar.xz
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;接着你需要创建一个配置文件：&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;sudo nano server_config.json&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;将下面的配置文件复制粘贴。注意，你需要把里面的&lt;code&gt;ExamplePassword&lt;/code&gt;替换成一个更强的密码。你可以用以下命令在终端生成一个强密码：&lt;code&gt;openssl rand -base64 16&lt;/code&gt;。你也应该考虑更改服务器端口&lt;code&gt;8388&lt;/code&gt;。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;#34;server&amp;#34;: &amp;#34;0.0.0.0&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;#34;server_port&amp;#34;: 8388,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;#34;password&amp;#34;: &amp;#34;ExamplePassword&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;#34;method&amp;#34;: &amp;#34;aes-256-gcm&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;将上方替换过密码的配置信息复制粘贴到配置文件后， 按&lt;code&gt;Ctrl + x&lt;/code&gt;退出。 退出时，文本编辑器将问你&lt;code&gt;&amp;quot;Save modified buffer?&amp;quot;&lt;/code&gt;，请输入&lt;code&gt;y&lt;/code&gt;然后按&lt;code&gt;回车键&lt;/code&gt;。&lt;/p&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;你现在就可以运行二进制的服务器了。但是为了让它在你退出SSH后还能继续运行，你可以考虑建立一个&lt;code&gt;tmux&lt;/code&gt;会话：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tmux
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后再运行服务器：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;./ssserver -c ./server_config.json
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;最后，按&lt;code&gt;Ctrl + b&lt;/code&gt;再按&lt;code&gt;d&lt;/code&gt;就可以脱离tmux会话了。&lt;/p&gt;
&lt;h3 id=&#34;防火墙配置&#34;&gt;防火墙配置&lt;/h3&gt;
&lt;p&gt;我们使用&lt;code&gt;ufw&lt;/code&gt;来管理Shadowsocks服务器的防火墙。&lt;/p&gt;
&lt;p&gt;在基于Debian的服务器上，可以通过如下命令安装&lt;code&gt;ufw&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt update &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt install -y ufw
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后开放有关&lt;code&gt;ssh&lt;/code&gt;和&lt;code&gt;Shadowsocks-rust&lt;/code&gt;的端口。 请注意，以下命令假设你在&lt;code&gt;server_config.json&lt;/code&gt;中的&lt;code&gt;server_port&lt;/code&gt;的值为&lt;code&gt;8388&lt;/code&gt;。 如果你的&lt;code&gt;server_port&lt;/code&gt;用了其他的值，请对以下命令作相应的修改：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo ufw allow ssh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo ufw allow &lt;span style=&#34;color:#ae81ff&#34;&gt;8388&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;现在我们启动&lt;code&gt;ufw&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo ufw enable
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;启动时如果弹出&lt;code&gt;Command may disrupt existing ssh connections. Proceed with operation (y|n)?&lt;/code&gt;，请输入&lt;code&gt;y&lt;/code&gt;并按回车键。&lt;/p&gt;
&lt;p&gt;最后，请用&lt;code&gt;sudo ufw status&lt;/code&gt;检查一下你的配置是否和下面的一样：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Status: active
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;To                         Action      From
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--                         ------      ----
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;22/tcp                     ALLOW       Anywhere
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;8388                       ALLOW       Anywhere
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;22/tcp (v6)                ALLOW       Anywhere (v6)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;8388 (v6)                  ALLOW       Anywhere (v6)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;客户端配置&#34;&gt;客户端配置&lt;/h3&gt;
&lt;p&gt;下面是桌面版客户端的配置文件，记得&lt;code&gt;server&lt;/code&gt;的值替换为你远程服务器的IP地址。如果你们是用了我们提供的安卓apk在手机上使用，那么配置就和往常的使用&lt;code&gt;Shadowsocks-android&lt;/code&gt;的办法一样。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;server&amp;#34;: &amp;#34;ExampleServerIP&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;server_port&amp;#34;: 8388,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;password&amp;#34;: &amp;#34;ExamplePassword&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;method&amp;#34;: &amp;#34;aes-256-gcm&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;local_address&amp;#34;: &amp;#34;127.0.0.1&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;local_port&amp;#34;: 1080
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;不足&#34;&gt;不足&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;因为我们对Shadowsocks协议做了修改，因此暂不兼容其他Shadowsocks客户端和服务端。用户需要下载我们准备的客户端和服务端。&lt;/li&gt;
&lt;li&gt;目前客户端只支持Windows，Linux，macOS，安卓手机，和安卓电视版。不支持iOS。我们欢迎有能力的iOS开发者们实现兼容这个修改的协议。也欢迎iOS开发者与我们联系，我们将分享其他绕过审查的办法供你们参考。&lt;/li&gt;
&lt;li&gt;在加密方式上，修改版还不支持&lt;a href=&#34;https://github.com/Shadowsocks-NET/shadowsocks-specs/blob/main/2022-1-shadowsocks-2022-edition.md&#34;&gt;Shadowsocks-2022&lt;/a&gt;。这并非我们刻意不支持Shadowsocks-2022，只是时间和精力有限，还没来得及支持。我们推荐选择：&lt;code&gt;chacha20-ietf-poly1305&lt;/code&gt;或者&lt;code&gt;aes-256-gcm&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;在实现方式上，我们直接在核心代码上进行了修改。这并非我们想要另起炉灶，维护一个Shadowsocks协议的分支版本，只是时间和经历有限，还没有把修改后的算法做成一个可供用户选择的选项。我们将与Shadowsocks开发者积极沟通，希望最终能以提供给用户选项的方式，将新协议合并到Shadowsocks中。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;你们还知道什么其他的可以规避当前封锁的方法吗&#34;&gt;你们还知道什么其他的可以规避当前封锁的方法吗？&lt;/h2&gt;
&lt;p&gt;我们还知道两种目前可行的方案，他们都利用了另一种不同的GFW流量检测规则：&lt;/p&gt;
&lt;p&gt;如果你是V2Ray用户，你可以开启&lt;code&gt;ExperimentReducedIvHeadEntropy&lt;/code&gt;选项来避免GFW的检测和封锁。这个方案的好处是你无须在服务器进行任何修改。&lt;/p&gt;
&lt;p&gt;如果你是Shadowsocks用户，&lt;a href=&#34;https://github.com/database64128&#34;&gt;@database64128&lt;/a&gt;还&lt;a href=&#34;https://github.com/shadowsocks/shadowsocks-org/issues/204#issuecomment-1266710067&#34;&gt;实现了另外一种绕过审查的办法&lt;/a&gt;。因为对协议做了修改，所以需要同时更新客户端和服务端。&lt;/p&gt;
&lt;h2 id=&#34;感谢&#34;&gt;感谢&lt;/h2&gt;
&lt;p&gt;我们感谢David Fifield对文章初稿的反馈。&lt;/p&gt;
&lt;h2 id=&#34;联系我们&#34;&gt;联系我们&lt;/h2&gt;
&lt;p&gt;正如前文所说的，我们发帖的目的就是想引起用户，研究人员和开发者们的讨论。因此我们欢迎您或公开地或私下地与我们分享您的使用体验或想法。我们私下的联系方式可见&lt;a href=&#34;https://gfw.report&#34;&gt;GFW Report&lt;/a&gt;的页脚。&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>分享我们对猫鼠游戏的一点想法</title>
        <link>https://gfw.report/blog/thoughs_on_cat_and_mouse_game/zh/</link>
        <pubDate>Sat, 15 Oct 2022 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/thoughs_on_cat_and_mouse_game/zh/</guid>
        
        <description>&lt;p&gt;在这篇文章中，我们分享我们对审查这个猫鼠游戏的一些看法。这些看法既来自于我们对审查者和反审查社区两方的观察与思考，又同时受到&lt;a href=&#34;https://github.com/klzgrad&#34;&gt;klzgrad&lt;/a&gt;，David Fifield以及其他许多许多反审查者的深深影响。&lt;/p&gt;
&lt;p&gt;我们将从审查者每次开始大规模封锁的时间点选择出发，探讨审查者相比反审查社区缺乏灵活性这一根本性的弱点，并附上我们对如何利用审查者的弱点来达到四两拨千斤的效果的一些建议。&lt;/p&gt;
&lt;h2 id=&#34;审查时间点的选择&#34;&gt;审查时间点的选择&lt;/h2&gt;
&lt;p&gt;长期关注互联网审查的朋友们一定已经发现，中国的审查者总是在政治敏感事件来临前的数天或数周开始大规模地使用他们的新审查武器。实际上，这样的时间点选择绝非偶然，那具体的原因是什么呢？我们猜想至少有三点，也欢迎大家继续讨论补充：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;首先，对审查者而言，保证至少在政治敏感的时间段内，对社会舆论和信息流通有着足够的控制，是一项重要的政治任务。这项任务通常会被官方话语描述为&amp;quot;为某某期间的网络安全护航&amp;quot;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;其次，审查者在政治敏感时期更能容忍审查造成的误伤，因此给新的审查武器投入使用提供了更宽松的试错环境。Tschantz等人对大量审查事件进行分析总结后发现，真实世界的审查者通常宁可少封，也要尽量避免错封带来的影响（见&lt;a href=&#34;https://censorbib.nymity.ch/pdf/Tschantz2016a.pdf#page=14&#34;&gt;recommendation 5&lt;/a&gt;）。而这种倾向仅在政治敏感时期略有变化：审查者会变得更能容忍误伤的代价，以达到其所追求的社会管控。而在这时上线新的武器，即使有前期没有测试出来的错误造成误伤或事故，也更能被容忍。&lt;a href=&#34;https://github.com/klzgrad&#34;&gt;klzgrad&lt;/a&gt;在&lt;a href=&#34;https://github.com/net4people/bbs/issues/129#issuecomment-1268598644&#34;&gt;这篇评论&lt;/a&gt;中也分享了类似的观点。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最后，也是最为重要，却容易被忽视的一点是，&lt;strong&gt;GFW其实是在极力地弥补和掩盖其缺乏灵活性的根本性弱点。在这场猫与鼠的游戏中，审查者自知其在反应速度、灵活性上根本不是反审查社区的对手。&lt;/strong&gt; 如果他们在敏感时期开始前的很长一段时间就开始部署他们新的秘密武器，那么反审查社区就有更多的时间去研究它，并发现绕过审查的新方法。到那时，如果他们不能灵活快速地改进自己的审查武器，那他们在政治敏感时期收紧网络管控的企图就会落空。David Fifield在&lt;a href=&#34;https://github.com/net4people/bbs/issues/129#issuecomment-1267454858&#34;&gt;这篇评论&lt;/a&gt;中也分享了类似的观点。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;审查者有弱点&#34;&gt;审查者有弱点&lt;/h2&gt;
&lt;p&gt;审查者缺乏灵活性是由其自身和其所面对的问题的本质所决定的。具体而言，其自身是庞大官僚机构的一部分，这不可避免的导致其内部运行效率低下，行为僵化。而其所面临的问题却又是在全国范围内大规模地监控和审查复杂多变的网络流量。&lt;strong&gt;可以想象，一款新型审查武器总是要经历预先研究，经费申请，立项，科研，产品开发，调试，真实流量调研，实验性部署，才能到最后的全国范围内的大规模部署和使用。其过程的漫长程度可想而知&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;空口无凭。我们不妨把&lt;a href=&#34;https://gfw.report/blog/modified_shadowsocks/zh/&#34;&gt;这次发布&lt;/a&gt;当作又一场观察（反）审查者反应速度的实验：看一看审查者要花多久才能封锁我们这次发布的这个有着诸多弱点的版本。&lt;/p&gt;
&lt;h2 id=&#34;如何利用审查者的弱点&#34;&gt;如何利用审查者的弱点？&lt;/h2&gt;
&lt;p&gt;针对审查者的弱点，我们想到了一些也许能让反审查工作在有限的资源下，事半功倍的原则：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;要对不完美的翻墙方案更宽容，不要过早放弃一个不完美的翻墙方案。我们前面说GFW灵活性不如反审查社区这个弱点通常被人们忽视，是因为看到许多的翻墙方案仅仅因为“存在弱点”就被过早的否定和扼杀了。这通常是因为反审查人员在设想自己是审查者时，更多的只考虑了第一步“预先研究”，觉得某个翻墙方案很容易被封锁，而忽视了真正的审查者所要面对的还有漫长的经费申请，立项，科研，产品开发，调试，真实流量调研，实验性部署，才能到最后的全国范围内的大规模部署和使用。事实上，如果我们的反审查人员花一个下午做好的反审查方案，在消耗了审查者半年的时间、精力、人力、物力、财力后被封锁了，其四两拨千斤的作用也早已经达到了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;要增加翻墙方案的多样性，鼓励不同翻墙方案的百花齐放。在很多人的想象中，GFW因为拥有国家级的资源而成为一个完美的审查者，但实际上，有技术、能力、资源将上述审查武器研发流程一一走完的团队是有限的。我们反审查社区开发的翻墙方案越多种多样，这些有限的资源团队就越无法一网打尽所有的翻墙软件。而只要在某次大封锁中还剩下一种能用翻墙方案，信息就不至于完全阻塞。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;积极的报告新的审查事件，当新的审查事件发生时，迅速地测量新的审查机器，并将测量结果和绕过审查的方案分享给社区。达成这一项需要网民，研究者以及开发者三方一起沟通、努力、和配合。令人鼓舞的是，我们现在看到越来越多的人加入到这个协作之中，相互的配合也越来越默契顺畅。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;提前开发备用的翻墙方案。我们看到GFW为了弥补自身灵活性的不足而想到在政治敏感时期前几天才使用新的秘密武器，杀网民一个措手不及。那我们是不是也可以用相同的思路，在平时多开发几种备用的翻墙方案，然后像这次的发布一样，到了敏感时期之前才发出？这样，就算是审查者中的技术人员马上发现了新工具中的缺陷，知道了如何反制，也还是需要经过漫长的研发周期。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;感谢&#34;&gt;感谢&lt;/h2&gt;
&lt;p&gt;我们感谢David Fifield对文章初稿的反馈。&lt;/p&gt;
&lt;h2 id=&#34;联系我们&#34;&gt;联系我们&lt;/h2&gt;
&lt;p&gt;正如前文所说的，我们发帖的目的就是想引起用户，研究人员和开发者们的讨论。因此我们欢迎您或公开地或私下地与我们分享您的使用体验或想法。我们私下的联系方式可见&lt;a href=&#34;https://gfw.report&#34;&gt;GFW Report&lt;/a&gt;的页脚。&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>Sharing a Trojan-go with updated uTLS fingerprints</title>
        <link>https://gfw.report/blog/updated_trojan_go/en/</link>
        <pubDate>Wed, 05 Oct 2022 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/updated_trojan_go/en/</guid>
        
        <description>&lt;p&gt;We &lt;a href=&#34;https://github.com/gfw-report/trojan-go/releases&#34;&gt;upgraded trojan-go client&amp;rsquo;s TLS fingerprint to some of the most popular ones&lt;/a&gt;. We hope such change will mitigate &lt;a href=&#34;https://github.com/net4people/bbs/issues/129&#34;&gt;the large-scale blocking of TLS-based censorship circumvention protocols&lt;/a&gt; since October 3, 2022.&lt;/p&gt;
&lt;h2 id=&#34;updated-versions&#34;&gt;Updated versions&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/gfw-report/trojan-go/releases/tag/v0.10.10&#34;&gt;v0.10.10&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In this release, we upgrade trojan-go client&amp;rsquo;s uTLS library from v1.1.5 to &lt;a href=&#34;https://github.com/refraction-networking/utls/releases/tag/v1.2.0&#34;&gt;v1.2.0&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/gfw-report/trojan-go/releases/tag/v0.10.9&#34;&gt;v0.10.9&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In this release, we upgrade trojan-go client&amp;rsquo;s uTLS library from v1.1.3 to &lt;a href=&#34;https://github.com/refraction-networking/utls/releases/tag/v1.1.5&#34;&gt;v1.1.5&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/gfw-report/trojan-go/releases/tag/v0.10.8&#34;&gt;v0.10.8&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We upgrade trojan-go client&amp;rsquo;s uTLS library from v1.1.2 to v1.1.3.&lt;/li&gt;
&lt;li&gt;The new version 1) supports more fingerprint options: Edge, Safari, 360Browser, and QQBrowser; and 2) updates the TLS fingerprint of existing fingerprint options: Chome, Firefox, and iOS.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/gfw-report/trojan-go/releases/tag/v0.10.7&#34;&gt;v0.10.7&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Replace Go&amp;rsquo;s standard &lt;a href=&#34;https://pkg.go.dev/crypto/tls&#34;&gt;cryto/tls&lt;/a&gt; with &lt;a href=&#34;https://github.com/refraction-networking/utls&#34;&gt;uTLS&lt;/a&gt; in trojan-go client.&lt;/li&gt;
&lt;li&gt;Upagrade uTLS to the latest version &lt;a href=&#34;https://github.com/refraction-networking/utls/releases/tag/v1.1.2&#34;&gt;v1.1.2&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;tls-clienthello-fingerprints&#34;&gt;TLS ClientHello fingerprints&lt;/h2&gt;
&lt;p&gt;Depending on one&amp;rsquo;s configuration, the Clienthello sent by trojan-go client &lt;code&gt;v0.10.7&lt;/code&gt; will now look like one of the following popular fingerprints (rather than the &lt;a href=&#34;https://tlsfingerprint.io/id/ad63dbc630ad9475&#34;&gt;Go&amp;rsquo;s TLS fingerprint&lt;/a&gt; in previous versions):&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;code&gt;fingerprint&lt;/code&gt;&lt;/th&gt;
          &lt;th&gt;&lt;code&gt;sni&lt;/code&gt; value specified?&lt;/th&gt;
          &lt;th&gt;TLS Fingerprint ID&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Chrome (default)&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://tlsfingerprint.io/id/e47eae8f8c4887b6&#34;&gt;e47eae8f8c4887b6&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Chrome (default)&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://tlsfingerprint.io/id/90ac8a1dfa3b207c&#34;&gt;90ac8a1dfa3b207c&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;iOS&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://tlsfingerprint.io/id/133e933dd1dfea90&#34;&gt;133e933dd1dfea90&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;iOS&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://tlsfingerprint.io/id/cff7f10f631feddd&#34;&gt;cff7f10f631feddd&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Firefox&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://tlsfingerprint.io/id/7161e10829541aab&#34;&gt;7161e10829541aab&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Firefox&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://tlsfingerprint.io/id/56fa08d84940a06b&#34;&gt;56fa08d84940a06b&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-do-i-need-to-do-as-a-user&#34;&gt;What do I need to do as a user?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;You need to update your client by downloading the corresponding binaries below.&lt;/li&gt;
&lt;li&gt;You may want to set the &lt;code&gt;sni&lt;/code&gt; value to your domain name in configuration file, because, as summarized in the table above, your TLS Clienthello can still look very unique without the SNI extension.&lt;/li&gt;
&lt;li&gt;You &lt;strong&gt;don&amp;rsquo;t&lt;/strong&gt; need to update your server because all changes are made from the client side.&lt;/li&gt;
&lt;li&gt;You &lt;strong&gt;don&amp;rsquo;t&lt;/strong&gt; have to specify the &lt;code&gt;fingerprint&lt;/code&gt; value, because the default fingerprint (&lt;code&gt;Chrome&lt;/code&gt;) is already the most popular one.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;why-my-server-still-got-blocked-when-i-used-the-latest-trojan-go-client&#34;&gt;Why my server still got blocked when I used the latest trojan-go client?&lt;/h2&gt;
&lt;p&gt;Did you use any other trojan clients (eg. on your phone) to connect to the same server? If so, it cannot be determine whether the blocking is caused by this trojan-go client or other client&amp;rsquo;s fingerprint and behaviors anymore.&lt;/p&gt;
&lt;p&gt;We really want more users to report the status of their servers. If you are sure that you have been exclusively using the trojan-go clients we provided, please consider to report the status of your server (reporting not being blocked is as important as reporting blocking).&lt;/p&gt;
&lt;h2 id=&#34;example-configuration-file&#34;&gt;Example configuration file&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;run_type&amp;#34;: &amp;#34;client&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;local_addr&amp;#34;: &amp;#34;127.0.0.1&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;local_port&amp;#34;: 1080,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;remote_addr&amp;#34;: &amp;#34;your-domain-name.com&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;remote_port&amp;#34;: 443,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;password&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &amp;#34;your_awesome_password&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;ssl&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &amp;#34;sni&amp;#34;: &amp;#34;your-domain-name.com&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	      &amp;#34;fingerprint&amp;#34;: &amp;#34;Chrome&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;to-trojan-go-developers&#34;&gt;To trojan-go developers&lt;/h2&gt;
&lt;p&gt;We do not intend to maintain a fork of trojan-go as a separate project. We made this release so that users can have compiled binaries to use immediately. We will archive our repo as soon as our pull request is merged to upstream.&lt;/p&gt;
&lt;h2 id=&#34;credits&#34;&gt;Credits&lt;/h2&gt;
&lt;p&gt;We thanks &lt;a href=&#34;https://github.com/refraction-networking/utls&#34;&gt;uTLS&lt;/a&gt; developers, because without their continuous efforts, we wouldn&amp;rsquo;t be able to upgrade trojan-go to the most popular TLS fingerprints effortlessly. We thank Eric Wustrow for helping us understand uTLS library.&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>分享一个采用uTLS指纹的Trojan-go客户端</title>
        <link>https://gfw.report/blog/updated_trojan_go/zh/</link>
        <pubDate>Wed, 05 Oct 2022 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/updated_trojan_go/zh/</guid>
        
        <description>&lt;p&gt;&lt;a href=&#34;(https://github.com/gfw-report/trojan-go/releases)&#34;&gt;我们更新了trojan-go客户端的TLS指纹&lt;/a&gt;，使其与一些当下最流行的TLS指纹一致。我们希望这次更新可以缓解2022年10月3日以来的&lt;a href=&#34;https://github.com/net4people/bbs/issues/129#issuecomment-1266617327&#34;&gt;针对基于TLS翻墙软件的大规模封锁&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;版本更新&#34;&gt;版本更新&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/gfw-report/trojan-go/releases/tag/v0.10.10&#34;&gt;v0.10.10&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在这个版本中，我们将trojan-go客户端的使用的uTLS从v1.1.5升级到了&lt;a href=&#34;https://github.com/refraction-networking/utls/releases/tag/v1.2.0&#34;&gt;v1.2.0&lt;/a&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/gfw-report/trojan-go/releases/tag/v0.10.9&#34;&gt;v0.10.9&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在这个版本中，我们将trojan-go客户端的使用的uTLS从v1.1.3升级到了&lt;a href=&#34;https://github.com/refraction-networking/utls/releases/tag/v1.2.0&#34;&gt;v1.1.5&lt;/a&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/gfw-report/trojan-go/releases/tag/v0.10.8&#34;&gt;v0.10.8&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在这个版本中，我们将trojan-go客户端的使用的uTLS从v1.1.2升级到了&lt;a href=&#34;https://github.com/refraction-networking/utls/releases/tag/v1.1.3&#34;&gt;v1.1.3&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;新的版本的fingerprint支持新添加的Edge，Safari，360Browser和QQBrowser选项；还更新了原本已经支持的Chrome, Firefox，和iOS选项的TLS指纹。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/gfw-report/trojan-go/releases/tag/v0.10.7&#34;&gt;v0.10.7&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;将trojan-go客户端使用的Go标准库&lt;a href=&#34;https://pkg.go.dev/crypto/tls&#34;&gt;cryto/tls&lt;/a&gt;完全替换为&lt;a href=&#34;https://github.com/refraction-networking/utls&#34;&gt;uTLS&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;将依赖的uTLS升级到最新版本&lt;a href=&#34;https://github.com/refraction-networking/utls/releases/tag/v1.1.2&#34;&gt;v1.1.2&lt;/a&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;客户端指纹&#34;&gt;客户端指纹&lt;/h2&gt;
&lt;p&gt;根据配置的不同，&lt;code&gt;v0.10.7&lt;/code&gt;版本的trojan-go客户端会发送以下一种流行的Clienthello指纹。这些指纹已经不同于之前版本用&lt;a href=&#34;https://tlsfingerprint.io/id/ad63dbc630ad9475&#34;&gt;Go的标准库发送的TLS指纹&lt;/a&gt;)：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;code&gt;fingerprint&lt;/code&gt;&lt;/th&gt;
          &lt;th&gt;是否设置了&lt;code&gt;sni&lt;/code&gt;？&lt;/th&gt;
          &lt;th&gt;TLS指纹 ID&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Chrome (default)&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://tlsfingerprint.io/id/e47eae8f8c4887b6&#34;&gt;e47eae8f8c4887b6&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Chrome (default)&lt;/td&gt;
          &lt;td&gt;否&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://tlsfingerprint.io/id/90ac8a1dfa3b207c&#34;&gt;90ac8a1dfa3b207c&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;iOS&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://tlsfingerprint.io/id/133e933dd1dfea90&#34;&gt;133e933dd1dfea90&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;iOS&lt;/td&gt;
          &lt;td&gt;否&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://tlsfingerprint.io/id/cff7f10f631feddd&#34;&gt;cff7f10f631feddd&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Firefox&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://tlsfingerprint.io/id/7161e10829541aab&#34;&gt;7161e10829541aab&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Firefox&lt;/td&gt;
          &lt;td&gt;否&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://tlsfingerprint.io/id/56fa08d84940a06b&#34;&gt;56fa08d84940a06b&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;我作为一名用户需要做什么&#34;&gt;我作为一名用户需要做什么？&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;您需要根据自己的操作系统，选择对应的客户端下载并更新。&lt;/li&gt;
&lt;li&gt;您应该考虑将配置文件中的&lt;code&gt;sni&lt;/code&gt;设置为服务器的域名。因为正如上表总结的，如果不配置SNI，客户端发送的Clienthello的指纹还是很特殊。&lt;/li&gt;
&lt;li&gt;您&lt;strong&gt;不需要&lt;/strong&gt;更新你的服务器。因为这次更新只对客户端做了改变。&lt;/li&gt;
&lt;li&gt;您&lt;strong&gt;不必&lt;/strong&gt;在配置文件中特意设置&lt;code&gt;fingerprint&lt;/code&gt;。因为默认值(&lt;code&gt;Chrome&lt;/code&gt;)已经是最流行的指纹了。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;为什么我使用了最新版本的客户端但是服务器还是被封锁了&#34;&gt;为什么我使用了最新版本的客户端但是服务器还是被封锁了？&lt;/h2&gt;
&lt;p&gt;您是否在用这里提供的客户端的同时还通过其他客户端（比如手机上的软件）连接了相同的服务器？如果是的话，那就不能排除端口被封锁的是其他客户端的指纹或行为导致的。&lt;/p&gt;
&lt;p&gt;我们现在缺少用户的使用情况汇报，如果您可以肯定在一段时间内只用了我们提供的客户端，我们非常欢迎您汇报您的使用情况（被封锁或是没被封锁对我们来说同样重要）。&lt;/p&gt;
&lt;h2 id=&#34;配置文件示例&#34;&gt;配置文件示例&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;run_type&amp;#34;: &amp;#34;client&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;local_addr&amp;#34;: &amp;#34;127.0.0.1&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;local_port&amp;#34;: 1080,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;remote_addr&amp;#34;: &amp;#34;your-domain-name.com&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;remote_port&amp;#34;: 443,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;password&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &amp;#34;your_awesome_password&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;ssl&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &amp;#34;sni&amp;#34;: &amp;#34;your-domain-name.com&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	      &amp;#34;fingerprint&amp;#34;: &amp;#34;Chrome&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;致trojan-go开发者&#34;&gt;致trojan-go开发者&lt;/h2&gt;
&lt;p&gt;我们无意另起炉灶维护一个分支版本的trojan-go。我们之所以发布这个release是为了用户能够立即下载使用编译后的客户端。一旦我们的pull request请求被采纳，我们将归档这个仓库。&lt;/p&gt;
&lt;h2 id=&#34;感谢&#34;&gt;感谢&lt;/h2&gt;
&lt;p&gt;我们感谢&lt;a href=&#34;https://github.com/refraction-networking/utls&#34;&gt;uTLS&lt;/a&gt;的开发者，因为没有他们持续不断的努力，我们不可能轻松地将trojan-go升级到使用最流行的TLS指纹。我们感谢Eric Wustrow帮助我们理解uTLS库。&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>中国大规模地封锁基于TLS的翻墙服务器</title>
        <link>https://gfw.report/blog/blocking_of_tls_based_circumvention_tools/zh/</link>
        <pubDate>Tue, 04 Oct 2022 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/blocking_of_tls_based_circumvention_tools/zh/</guid>
        
        <description>&lt;p&gt;自北京时间2022年10月3日起，超过一百名用户报告他们至少有一台基于TLS的翻墙服务器被封锁了。被封锁的服务器使用的协议包括了&lt;a href=&#34;https://github.com/trojan-gfw/trojan&#34;&gt;trojan&lt;/a&gt;，&lt;a href=&#34;https://github.com/XTLS/Xray-core&#34;&gt;Xray&lt;/a&gt;，&lt;a href=&#34;https://www.v2fly.org/config/transport/websocket.html&#34;&gt;V2Ray TLS+Websocket&lt;/a&gt;，&lt;a href=&#34;https://www.v2fly.org/config/protocols/vless.html&#34;&gt;VLESS&lt;/a&gt;，以及&lt;a href=&#34;https://www.v2fly.org/config/transport/grpc.html&#34;&gt;gRPC&lt;/a&gt;。我们还未收到任何&lt;a href=&#34;https://github.com/klzgrad/naiveproxy&#34;&gt;naiveproxy&lt;/a&gt;被封锁的消息。&lt;/p&gt;
&lt;p&gt;下面是我们总结的关于这次封锁的一些信息，以其我们的一些推测和分析&lt;/p&gt;
&lt;p&gt;封锁先是针对翻墙服务的端口。如果用户在端口被封后，&lt;a href=&#34;https://gfw.report/blog/ss_tutorial/zh/#%E9%85%8D%E7%BD%AE%E5%A4%87%E7%94%A8%E7%AB%AF%E5%8F%A3%E6%9D%A5%E7%BC%93%E8%A7%A3%E7%AB%AF%E5%8F%A3%E5%B0%81%E9%94%81&#34;&gt;改换了端口&lt;/a&gt;，那么整个服务器都会被封锁。需要指出，封锁似乎只是基于端口或IP地址，与翻墙服务有关的域名似乎并没有被加入到GFW的DNS或SNI黑名单中。&lt;/p&gt;
&lt;p&gt;尽管大多数用户报告443端口被封，一部分使用非443端口的用户也报告了封锁。尽管大多数用户的服务器在流行的VPS提供商那里（&lt;a href=&#34;https://bandwagonhost.com/&#34;&gt;比如&lt;/a&gt;），但至少有一位用户位于欧洲的家中的服务器也被封锁了。&lt;/p&gt;
&lt;p&gt;在一些案例中（并非全部案例中），封锁是动态的：用户通过浏览器还是可以直接访问翻墙端口，但同一个端口，用翻墙软件就连不通。&lt;/p&gt;
&lt;p&gt;所有以上的信息都指向GFW已经可以精准的识别并封锁这些翻墙协议，而并非简单地封锁所有的443端口，或封锁所有的流行机房。&lt;/p&gt;
&lt;p&gt;基于以上信息，我们推测（但还未进行实证性的测量），这些封锁可能与翻墙软件客户端发出的&lt;a href=&#34;https://tlsfingerprint.io/&#34;&gt;Clienthello指纹&lt;/a&gt;相关。开发者们或许可以考虑采用&lt;a href=&#34;https://github.com/refraction-networking/utls&#34;&gt;uTLS&lt;/a&gt;。这个&lt;a href=&#34;https://github.com/net4people/bbs/issues/54&#34;&gt;论文阅读小组&lt;/a&gt;，&lt;a href=&#34;https://gfw.report/blog/v2ray_weaknesses/zh/#%E7%8B%AC%E7%89%B9%E7%9A%84tls-clienthello%E6%8C%87%E7%BA%B9&#34;&gt;这篇总结&lt;/a&gt;，以及&lt;a href=&#34;https://zhufan.net/2022/06/18/tls%E6%8F%A1%E6%89%8B%E6%8C%87%E7%BA%B9%E6%A3%80%E6%B5%8B%E6%81%B6%E6%84%8F%E8%BD%AF%E4%BB%B6%E6%B5%81%E9%87%8F/&#34;&gt;这篇博文&lt;/a&gt;都是关于TLS指纹的，也许会有帮助。&lt;/p&gt;
&lt;p&gt;下一步，我们将调查GFW是否真的使用了客户端发出的TLS指纹来识别这些协议。与此同时，如果您有任何翻墙服务器被封锁，或者有任何可以证实或反驳我们的推测的例子，我们都欢迎您或公开地或私下地与我们分享。因为这会帮助我们快速定位许多问题的根源。我们私下的联系方式可见&lt;a href=&#34;https://gfw.report/&#34;&gt;GFW Report&lt;/a&gt;的页脚。&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>Large scale blocking of TLS-based censorship circumvention tools in China</title>
        <link>https://gfw.report/blog/blocking_of_tls_based_circumvention_tools/en/</link>
        <pubDate>Mon, 03 Oct 2022 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/blocking_of_tls_based_circumvention_tools/en/</guid>
        
        <description>&lt;p&gt;Starting from October 3, 2022 (Beijing Time), more than 100 users reported that at least one of their TLS-based censorship circumvention servers had been blocked. The TLS-based circumvention protocols that are reportedly blocked include &lt;a href=&#34;https://github.com/trojan-gfw/trojan&#34;&gt;trojan&lt;/a&gt;, &lt;a href=&#34;https://github.com/XTLS/Xray-core&#34;&gt;Xray&lt;/a&gt;, &lt;a href=&#34;https://www.v2fly.org/config/transport/websocket.html&#34;&gt;V2Ray TLS+Websocket&lt;/a&gt;, &lt;a href=&#34;https://www.v2fly.org/config/protocols/vless.html&#34;&gt;VLESS&lt;/a&gt;, and &lt;a href=&#34;https://www.v2fly.org/config/transport/grpc.html&#34;&gt;gRPC&lt;/a&gt;. We have not received any report of the blocking of &lt;a href=&#34;https://github.com/klzgrad/naiveproxy&#34;&gt;naiveproxy&lt;/a&gt; though.&lt;/p&gt;
&lt;p&gt;Below are a summary of this blocking event and our conjuncture.&lt;/p&gt;
&lt;p&gt;The blocking is done by blocking the specific port that the circumvention services listen on. When the user &lt;a href=&#34;https://gfw.report/blog/ss_tutorial/en/#mitigate-port-blocking-by-having-backup-ports&#34;&gt;change the blocked port&lt;/a&gt; to a non-blocked port and keep using the circumvention tools, the entire IP addresses may get blocked. It is worth noting that their domain names are not added to GFW&amp;rsquo;s DNS or SNI blacklists.&lt;/p&gt;
&lt;p&gt;While most of the users report their port 443 got blocked, a few users reported that their &lt;em&gt;non-443&lt;/em&gt; port on which circumvention services listen got blocked as well. While most of the blocked servers are in some popular VPSes providers&amp;rsquo; datacenters (for example, the &lt;a href=&#34;https://bandwagonhost.com/&#34;&gt;bandwagonhost&lt;/a&gt;), at least one user reported the blocking of a server in residential network in Europe.&lt;/p&gt;
&lt;p&gt;In a few cases (not all cases), the blocking seems to be dynamic because the web browser could still access their circumvention ports but not the circumvention tools did not work.&lt;/p&gt;
&lt;p&gt;All these observations above strongly indicate that the GFW can indeed accurately identify and block the circumvention services, rather than simply block the port 443, or block the popular VPS providers.&lt;/p&gt;
&lt;p&gt;Based on the information collected above, we suspect, without empirical measurement yet, that the blocking is possibly related to the &lt;a href=&#34;https://tlsfingerprint.io/&#34;&gt;TLS fingerprints&lt;/a&gt; of those circumvention tools. Perhaps developers want to look into &lt;a href=&#34;https://github.com/refraction-networking/utls&#34;&gt;uTLS&lt;/a&gt;. One may also find this &lt;a href=&#34;https://github.com/net4people/bbs/issues/54&#34;&gt;paper reading group&lt;/a&gt;, &lt;a href=&#34;https://gfw.report/blog/v2ray_weaknesses/en/#unique-tls-clienthello-fingerprints&#34;&gt;this summary&lt;/a&gt;, and &lt;a href=&#34;https://zhufan.net/2022/06/18/tls%E6%8F%A1%E6%89%8B%E6%8C%87%E7%BA%B9%E6%A3%80%E6%B5%8B%E6%81%B6%E6%84%8F%E8%BD%AF%E4%BB%B6%E6%B5%81%E9%87%8F/&#34;&gt;this post&lt;/a&gt; on TLS fingerprint helpful.&lt;/p&gt;
&lt;p&gt;We will investigate if the GFW indeed uses the TLS fingerprints sent by these clients to identify circumvention protocols. At the same time, if you have any server being blocked, or if you have any evidence that can corroborate or falsify our hypothesis, we courage you to share your comments publicly or privately. Our private contact information can be found at the footer of &lt;a href=&#34;https://gfw.report&#34;&gt;GFW Report&lt;/a&gt;.&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>中国的防火长城屏蔽了google.com及其所有的子域名</title>
        <link>https://gfw.report/blog/blocking_of_google_com/zh/</link>
        <pubDate>Sat, 01 Oct 2022 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/blocking_of_google_com/zh/</guid>
        
        <description>&lt;p&gt;我们证实中国的防火长城已经屏蔽了google.com及其所有的子域名。这一封锁策略影响&lt;a href=&#34;https://github.com/net4people/bbs/files/9690188/affected_google_domains.txt&#34;&gt;超过1100个相关域名&lt;/a&gt;以及大量的流行服务。在这篇文章中，我们介绍观察到的审查者的两次大动作。我们同时分享测量网站审查的方法，以鼓励更多人独立地检测并曝光审查行为。&lt;/p&gt;
&lt;p&gt;审查者首先在北京时间2022年9月22日星期四，早上6点23分到晚上7点33分之间的某一时刻将&lt;code&gt;google.com&lt;/code&gt;和&lt;code&gt;*.google.com&lt;/code&gt;加入到SNI黑名单中。GFW会检查所有TLS ClientHello包，如果其中的SNI与黑名单匹配，GFW就会立即发送伪造的TCP RST包来切断TCP连接。&lt;/p&gt;
&lt;p&gt;八天之后，审查者又在北京时间2022年9月30日星期五，下午1点56分到下午2点35分之间的某一刻将&lt;code&gt;google.com&lt;/code&gt;和&lt;code&gt;*.google.com&lt;/code&gt;加入到DNS黑名单中。GFW会检查所有DNS请求包，如果请求的域名与黑名单相匹配，GFW就会立即发送伪造的、含有错误IP地址的应答包给客户端。&lt;/p&gt;
&lt;p&gt;下面是一些常见问题：&lt;/p&gt;
&lt;h2 id=&#34;q-被审查的域名都有哪些&#34;&gt;Q: 被审查的域名都有哪些？&lt;/h2&gt;
&lt;p&gt;所有符合&lt;code&gt;google.com&lt;/code&gt;或&lt;code&gt;*.google.com&lt;/code&gt;规则的域名都受到了审查。比如，谷歌翻译的域名&lt;code&gt;translate.google.com&lt;/code&gt;就被审查了。&lt;/p&gt;
&lt;p&gt;我们还确认&lt;code&gt;*google.com&lt;/code&gt;和&lt;code&gt;google.com.*&lt;/code&gt;还不是黑名单规则。比如说，&lt;code&gt;madgoogle.com&lt;/code&gt;还有&lt;code&gt;translate.google.com.co&lt;/code&gt;就还没被审查。&lt;/p&gt;
&lt;h2 id=&#34;q-这次审查有何影响&#34;&gt;Q: 这次审查有何影响？&lt;/h2&gt;
&lt;p&gt;包括一些热门服务在内的&lt;a href=&#34;https://github.com/net4people/bbs/files/9690188/affected_google_domains.txt&#34;&gt;超过1100个域名&lt;/a&gt;受到了审查。比如说，&lt;code&gt;firebase.google.com&lt;/code&gt;，&lt;code&gt;translate.google.com&lt;/code&gt;，&lt;code&gt;maps.google.com&lt;/code&gt;，&lt;code&gt;scholar.google.com&lt;/code&gt;，&lt;code&gt;feedburner.google.com&lt;/code&gt;，还有&lt;code&gt;ads.google.com&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;我们已经将受到影响的域名&lt;a href=&#34;https://github.com/net4people/bbs/files/9690188/affected_google_domains.txt&#34;&gt;附在&lt;/a&gt;了这篇帖子上。&lt;/p&gt;
&lt;h2 id=&#34;q-你们有没有观察到被白名单豁免的域名&#34;&gt;Q: 你们有没有观察到被白名单豁免的域名?&lt;/h2&gt;
&lt;p&gt;没有。我们测试的1147个&lt;code&gt;*.google.com&lt;/code&gt;域名全都被屏蔽了，无一例外。&lt;/p&gt;
&lt;h2 id=&#34;q-你们还观察到了什么&#34;&gt;Q: 你们还观察到了什么？&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;SNI审查和DNS审查的开始时间均在中国的工作时间内。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;google.com&lt;/code&gt;被GFW的三种不同的DNS审查机器列入黑名单；而&lt;code&gt;*.google.com&lt;/code&gt;则只被2号和3号机器列入黑名单。(每个机器发的DNS伪造包的指纹详见&lt;a href=&#34;https://censorbib.nymity.ch/pdf/Anonymous2020a.pdf#page=4&#34;&gt;这篇论文&lt;/a&gt;的Table 3。)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;q-你们是怎么知道这次屏蔽事件的&#34;&gt;Q: 你们是怎么知道这次屏蔽事件的？&lt;/h2&gt;
&lt;p&gt;我们通过发送含有不同域名的DNS请求包和含有不用SNI的ClientHello包，来持续地监测中国的网站审查。当新的域名遭到审查时，我们就留下了相应的记录。&lt;/p&gt;
&lt;p&gt;我们鼓励读者你也独立地测量和监控互联网审查。因为独立测量审查的人越多，我们作为一个集体就越能更快速地发现新的审查事件。&lt;/p&gt;
&lt;p&gt;测量一个域名是否受到DNS审查的办法是：向境外的&lt;strong&gt;非&lt;/strong&gt;DNS服务器发送一个含有该域名的请求包。选择境外服务器是为了让你的包经过国际网络出口，从而让GFW看到。因为你发送请求的目的地服务器不是DNS服务器，因此如果你收到了任何DNS应答包，那么都是中间人伪造的（常见的中间人就是GFW）。比如说如果你想测试&lt;code&gt;google.com&lt;/code&gt;是否被审查了，则可以：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dig @23.197.152.0 google.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;因为&lt;code&gt;23.197.152.0&lt;/code&gt;是一台境外的非DNS服务器，所以如果你收到了任何DNS响应包的话，就证明&lt;code&gt;google.com&lt;/code&gt;被审查了。&lt;/p&gt;
&lt;p&gt;测量一个域名是否受到SNI审查的办法是：向境外服务器的&lt;em&gt;开放端口&lt;/em&gt;发送一个含有该域名的TLS Clienthello包。选择境外服务器是为了让你的包经过国际网络出口，从而让GFW看到。如果你收到了TCP RST包，那么有可能是因为你的连接被GFW阻断了。比如说如果你想测试&lt;code&gt;google.com&lt;/code&gt;是否被审查了，则可以：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;openssl s_client -servername google.com -tlsextdebug -msg -connect 96.17.116.205:80
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;其中&lt;code&gt;96.17.116.205&lt;/code&gt;是一台境外服务器，&lt;code&gt;80&lt;/code&gt;是它的一个开放的端口。&lt;/p&gt;
&lt;p&gt;如果openssl报错&lt;code&gt;write:errno=104&lt;/code&gt;，那么说明你的连接被TCP重置了。而这就证明&lt;code&gt;google.com&lt;/code&gt;&lt;em&gt;有可能&lt;/em&gt;被审查了。我们说“有可能”是因为有假阳性的可能。为了减少假阳性的可能，你应该用一个不太可能被审查的域名设置一个对照组（比如用&lt;code&gt;baidu.com&lt;/code&gt;）。然后观察向同一个服务器的同一个端口发送含有&lt;code&gt;baidu.com&lt;/code&gt;SNI的ClientHello，连接是不是就不会被重置。&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>Evaluating the censorship resistance of Apple&#39;s iCloud Private Relay</title>
        <link>https://gfw.report/blog/private_relay_censorship/en/</link>
        <pubDate>Fri, 24 Sep 2021 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/private_relay_censorship/en/</guid>
        
        <description>&lt;p&gt;On September 20, 2021, Apple released &lt;a href=&#34;https://support.apple.com/en-us/HT212614&#34;&gt;iCloud Private Relay&lt;/a&gt; (&lt;a href=&#34;https://web.archive.org/web/20210921182126/https://support.apple.com/en-us/HT212614&#34;&gt;archive&lt;/a&gt;) as a new service on iOS 15, iPadOS 15, and macOS Monterey.&lt;/p&gt;
&lt;p&gt;Although Apple does not introduce Private Relay as a censorship circumvention tool, in this post, we attempt to understand the potential value of iCloud Private Relay for censorship circumvention. We first introduce how private relay works based on Apple&amp;rsquo;s documents and our measurement. We then present our empirical observation on its censorship resilience, supported by our measurements in China. As of September 23, 2021, we haven&amp;rsquo;t found any evidence of censorship against it in China. We also discuss its blocking resistance against common censorship methods, including DNS hijacking, SNI filtering, IP blocking, active probing, as well as self-censorship. Finally, we present some important but unanswered questions about the Private Relay.&lt;/p&gt;
&lt;p&gt;We do not intend to make this a comprehensive report. Instead, we hope to start off discussions by presenting our thoughts, observations and measurement methods, encouraging more censorship measurement and circumvention enthusiasts to study it.&lt;/p&gt;
&lt;h2 id=&#34;main-findings&#34;&gt;Main Findings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;As of September 23, 2021, we haven&amp;rsquo;t found any evidence of censorship against Private Relay in China.&lt;/li&gt;
&lt;li&gt;The Private Relay can be easily block by common censorship methods, including DNS hijacking, (QUIC) SNI filtering, IP blocking. It may be possible to block by active probing as well.&lt;/li&gt;
&lt;li&gt;The service has been self-censored in many countries, though it is reportedly still usable with a foreign iCloud account.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Below is an introduction based on our measurement and our understanding of &lt;a href=&#34;https://support.apple.com/en-us/HT212614&#34;&gt;Apple&amp;rsquo;s&lt;/a&gt; &lt;a href=&#34;https://developer.apple.com/support/prepare-your-network-for-icloud-private-relay&#34;&gt;documents&lt;/a&gt;. In summary, the Private Relay has a two-hop structure, consisting of an ingress relay and an egress relay:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ------------
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; |DNS resolver|
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ------------
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       ^
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       |
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    A mask.icloud.com?
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HTTPS mask.icloud.com?
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       |
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       |
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ------           -------------           ------------           -------
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   |client| &amp;lt;==1==&amp;gt; |ingress relay| &amp;lt;==2==&amp;gt; |egress relay| &amp;lt;==3==&amp;gt; |website|
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ------           -------------           ------------           -------
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Step 0: The client sends two plaintext queries of type &lt;code&gt;A&lt;/code&gt; and &lt;code&gt;HTTPS&lt;/code&gt; for &lt;code&gt;mask.icloud.com&lt;/code&gt; or &lt;code&gt;mask-api.icloud.com&lt;/code&gt; to a DNS resolver, asking for the IP addresses of ingress relays.&lt;/li&gt;
&lt;li&gt;Step 1: The client then selects one IP address from the answers and initiates an encrypted QUIC connection to its port 443.&lt;/li&gt;
&lt;li&gt;Step 2: According to the &lt;a href=&#34;https://support.apple.com/en-us/HT212614&#34;&gt;document&lt;/a&gt;, &amp;ldquo;[t]he second relay, which is operated by a third-party content provider, generates a temporary IP address, decrypts the name of the website you requested and connects you to the site&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Step 3: The traffic between the egress relays and websites is exactly the same as traffic between clients and websites when no Private Relay is used.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;capture-traffic-between-an-iphone-and-relays&#34;&gt;Capture traffic between an iPhone and relays&lt;/h2&gt;
&lt;p&gt;To capture and analyze the traffic from a mobile device, one intuitive way is to set up a VPN that works at the network layer, tunneling all the traffic at the transport layer and above to a (local) server, where &lt;code&gt;tcpdump&lt;/code&gt; or &lt;code&gt;wireshark&lt;/code&gt; can be run. However, the iCloud Private Relay feature appears to be disabled when a VPN is used.&lt;/p&gt;
&lt;p&gt;As an alternative, we set up a WiFi hotspot from the desktop and let the iPhone connect to it. We then captured and analyzed the traffic from the laptop. Below is the script we used to setup the hotspot, which was borrowed from &lt;a href=&#34;https://computingforgeeks.com/create-wi-fi-hotspot-on-ubuntu-debian-fedora-centos-arch/&#34;&gt;this tutorial&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;set -x
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;set -e
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;## Source: https://computingforgeeks.com/create-wi-fi-hotspot-on-ubuntu-debian-fedora-centos-arch/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;## Change the IFNAME to your Wi-Fi network interface: `ip link show`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;IFNAME&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;wlp4s0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CON_NAME&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;MyHotSpot&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;PASSWORD&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;77fdda98a6feaf6cc9&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nmcli con add type wifi ifname &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$IFNAME&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; con-name &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$CON_NAME&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; autoconnect yes ssid &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$CON_NAME&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nmcli con modify &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$CON_NAME&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; 802-11-wireless.mode ap 802-11-wireless.band bg ipv4.method shared
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nmcli con modify &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$CON_NAME&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; wifi-sec.key-mgmt wpa-psk
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nmcli con modify myhotspot wifi-sec.psk &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$PASSWORD&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nmcli connection show &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$CON_NAME&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nmcli con up &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$CON_NAME&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nmcli connection show &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$CON_NAME&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When observing the DNS and initial QUIC traffic, we find the following Wireshark filter helpful:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;quic.long.packet_type == 0 or udp.port == 53
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;measure-current-censorship-and-evaluate-potential-censorship-cost&#34;&gt;Measure current censorship and evaluate potential censorship cost&lt;/h2&gt;
&lt;p&gt;In this section, we measure current censorship in China, and discuss the cost for a censor to detect and block Private Relay using commonly used censorship methods.&lt;/p&gt;
&lt;h3 id=&#34;dns-hijacking&#34;&gt;DNS hijacking&lt;/h3&gt;
&lt;p&gt;As introduced above, the client needs to get an IP address of the ingress relay before initiating QUIC connections to it. Since these DNS queries are (possibly intentionally) sent in plaintext, it is vulnerable to the DNS poisoning attack. Actually, Apple &lt;a href=&#34;https://developer.apple.com/support/prepare-your-network-for-icloud-private-relay&#34;&gt;suggests&lt;/a&gt; DNS hijacking as &amp;ldquo;[t]he fastest and most reliable way&amp;rdquo; to block Private Relay:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The fastest and most reliable way to alert users is to return a negative answer from your network’s DNS resolver, preventing DNS resolution for the following hostnames used by Private Relay traffic. Avoid causing DNS resolution timeouts or silently dropping IP packets sent to the Private Relay server, as this can lead to delays on client devices.&lt;/p&gt;
&lt;p&gt;mask.icloud.com&lt;/p&gt;
&lt;p&gt;mask-h2.icloud.com&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;In practice, we observed two ways for the client to get an IP address of the resolvers. The first way is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The client first sends two DNS queries of type &lt;code&gt;A&lt;/code&gt; and &lt;code&gt;HTTPS&lt;/code&gt; for &lt;code&gt;mask.icloud.com&lt;/code&gt;. The responses include a type &lt;code&gt;CNAME&lt;/code&gt; answer &lt;code&gt;mask.apple-dns.net&lt;/code&gt;, along with many type &lt;code&gt;A&lt;/code&gt; answers.&lt;/li&gt;
&lt;li&gt;The client appears to select the first answer in the reponses, which is the &lt;code&gt;CNAME&lt;/code&gt; one. The client thus has to send another two DNS queries of type &lt;code&gt;A&lt;/code&gt; and &lt;code&gt;HTTPS&lt;/code&gt; for &lt;code&gt;mask.apple-dns.net&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The client will then select the first answer in the responses.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The second way is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The client first sent two DNS queries of type &lt;code&gt;A&lt;/code&gt; and &lt;code&gt;HTTPS&lt;/code&gt; for &lt;code&gt;mask-api.icloud.com&lt;/code&gt;. The responses include a type &lt;code&gt;CNAME&lt;/code&gt; answer &lt;code&gt;mask-api.fe.apple-dns.net&lt;/code&gt;, along with many type &lt;code&gt;A&lt;/code&gt; answers.&lt;/li&gt;
&lt;li&gt;The client appears to select the first answer in the reponses, which is the &lt;code&gt;CNAME&lt;/code&gt; one. The client thus has to send another two DNS queries of type &lt;code&gt;A&lt;/code&gt; and &lt;code&gt;HTTPS&lt;/code&gt; for &lt;code&gt;mask-api.fe.apple-dns.net&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The client will then select the first answer in the responses.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Note that we did not observe any query of the &lt;a href=&#34;https://developer.apple.com/support/prepare-your-network-for-icloud-private-relay&#34;&gt;documented&lt;/a&gt; &lt;code&gt;mask-h2.icloud.com&lt;/code&gt;. This observation aligns with the finding in &lt;a href=&#34;https://isc.sans.edu/forums/diary/A+First+Look+at+Apples+iOS+15+Private+Relay+feature/27858/&#34;&gt;this post&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;measuring-current-dns-censorship-in-china&#34;&gt;Measuring current DNS censorship in China&lt;/h4&gt;
&lt;p&gt;Although it is trivial for the GFW to poison the domains mentioned above, we have not been able to observe any DNS poisoning against these domains yet. Specifically, we tested by sending DNS queries from China to the outside, and also from outside to China. You can also test it yourself from the outside of China, exploiting the bi-directional characterisitc of the GFW. It is worth noting that &lt;code&gt;dig&lt;/code&gt; does not support &lt;a href=&#34;https://www.ietf.org/archive/id/draft-ietf-dnsop-svcb-https-07.html#name-the-svcb-record-type&#34;&gt;type &lt;code&gt;HTTPS&lt;/code&gt;&lt;/a&gt; queries yet; be careful that &lt;strong&gt;&lt;code&gt;dig&lt;/code&gt; will fall back to type &lt;code&gt;A&lt;/code&gt; queries without a blocking warning&lt;/strong&gt; for a query like this: &lt;code&gt;dig @1.1.1.1 mask.icloud.com -t HTTPS +timeout=2&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;We thus used the follwing script with Scapy. Since &lt;code&gt;104.193.82.0&lt;/code&gt; is a Chinese IP address without a DNS service running, we would have received responses injected by the GFW if any of the queries were censored.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python3&#34; data-lang=&#34;python3&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/usr/bin/env python3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# This script is only reponsible for sending DNS queries, but not for receiving responses.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# To observe DNS responses, use tcpdump or wireshark. eg. :&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# sudo tcpdump host 104.193.82.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; scapy.all &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# https://www.ietf.org/archive/id/draft-ietf-dnsop-svcb-https-07.html#name-the-svcb-record-type&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TYPE_HTTPS&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;65&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CHINESE_IP&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;104.193.82.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; qname &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mask.icloud.com&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mask-api.icloud.com&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mask.apple-dns.net&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mask-api.fe.apple-dns.net&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mask-h2.icloud.com&amp;#34;&lt;/span&gt;]:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; qtype &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; [TYPE_HTTPS, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;A&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;AAAA&amp;#34;&lt;/span&gt;]:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        send(IP(dst&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;CHINESE_IP)&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;UDP(dport&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;53&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;DNS(rd&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;, qd&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;DNSQR(qname&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;qname, qtype&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;qtype)))
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;sni-filtering&#34;&gt;SNI filtering&lt;/h3&gt;
&lt;p&gt;As explained in this &lt;a href=&#34;https://stackoverflow.com/a/65400340&#34;&gt;answer&lt;/a&gt;, although clienthello messages are encryped in QUIC, &lt;a href=&#34;https://datatracker.ietf.org/doc/html/draft-ietf-quic-tls-33#section-5.2&#34;&gt;the secrets are derived from a fixed salt and the Destination Connection ID field&lt;/a&gt;. The Initial packets can thus be easily decrypted. Actually, a newer version of the Wireshark can automate the decryption process for you.&lt;/p&gt;
&lt;p&gt;It is therefore possible for censor to decrypt the Inital packets and check the SNI field against &lt;code&gt;mask.icloud.com&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id=&#34;measuring-current-quic-sni-censorship-in-china&#34;&gt;Measuring current (QUIC-)SNI censorship in China&lt;/h4&gt;
&lt;p&gt;We tested by capturing the initial packets from client and replaying them on a Chinese server. The server responded with QUIC handshake messages and we observed no disruption.&lt;/p&gt;
&lt;p&gt;For example, we first saved the following hex stream as &lt;code&gt;quic.hex&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;c80000000108bec8eac6d55fe88a08e87fe5dfa21d247700452c6a2a855275bb191ffe213c2ad1e07467f9ed24956172c4bee69e8446049a94fbae38973cf11ce80cc1379237e4a0f610ae2408ac096635b3978dcf21b4c81d96a2e53d9a9b04dc234341869f7ea85dc99e2ea028827257c4b6993a29ae07e9368c22426d1780abcf8c4b5ab8b2e3ba4de878306ecf4a4e5851c2168b8412f9a55fa5971520914f13c4a86106161e19bfa1eff9c08a9b566e1656ebceeb7184d60a0328203e5e66fc16ad8452343dee5e2ad22ba0ef80b978ba62c64ac75826b79d119c5a7bf9859655d79116e3f4069e87269bab7f9d0373d8e98e4c4891eaf621ce073c61f59eeddd828c96d785ff3155083f5ac93263e5496a6a38a2a2e0bbf64041e76a500bf4748143f2b8705c3732dc12b218f428eeadd02c50e71c5ffaa1ca14c483ac44c75d10e98d38ddaa38f38c0ba7af20108967541586c51bccd2765781b123b4a91fed0f32f0b11bfc4ff5beaccb023f7d977787a0d09942f5159da772b9ca5a7c512a8644bb399858cc6ee2a5d5c099be6780a619cbadc6407db320d34179bf1ff94401ef0e134d0d8ae705a468b5dcd7b9c078e72ddba146e947dca7d4968b3fc892e425ef60bec05df120b20f26f340ed134b064b4fddd194fee666ff49c943b82f812c6f57daaa70ef5aa7b511e8d9501a447783a4e7eee709499161c4055941d516f16bc4ed114d90f6d49c1a297484749fa99f84eb309c2743018eeebb71c6050061e4899b94ecc746fb98174ce383a9d250f61d3aca4db9249122763ca03c41a67b616e722f5171e34a610aeb9cfb6c74f8bdd549d1b0fbd4a766dd66dc355de7f55d55e029d495687c149d9bac0eba89276a0c8048a97545c08597ea836917ceaebe2e334d9376f3c3dc29ee6df84508558d2c77a1139907aba7735945846e3a8c4675845e01c7e2cb1370b31221f95e1bd0c8e5ecc9e86bf5658859379e3c752e34d6bf9e0e9481cf9ed5df79b9c756cb904603eaab2478b6aaa5740b28213f2716b2b4769e21d9c7e2d62e9708de9644a3de048745f079717e0a565475d0684be9cb13c261f55832953c37078cde29894b2176eab5157e4262dbba7919ef2c66d0cf86d7de93059e9f013e2e82544dc803dea878e184d248065454c65c26d8c67b7778e229390de7560815e6cdc53cce1fb11d62d9b0ecea890b4310ffcf7cd544ca8d6a1b9eed7b92a93fd6c00d0a2338f66ad77c9220c69437b3651b18899c68a8e59f12dc2f014d70a6ca5b4aa419516fde01079a1f76c3198db4f6229641e5e89b1b6aa9797c27b55f439e98858f9d3eef1ffff6f5e52e9e94468d21e8ab965abb864836be07016fdbb63a24e954b863a98d590033bd163df6a7740d256a0bbaa910e45a8f40877b6b84fd2d8f57604d236e4351bd228dc707fe3538440b2796dbab58183f306912c6104d13ea96c649fd338994b4a2d5ecbfdd66b69b5245763371cc38c92774723f546a27519db4660f5dc6312f5f56edad2dcb77bd3034c8a4a084ee7e57016fea8a5fcb114ee5ae97d55b177dd8b1ccd0508fb6baee6244ccedf2705ba35a760b944acb4b3e0394b5add44e851d18e0400d99b4910cd4cb63311727f4a98289ce4ee960c506b72243fde14cf5d3185cc4b598f080faf9ebc75847dc7126bb90c47368c5408898e7bdaf9cde4f04299043600dcdf850c306c737d4be37c316eed63718804e9972f6c95d79771ada173293b06037f1282f4e79f8116e3d4c5fed2ec6db335faf2b0481b3aa3a0192f9ff3fea35ae1bafe71bbcd07a301fe11638a180b6b202c29dea331ac6a2527587a82175cd7b96033b165b88580e83df7759ebe6586d68d4efe6028403d5d0d700e967ca4908bbd8e4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;We then send it to the ingress relay and received a response:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;xxd -r -p quic.hex | nc -u mask.icloud.com &lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt; -v
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Note that the payload in the example will not get a reponse from an ingress relay anymore, approximately two days after it was first generated. One can probably still trigger reponses from the ingress relays with freshly generated Initial packets.&lt;/p&gt;
&lt;h3 id=&#34;quic-tls-fingerprint-filtering&#34;&gt;(Quic-)TLS fingerprint filtering&lt;/h3&gt;
&lt;p&gt;As explained above, the clienthello messages in the Initial packets can be easily decrypted. It is thus possible for the censor to conduct censorship based on the &lt;a href=&#34;https://github.com/net4people/bbs/issues/54&#34;&gt;TLS fingerprint&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Our observation of the TLS fingerprint of the Private Relay aligns with the findings in &lt;a href=&#34;https://isc.sans.edu/forums/diary/A+First+Look+at+Apples+iOS+15+Private+Relay+feature/27858/&#34;&gt;this report&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The connection to the relay uses QUIC to port 443/UDP and TLS 1.3. The clienthello includes the server name extension and the server name &amp;ldquo;mask.icloud.com.&amp;rdquo; Only 3 cipher suites are offered (TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256). The server ends up selecting the AES128 suite. Application Layer Protocol Negotiation (ALPN) is also used, with unsurprisingly HTTP/3 being the only option.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Note that, apart from the 3 cipher suites, we saw a forth Grease ciphersuit (&lt;code&gt;0x2a2a&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;As a side note, we also observed two GREASE extensions
&lt;a href=&#34;https://www.rfc-editor.org/rfc/rfc8701.html#section-2-3.1&#34;&gt;0xAAAA&lt;/a&gt; and &lt;a href=&#34;https://www.rfc-editor.org/rfc/rfc8701.html#section-2-3.4&#34;&gt;0X3A3A&lt;/a&gt;. They probably do not have anything to do with authentication (if they do, it&amp;rsquo;s something very non-standard Apple is doing). The GREASE extensions turned out to be not uncommon; web browsers send them as well. As expalined in &lt;a href=&#34;https://tools.ietf.org/id/draft-ietf-tls-grease-04.html&#34;&gt;this doc&lt;/a&gt;, they were used to &amp;ldquo;reserve a set of TLS protocol values that may be advertised to ensure peers correctly handle unknown values&amp;rdquo;. In other words, GREASE is meant to provide automated diversity to protocol fields, to prevent the protocol from &amp;ldquo;rusting shut&amp;rdquo; by assuming only certain values may appear.&lt;/p&gt;
&lt;p&gt;We are also curious, by any chance, &lt;a href=&#34;https://tlsfingerprint.io/&#34;&gt;tlsfingerprint.io&lt;/a&gt; can tell us how unique these (or any) (QUIC) ClientHello fingerprints are? (&lt;a href=&#34;https://github.com/sergeyfrolov&#34;&gt;@sergeyfrolov&lt;/a&gt;, &lt;a href=&#34;https://github.com/ewust&#34;&gt;@ewust&lt;/a&gt;)&lt;/p&gt;
&lt;h3 id=&#34;active-probing-to-ingress-relay&#34;&gt;Active probing to ingress relay&lt;/h3&gt;
&lt;p&gt;We find that the ingress relay will respond to a replay of the Initial packets within approximately two days since the packets were generated. We also tried to use &lt;a href=&#34;https://github.com/lucas-clemente/quic-go&#34;&gt;quic-go&lt;/a&gt; and &lt;a href=&#34;https://github.com/lucas-clemente/quic-go&#34;&gt;&lt;code&gt;curl --http3&lt;/code&gt;&lt;/a&gt; to send a typical Quic with SNI=mask.apple.com to the ingress relay; however, the ingress relay did not respond anything in this case. We suspected that has something to do with the &lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc7301&#34;&gt;ALPN extension&lt;/a&gt; included in the clienthello sent by the legitimate clients. It may also be possible that the client traffic contains some other authenticators.&lt;/p&gt;
&lt;h3 id=&#34;ip-blocking-to-ingress-relays&#34;&gt;IP blocking to ingress relays&lt;/h3&gt;
&lt;p&gt;As introduced above, we could still receive responses from ingress relays by sending Initial packets from China. This indicates that, at least for the IP addresses we tested, China has not blocked it yet.&lt;/p&gt;
&lt;p&gt;However, it could be fairly easy to block the ingress relay IP in serveral ways:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;block all IP addresses to which &lt;code&gt;mask.icloud.com&lt;/code&gt;, &lt;code&gt;mask-api.icloud.com&lt;/code&gt; and &lt;code&gt;mask-h2.icloud.com&lt;/code&gt; resolve.&lt;/li&gt;
&lt;li&gt;observe QUIC connections with SNI=mask.apple.com and confirm it is indeed an ingress relay using the active probing approach mentioned above. Then block the corresponding IP addresses.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;ip-based-discrimination-against-egress-relays&#34;&gt;IP-based discrimination against egress relays&lt;/h3&gt;
&lt;p&gt;Similar to Tor exit relays, which are available publicly, Apple provides an up-to-date &lt;a href=&#34;https://mask-api.icloud.com/egress-ip-ranges.csv&#34;&gt;lists of egress IP ranges&lt;/a&gt; (&lt;a href=&#34;https://web.archive.org/web/20210921182354/https://mask-api.icloud.com/egress-ip-ranges.csv&#34;&gt;archive&lt;/a&gt;). This list could be easily used by websites to discriminate against Private Relay users, like &lt;a href=&#34;https://www.icir.org/vern/papers/tor-differential.NDSS16.pdf&#34;&gt;what Tor users have been suffering from&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;questions-not-answered-yet&#34;&gt;Questions not answered yet&lt;/h2&gt;
&lt;h3 id=&#34;how-apple-implements-the-self-censorship&#34;&gt;How Apple implements the self censorship&lt;/h3&gt;
&lt;p&gt;Apart from all the possible external censorship methods discussed above, Apple has been conducting self-censorship to prevent users in heavily censored areas from using the Private Relays. It is thus important to understand how Apple implements the self censorship in order to circumvent it.&lt;/p&gt;
&lt;p&gt;Specifically, Apple &lt;a href=&#34;https://support.apple.com/en-us/HT212614&#34;&gt;admitted&lt;/a&gt; that:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Private Relay isn&amp;rsquo;t available in all countries and regions. If you travel somewhere Private Relay isn&amp;rsquo;t available, it will automatically turn off and will turn on again when you re-enter a country or region that supports it. Private Relay will notify you when it&amp;rsquo;s unavailable and when it&amp;rsquo;s active again.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;According to &lt;a href=&#34;https://www.macrumors.com/2021/09/17/icloud-private-relay-disabled-russia/&#34;&gt;many&lt;/a&gt; &lt;a href=&#34;https://www.reuters.com/world/china/apples-new-private-relay-feature-will-not-be-available-china-2021-06-07/&#34;&gt;news sources&lt;/a&gt;, these countries include China, Belarus, Colombia, Egypt, Kazakhstan, Saudi Arabia, South Africa, Turkmenistan, Uganda, the Philippines, and Russia.&lt;/p&gt;
&lt;p&gt;It remains an unanswered questions on how and what self-censorship has been implemented by Apple. From our testing, it seems that the ingress server does &lt;strong&gt;not&lt;/strong&gt; refuse service based on the geolocation of client IP addresses. However, it is still unclear to us how Apples determines the location of the user and thus refuse to be activated.&lt;/p&gt;
&lt;p&gt;One report &lt;a href=&#34;https://qust.me/post/PrivateRelay/&#34;&gt;claimed&lt;/a&gt; (&lt;a href=&#34;https://web.archive.org/web/20210707024209/https://qust.me/post/PrivateRelay/&#34;&gt;archive&lt;/a&gt;) that Apple learned users&amp;rsquo; geo-location from users&amp;rsquo; IP addresses connected to its certain servers; proxying traffic to these certain servers will activate the Private Relay service.&lt;/p&gt;
&lt;p&gt;Another user report &lt;a href=&#34;https://v2ex.com/t/803142&#34;&gt;claimed&lt;/a&gt; (&lt;a href=&#34;https://web.archive.org/web/20210924192532/https://v2ex.com/t/803142&#34;&gt;archive&lt;/a&gt;) that it is sufficient to activate Private Relay by changing the iCloud region to ones where Private Relay is not self-censored. However, another user in the post failed to activate the service with the same settings.&lt;/p&gt;
&lt;p&gt;We note that it is not uncommon for a Chinese iOS circumventor to have a non-Chinese iCloud account. This is because, due to the heavy censorship against circumvention tools in Chinese app stores, it is almost essential to have a non-Chinese iCloud account to install other circumvention tools.&lt;/p&gt;
&lt;h3 id=&#34;how-does-the-user-authentication-work&#34;&gt;How does the user authentication work?&lt;/h3&gt;
&lt;p&gt;Apple &lt;a href=&#34;https://developer.apple.com/support/prepare-your-network-for-icloud-private-relay&#34;&gt;claims&lt;/a&gt; that:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Private Relay validates that the client connecting is an iPhone, iPad, or Mac, so you can be assured that connections are coming from an Apple device.&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;All connections that use Private Relay validate that the client is an iPhone, iPad, or Mac and that the customer has a valid iCloud+ subscription. Private Relay enforces several anti-abuse and anti-fraud techniques, such as single-use authentication tokens and rate-limiting.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;We are curious how (or if) Apple authenticates Priavet Relay users on the ingress and egress relays.&lt;/p&gt;
&lt;h3 id=&#34;how-does-the-underlying-decryption-work&#34;&gt;How does the underlying decryption work?&lt;/h3&gt;
&lt;p&gt;In the introduction section, we mentioned that the Private Relay &amp;ldquo;has a two-hop structure&amp;rdquo;. However, we do not have know anything more about the underlying structure. For example, is an &lt;a href=&#34;https://en.wikipedia.org/wiki/Onion_routing&#34;&gt;onion-routing&lt;/a&gt; structure used? Amir Houmansadr &lt;a href=&#34;https://gfw.report/blog/private_relay_privacy/en/#our-immediate-questions-about-private-relays&#34;&gt;expressed concerns on the intransparency of the underlying protocol&lt;/a&gt;. Further investigation is required to better understand the underlying encryption/decryption mechanism.&lt;/p&gt;
&lt;h2 id=&#34;acknowledgement&#34;&gt;Acknowledgement&lt;/h2&gt;
&lt;p&gt;We thank a person who prefers to stay anonymous for lending us an iPhone for testing.&lt;/p&gt;
&lt;h2 id=&#34;contacts&#34;&gt;Contacts&lt;/h2&gt;
&lt;p&gt;This report first appeared on &lt;a href=&#34;https://github.com/net4people/bbs/issues/87&#34;&gt;Net4People&lt;/a&gt;. We also maintain an up-to-date copy of the report on &lt;a href=&#34;https://gfw.report/blog/private_relay_censorship/en/&#34;&gt;GFW Report&lt;/a&gt; and ntc.party.&lt;/p&gt;
&lt;p&gt;We encourage you to share your comments publicly or privately. Our private contact information can be found at the footer of &lt;a href=&#34;https://gfw.report/&#34;&gt;GFW Report&lt;/a&gt;.&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>Reflections on Apple&#39;s iCloud Private Relay: Does it Really Improve Privacy?</title>
        <link>https://gfw.report/blog/private_relay_privacy/en/</link>
        <pubDate>Fri, 24 Sep 2021 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/private_relay_privacy/en/</guid>
        
        <description>&lt;p&gt;On September 20, 2021, Apple released &lt;a href=&#34;https://support.apple.com/en-us/HT212614&#34;&gt;iCloud Private Relay&lt;/a&gt; (&lt;a href=&#34;https://web.archive.org/web/20210921182126/https://support.apple.com/en-us/HT212614&#34;&gt;archive&lt;/a&gt;), a new capability embedded into iOS 15, iPadOS 15, and macOS Monterey. Its objective is to enhance the privacy and security of Apple users who surf the web in Apple&amp;rsquo;s Safari browser. This comes as an exciting news to  privacy advocates, especially given &lt;a href=&#34;https://www.reuters.com/technology/apple-says-photos-icloud-will-be-checked-by-child-abuse-detection-system-2021-08-09/&#34;&gt;Apple&amp;rsquo;s  controversial plans for inspecting iCloud photos&lt;/a&gt;, a decision that has caused  outrage in the  privacy community.&lt;/p&gt;
&lt;p&gt;In this report, we present an early analysis of iCloud Private Relay, aiming to validate the claims made by Apple on how this new feature can enhance user privacy. The report will get updated as we expand our findings.&lt;/p&gt;
&lt;h2 id=&#34;how-icloud-private-relay-works-apples-explanation&#34;&gt;How iCloud Private Relay Works: Apple&amp;rsquo;s Explanation&lt;/h2&gt;
&lt;p&gt;Apple has offered some high-level insights on the architecture of &lt;a href=&#34;https://developer.apple.com/support/prepare-your-network-for-icloud-private-relay&#34;&gt;iCloud Private Relay&lt;/a&gt;
(&lt;a href=&#34;https://web.archive.org/web/20210921182240/https://developer.apple.com/support/prepare-your-network-for-icloud-private-relay&#34;&gt;archive&lt;/a&gt;), but, unfortunately, many details are missing on its technical design. The following excerpts are the only technical details we could find officially from Apple (we have highlighted important pieces):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;iCloud Private Relay is a new internet privacy service offered as a part of an iCloud+ subscription that allows users on iOS 15, iPadOS 15, and macOS Monterey to connect to and browse the web &lt;strong&gt;more privately and securely&lt;/strong&gt;. Private Relay protects users’ web browsing in Safari, DNS resolution queries, and insecure http app traffic. Internet connections set up through Private Relay use &lt;strong&gt;anonymous IP addresses&lt;/strong&gt; that map to the region a user is in, without divulging the user’s exact location or identity.&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;The iCloud Private Relay service uses an &lt;strong&gt;innovative multi-hop architecture&lt;/strong&gt; in which users’ requests are sent through &lt;strong&gt;two separate internet relays&lt;/strong&gt; operated by different entities. This way, &lt;strong&gt;no single party — including Apple — can view or collect the details of users’ browsing activity&lt;/strong&gt;. Private Relay validates that the client connecting is an iPhone, iPad, or Mac, so you can be assured that connections are coming from an Apple device. Private Relay replaces the user’s original IP address with one assigned from the range of IP addresses used by the service. The assigned relay IP address may be shared among more than one Private Relay user in the same area. The relay IP address presented to networks and web servers accurately represents the client’s coarse city-level location by default, allowing your network to receive relevant location information when attempting to enforce geo-based restrictions based on IP address.&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;When Private Relay is enabled, your requests are sent through two separate, secure internet relays. Your IP address is visible to your network provider and to the first relay, which is operated by Apple. Your DNS records are encrypted, so neither party can see the address of the website you’re trying to visit. The second relay, which is operated by a &lt;strong&gt;third-party content provider&lt;/strong&gt;, generates a temporary IP address, decrypts the name of the website you requested and connects you to the site. All of this is done using the latest internet standards to maintain a high-performance browsing experience while protecting your privacy.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Based on the above excerpts from Apple, and also through experiments in a lab setting  using Apple devices, it appears that a Private Relay connection has the following format:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   |Safari (an apple user)| &amp;lt;==1==&amp;gt; |ingress relay (a proxy controlled by Apple)| &amp;lt;==2==&amp;gt; |egress relay (a third-party content provider, e.g., Akamai)| &amp;lt;==3==&amp;gt; |website|
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;our-immediate-questions-about-private-relays&#34;&gt;Our Immediate Questions about Private Relays&lt;/h2&gt;
&lt;p&gt;Apple&amp;rsquo;s concise explanation of Private Relays  leaves many questions lingering about the technical design of Private Relays, that can directly impact its privacy promises. In particular:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;The protocol is mostly unknown!&lt;/strong&gt; What is the &amp;ldquo;innovative multi-hop architecture&amp;rdquo; that Apple claims to be using? Is it borrowing ideas from the classic &lt;a href=&#34;https://en.wikipedia.org/wiki/Onion_routing&#34;&gt;onion routing&lt;/a&gt; protocol (which is used by &lt;a href=&#34;https://www.torproject.org/&#34;&gt;Tor&lt;/a&gt;), or has Apple come up with another architecture?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Does it really anonymize your IPs, as claimed by Apple?&lt;/strong&gt; Apple claims that Private Relays anonymize the IP addresses of the users. How are they defining anonymity? By the metrics long-established in the privacy community, or perhaps based on their own definition of anonymity?
Apple explains that  &amp;ldquo;your requests are sent through two separate, secure internet relays.&amp;rdquo; So, if Apple&amp;rsquo;s &amp;ldquo;innovative multi-hop architecture&amp;rdquo; is just a 2-hop &lt;a href=&#34;https://en.wikipedia.org/wiki/Onion_routing&#34;&gt;onion routing&lt;/a&gt; system, then by all means this is completely broken when it comes to anonymizing IP addresses. This is because, a 2-hop onion encryption can not provide &lt;em&gt;by-design anonymity&lt;/em&gt;, as the two hops can decide to disclose your identity once needed. That is, at any time the third-party content provider (e.g., Akamai) can work with Apple to de-anonymize a misbehaving Safari client who is connecting through Private Relays. So, it appears that &lt;em&gt;Apple is only promising you to not look into your connections&lt;/em&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;What about other non-IP means of identification?&lt;/strong&gt; Seems like Private Relays  aim to  anonymize IP addresses &lt;em&gt;only&lt;/em&gt;. Ask a first year graduate student working on privacy, and they will enumerate a plethora of techniques other than IP addresses that can give away your online identity, e.g., cookies, various forms of tracking, and side channels. So, one wonders, is Apple doing anything about those other features? Protecting just the IP address and ignoring other forms of identification will only give users an &lt;strong&gt;illusion of privacy&lt;/strong&gt;! (Actually, seems like people have already found some &lt;a href=&#34;https://fingerprintjs.com/blog/ios15-icloud-private-relay-vulnerability/&#34;&gt;vulnerability&lt;/a&gt; that leaks the IP addresses of Private Relay connections, using a &lt;a href=&#34;https://browserleaks.com/webrtc&#34;&gt;known WebRTC side channel&lt;/a&gt;!)&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;concluding-thoughts&#34;&gt;Concluding Thoughts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Apple has only offered some very high-level information on the architecture of iCloud Private Relay, but critical technical details are left undisclosed, in particular, the crypto techniques used to authenticate relays, whether and how traffic is encrypted between the relays, how exactly are the ingress and egress relays selected for each connection, and so on. Apple seems to be &lt;strong&gt;ignoring the most fundamental principle of information assurance&lt;/strong&gt;, &lt;a href=&#34;https://en.wikipedia.org/wiki/Kerckhoffs%27s_principle&#34;&gt;Kerckhoffs&amp;rsquo;s principle&lt;/a&gt;, that states that security by obscurity is doomed to fail! We hope Apple will release extensive technical details of its iCloud Private Relay as well as open source its code so it can be analyzed and inspected by  security and privacy researchers and practitionors.&lt;/li&gt;
&lt;li&gt;Despite the missing details from Apple on the technical design of Private Relays, the provided description by Apple leads us to conclude that private relays &lt;strong&gt;do not provide privacy by-design, but privacy by-decision&lt;/strong&gt;. That is, there&amp;rsquo;s nothing technical preventing Apple and the third-party  content providers (like Akamai) to work together to de-anonymize a misbehaving &amp;ldquo;anonymized&amp;rdquo; connection, instead they have only decided to respect your privacy (perhaps only untill you start misbehaving).&lt;/li&gt;
&lt;li&gt;It appears that Apple is only targetting a single aspect of anonymity, namely IP addresses. Your network traffic can leak your identity/privacy in many  ways other than your IP address (e.g. cookies, various trackers, side channels), but it seems like all other facets are swept under the rug. In fact, this is the very reason that the Tor Browser exists: a specialized browser designed by Tor to complement its (3-hop) onion routing technique by taking care of the  non-IP means of privacy leakage. Therefore, we are worried that Private Relays are likely to give average users only a &lt;strong&gt;falsified perception of privacy&lt;/strong&gt;, leading them towards radical actions (like browsing unsafe websites) that they would not take if it was not for such privacy illusion.&lt;/li&gt;
&lt;li&gt;Don&amp;rsquo;t get me wrong! I truly admire Apple for taking steps towards improving their users&amp;rsquo; privacy. But, they might as well want to do it right!&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;acknowledgements&#34;&gt;Acknowledgements&lt;/h2&gt;
&lt;p&gt;We thank David Fifield and many other people for giving us feedback.&lt;/p&gt;
&lt;h2 id=&#34;related-resources&#34;&gt;Related Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://support.apple.com/en-us/HT212614&#34;&gt;About iCloud Private Relay&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://developer.apple.com/support/prepare-your-network-for-icloud-private-relay&#34;&gt;Prepare Your Network or Web Server for iCloud Private Relay&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://mask-api.icloud.com/egress-ip-ranges.csv&#34;&gt;The list of egress relays&lt;/a&gt;
(&lt;a href=&#34;https://web.archive.org/web/20210921182354/https://mask-api.icloud.com/egress-ip-ranges.csv&#34;&gt;archive&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://isc.sans.edu/forums/diary/A+First+Look+at+Apples+iOS+15+Private+Relay+feature/27858/&#34;&gt;A First Look at Apple&amp;rsquo;s iOS 15 &amp;ldquo;Private Relay&amp;rdquo; feature&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://fingerprintjs.com/blog/ios15-icloud-private-relay-vulnerability/&#34;&gt;iOS 15 iCloud Private Relay Vulnerability Identified&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>评估苹果的iCloud Private Relay的抗封锁能力</title>
        <link>https://gfw.report/blog/private_relay_censorship/zh/</link>
        <pubDate>Fri, 24 Sep 2021 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/private_relay_censorship/zh/</guid>
        
        <description>&lt;p&gt;苹果公司于2021年9月20日，发布了一项名为&lt;a href=&#34;https://support.apple.com/en-us/HT212614&#34;&gt;iCloud Private Relay&lt;/a&gt; (&lt;a href=&#34;https://web.archive.org/web/20210921182126/https://support.apple.com/en-us/HT212614&#34;&gt;archive&lt;/a&gt;)的新服务，包含在iOS 15， iPadOS 15和macOS Monterey中。&lt;/p&gt;
&lt;p&gt;尽管苹果公司没有将它的翻墙功能作为卖点，在这篇报告中，我们试图理解iCloud Private Relay的翻墙价值。首先，基于我们的测量和对苹果文档的理解，我们介绍Private Relay的工作原理。接着我们通过在中国进行的测量实验实证性地评估Private Relay的抗封锁能力。截止2021年9月23日，我们尚未发现Private Relay被防火长城审查的迹象。我们还将讨论Private Relay面对常见的审查方式（如DNS劫持，SNI过滤，IP封锁，主动探测，和自我审查）时的抗封锁能力。最后，我们将提出一些关于Private Relay的重要但还未解决的问题。&lt;/p&gt;
&lt;p&gt;我们无意将这篇报告作得面面俱到。而仅想抛砖引玉地介绍我们的测量方法、观察及想法。我们鼓励更多的互联网审查爱好者做更深入的研究。&lt;/p&gt;
&lt;h2 id=&#34;主要发现&#34;&gt;主要发现&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;截止2021年9月23日，我们尚未发现Private Relay被防火长城审查的迹象&lt;/li&gt;
&lt;li&gt;Private Relay可以很容易地被常见的审查方式封锁，包括DNS劫持，SNI过滤，IP封锁，主动探测，和自我审查。主动探测Priavte Relay服务器也许也是可行的。&lt;/li&gt;
&lt;li&gt;Private Relay这项服务已被苹果在包括中国在内的许多国家和地区自我审查。但用户报告只需使用相应的国外iCloud账户即可绕过禁用。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;介绍&#34;&gt;介绍&lt;/h2&gt;
&lt;p&gt;以下介绍基于我们的测量和对&lt;a href=&#34;https://support.apple.com/en-us/HT212614&#34;&gt;苹果的&lt;/a&gt;&lt;a href=&#34;https://developer.apple.com/support/prepare-your-network-for-icloud-private-relay&#34;&gt;文档&lt;/a&gt;的理解。简而言之，Private Relay采用两跳结构，由一个入口节点和一个出口节点组成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ------------
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; | DNS 服务器  |
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ------------
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       ^
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       |
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    A mask.icloud.com?
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HTTPS mask.icloud.com?
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       |
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       |
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ------           -------------           ------------           ------
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   |客户端 | &amp;lt;==1==&amp;gt; |   入口节点   | &amp;lt;==2==&amp;gt; |   出口节点   | &amp;lt;==3==&amp;gt; |目标网站|
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ------           -------------           ------------           ------
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;第0步： 客户端发送两个明文的DNS请求到DNS服务器。请求的类型为&lt;code&gt;A&lt;/code&gt;和&lt;code&gt;HTTPS&lt;/code&gt;，请求的域名为&lt;code&gt;mask.icloud.com&lt;/code&gt;或&lt;code&gt;mask-api.icloud.com&lt;/code&gt;。目的是得到入口节点的IP地址。&lt;/li&gt;
&lt;li&gt;第1步： 客户端选取其中一个DNS服务器返回的IP地址，并发送QUIC初始包到入口节点的443端口。&lt;/li&gt;
&lt;li&gt;第2步： 根据&lt;a href=&#34;https://support.apple.com/en-us/HT212614&#34;&gt;文档&lt;/a&gt;，&amp;ldquo;出口节点由第三方运行，会生成一个临时IP地址，解密得到请求的目标网站地址，并与网站进行连接”。&lt;/li&gt;
&lt;li&gt;第3步： 出口节点和目标网站间的流量与，不启用Piravte Relay时，客户端和目标网站间的流量完全相同。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;捕获iphone与入口节点间的流量&#34;&gt;捕获iPhone与入口节点间的流量&lt;/h2&gt;
&lt;p&gt;一种自然想到的捕获和分析移动设备流量的方式是，在手机上建立起工作在网络层的VPN，把所有传输层及更上层的流量都转发到一个（本地的）服务器上，再在服务器上运行&lt;code&gt;tcpdump&lt;/code&gt;或者&lt;code&gt;wireshark&lt;/code&gt;。然而我们发现在VPN打开的状态下，iCloud Private Relay是无法启用的。&lt;/p&gt;
&lt;p&gt;作为替代方式，我们在电脑上建立起无线热点，并让iPhone连上去。我们这样就可以在电脑上捕获并分析流量了。我们用了以下脚本搭建无线热点，脚本借用了&lt;a href=&#34;https://computingforgeeks.com/create-wi-fi-hotspot-on-ubuntu-debian-fedora-centos-arch/&#34;&gt;这个教程&lt;/a&gt;里的知识。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;set -x
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;set -e
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;## Source: https://computingforgeeks.com/create-wi-fi-hotspot-on-ubuntu-debian-fedora-centos-arch/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;## 记得将IFNAME替换成你的Wi-Fi network interface的名字: `ip link show`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;IFNAME&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;wlp4s0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CON_NAME&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;MyHotSpot&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;PASSWORD&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;77fdda98a6feaf6cc9&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nmcli con add type wifi ifname &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$IFNAME&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; con-name &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$CON_NAME&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; autoconnect yes ssid &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$CON_NAME&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nmcli con modify &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$CON_NAME&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; 802-11-wireless.mode ap 802-11-wireless.band bg ipv4.method shared
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nmcli con modify &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$CON_NAME&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; wifi-sec.key-mgmt wpa-psk
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nmcli con modify myhotspot wifi-sec.psk &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$PASSWORD&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nmcli connection show &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$CON_NAME&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nmcli con up &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$CON_NAME&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nmcli connection show &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$CON_NAME&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;在观察DNS和初始的QUIC流量时，我们发现以下过虑条件很好用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;quic.long.packet_type == 0 or udp.port == 53
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;测量当前的审查并评估潜在的审查成本&#34;&gt;测量当前的审查并评估潜在的审查成本&lt;/h2&gt;
&lt;p&gt;在这一节中，我们将测量中国当前对于Pirvate Relay的审查，并讨论审查者采用常用审查方法检测并封锁Private Relay的成本。&lt;/p&gt;
&lt;h3 id=&#34;dns劫持&#34;&gt;DNS劫持&lt;/h3&gt;
&lt;p&gt;前面提到客户端会通过DNS查询得到一个入口节点的IP地址，然后用QUIC协议与其建立连接。因为这些DNS请求（很有可能被故意设计成）是明文的，因此容易受到DNS劫持攻击。事实上，苹果公司自己就&lt;a href=&#34;https://developer.apple.com/support/prepare-your-network-for-icloud-private-relay&#34;&gt;建议&lt;/a&gt;使用DNS劫持来“最快速和稳定”地封锁Private Relay：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The fastest and most reliable way to alert users is to return a negative answer from your network’s DNS resolver, preventing DNS resolution for the following hostnames used by Private Relay traffic. Avoid causing DNS resolution timeouts or silently dropping IP packets sent to the Private Relay server, as this can lead to delays on client devices.&lt;/p&gt;
&lt;p&gt;mask.icloud.com&lt;/p&gt;
&lt;p&gt;mask-h2.icloud.com&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我们观察到客户端有两种获得入口节点地址的方式。第一种方式是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;客户端首先发送两个DNS查询，查询类型为&lt;code&gt;A&lt;/code&gt;和&lt;code&gt;HTTPS&lt;/code&gt;，查询的域名为&lt;code&gt;mask.icloud.com&lt;/code&gt;。DNS应答包含一个&lt;code&gt;CNAME&lt;/code&gt;答案&lt;code&gt;mask.apple-dns.net&lt;/code&gt;，以及多个&lt;code&gt;A&lt;/code&gt;答案。&lt;/li&gt;
&lt;li&gt;客户端选择DNS应答包中的第一个答案，即那个&lt;code&gt;CNAME&lt;/code&gt;答案。客户端因此需要再次发送两个DNS查询，查询类型还是&lt;code&gt;A&lt;/code&gt;和&lt;code&gt;HTTPS&lt;/code&gt;，查询的域名为&lt;code&gt;mask.apple-dns.net&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;客户端接着还会选取DNS应答包中的第一个答案，这次是&lt;code&gt;A&lt;/code&gt;答案。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;第二种方式是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;客户端首先发送两个DNS请求，查询类型为&lt;code&gt;A&lt;/code&gt;和&lt;code&gt;HTTPS&lt;/code&gt;，查询的域名为&lt;code&gt;mask-api.icloud.com&lt;/code&gt;。DNS应答包含一个&lt;code&gt;CNAME&lt;/code&gt;答案&lt;code&gt;mask-api.fe.apple-dns.net&lt;/code&gt;，以及多个&lt;code&gt;A&lt;/code&gt;答案。&lt;/li&gt;
&lt;li&gt;客户端选择DNS应答包中的第一个答案，即那个&lt;code&gt;CNAME&lt;/code&gt;答案。客户端因此需要再次发送两个DNS查询，查询类型还是&lt;code&gt;A&lt;/code&gt;和&lt;code&gt;HTTPS&lt;/code&gt;，查询的域名为&lt;code&gt;mask-api.fe.apple-dns.net&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;客户端接着还会选取DNS应答包中的第一个答案，这次是&lt;code&gt;A&lt;/code&gt;答案。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;我们没有观察到客户端会查询&lt;a href=&#34;https://developer.apple.com/support/prepare-your-network-for-icloud-private-relay&#34;&gt;文档&lt;/a&gt;中记录的&lt;code&gt;mask-h2.icloud.com&lt;/code&gt;。这篇&lt;a href=&#34;https://isc.sans.edu/forums/diary/A+First+Look+at+Apples+iOS+15+Private+Relay+feature/27858/&#34;&gt;报告&lt;/a&gt;也提到没有观察到包含&lt;code&gt;mask-h2.icloud.com&lt;/code&gt;的DNS查询。&lt;/p&gt;
&lt;h4 id=&#34;测量中国当下的dns审查&#34;&gt;测量中国当下的DNS审查&lt;/h4&gt;
&lt;p&gt;虽然污染上述提到的域名对GFW来说小菜一碟，但是我们还并未观察到GFW真的采取审查。具体而言，我们从中国发送上述DNS请求到国外，也从国外发送请求回中国，来让GFW的设备看到我们的请求。你即使不在中国，也同样可以利用GFW不区分DNS来源于国内或国外的特性，来测量DNS污染。需要注意的是，&lt;code&gt;dig&lt;/code&gt;命令尚不支持发送&lt;a href=&#34;https://www.ietf.org/archive/id/draft-ietf-dnsop-svcb-https-07.html#name-the-svcb-record-type&#34;&gt;&lt;code&gt;HTTPS类型&lt;/code&gt;&lt;/a&gt;的DNS请求。如果使用&lt;code&gt;dig @1.1.1.1 mask.icloud.com -t HTTPS +timeout=2&lt;/code&gt;这样的请求，它会&lt;strong&gt;自动回落到发送&lt;code&gt;A&lt;/code&gt;类型请求&lt;/strong&gt;。因为回落警告不足够明显，大家要当心回落带来的测量失误。&lt;/p&gt;
&lt;p&gt;我们因此在从国外发DNS请求往国内时，使用了以下脚本，调用Scapy发送DNS请求。这里我们用到的&lt;code&gt;104.193.82.0&lt;/code&gt;是一个中国的IP地址，而且这个中国的IP地址没有运行DNS服务，这样如果我们收到了任何DNS答复，那么一定是GFW或其他中间人伪造的。我们因此也就可以判断GFW是否审查了相应的域名。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python3&#34; data-lang=&#34;python3&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/usr/bin/env python3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 这个脚本只负责发送DNS请求，不负责接收DNS应答。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 如果想观察DNS应答，请使用tcpdump或者wireshark。比如：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# sudo tcpdump host 104.193.82.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; scapy.all &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# https://www.ietf.org/archive/id/draft-ietf-dnsop-svcb-https-07.html#name-the-svcb-record-type&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TYPE_HTTPS&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;65&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CHINESE_IP&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;104.193.82.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; qname &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mask.icloud.com&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mask-api.icloud.com&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mask.apple-dns.net&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mask-api.fe.apple-dns.net&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mask-h2.icloud.com&amp;#34;&lt;/span&gt;]:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; qtype &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; [TYPE_HTTPS, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;A&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;AAAA&amp;#34;&lt;/span&gt;]:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        send(IP(dst&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;CHINESE_IP)&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;UDP(dport&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;53&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;DNS(rd&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;, qd&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;DNSQR(qname&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;qname, qtype&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;qtype)))
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;sni过滤&#34;&gt;SNI过滤&lt;/h3&gt;
&lt;p&gt;正如&lt;a href=&#34;https://stackoverflow.com/a/65400340&#34;&gt;这个答案&lt;/a&gt;所介绍的，虽然QUIC中的Clienthello消息是加密的，但&lt;a href=&#34;https://datatracker.ietf.org/doc/html/draft-ietf-quic-tls-33#section-5.2&#34;&gt;密钥是由固定的salt和明文的Destination Connection ID导出的&lt;/a&gt;。QUIC的初始包因此也就可以被很容易的解密。事实上，新版的&lt;code&gt;Wireshark&lt;/code&gt;就可以自动地解密客户端发出的QUIC初始包。&lt;/p&gt;
&lt;p&gt;审查者也因此可以加密QUIC初始包并检查其中的SNI值是否为&lt;code&gt;mask.icloud.com&lt;/code&gt;。&lt;/p&gt;
&lt;h4 id=&#34;测量当下中国的quic-sni审查&#34;&gt;测量当下中国的(QUIC-)SNI审查&lt;/h4&gt;
&lt;p&gt;我们测试的方法是抓取客户端发送的初始包，然后在中国的服务器上重放。我们观察到服务器会回以QUIC握手包。我们还没有观察到审查者阻断这一过程。&lt;/p&gt;
&lt;p&gt;举例来讲我们首先将以下十六进制流存入名为&lt;code&gt;quic.hex&lt;/code&gt;的文件:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;c80000000108bec8eac6d55fe88a08e87fe5dfa21d247700452c6a2a855275bb191ffe213c2ad1e07467f9ed24956172c4bee69e8446049a94fbae38973cf11ce80cc1379237e4a0f610ae2408ac096635b3978dcf21b4c81d96a2e53d9a9b04dc234341869f7ea85dc99e2ea028827257c4b6993a29ae07e9368c22426d1780abcf8c4b5ab8b2e3ba4de878306ecf4a4e5851c2168b8412f9a55fa5971520914f13c4a86106161e19bfa1eff9c08a9b566e1656ebceeb7184d60a0328203e5e66fc16ad8452343dee5e2ad22ba0ef80b978ba62c64ac75826b79d119c5a7bf9859655d79116e3f4069e87269bab7f9d0373d8e98e4c4891eaf621ce073c61f59eeddd828c96d785ff3155083f5ac93263e5496a6a38a2a2e0bbf64041e76a500bf4748143f2b8705c3732dc12b218f428eeadd02c50e71c5ffaa1ca14c483ac44c75d10e98d38ddaa38f38c0ba7af20108967541586c51bccd2765781b123b4a91fed0f32f0b11bfc4ff5beaccb023f7d977787a0d09942f5159da772b9ca5a7c512a8644bb399858cc6ee2a5d5c099be6780a619cbadc6407db320d34179bf1ff94401ef0e134d0d8ae705a468b5dcd7b9c078e72ddba146e947dca7d4968b3fc892e425ef60bec05df120b20f26f340ed134b064b4fddd194fee666ff49c943b82f812c6f57daaa70ef5aa7b511e8d9501a447783a4e7eee709499161c4055941d516f16bc4ed114d90f6d49c1a297484749fa99f84eb309c2743018eeebb71c6050061e4899b94ecc746fb98174ce383a9d250f61d3aca4db9249122763ca03c41a67b616e722f5171e34a610aeb9cfb6c74f8bdd549d1b0fbd4a766dd66dc355de7f55d55e029d495687c149d9bac0eba89276a0c8048a97545c08597ea836917ceaebe2e334d9376f3c3dc29ee6df84508558d2c77a1139907aba7735945846e3a8c4675845e01c7e2cb1370b31221f95e1bd0c8e5ecc9e86bf5658859379e3c752e34d6bf9e0e9481cf9ed5df79b9c756cb904603eaab2478b6aaa5740b28213f2716b2b4769e21d9c7e2d62e9708de9644a3de048745f079717e0a565475d0684be9cb13c261f55832953c37078cde29894b2176eab5157e4262dbba7919ef2c66d0cf86d7de93059e9f013e2e82544dc803dea878e184d248065454c65c26d8c67b7778e229390de7560815e6cdc53cce1fb11d62d9b0ecea890b4310ffcf7cd544ca8d6a1b9eed7b92a93fd6c00d0a2338f66ad77c9220c69437b3651b18899c68a8e59f12dc2f014d70a6ca5b4aa419516fde01079a1f76c3198db4f6229641e5e89b1b6aa9797c27b55f439e98858f9d3eef1ffff6f5e52e9e94468d21e8ab965abb864836be07016fdbb63a24e954b863a98d590033bd163df6a7740d256a0bbaa910e45a8f40877b6b84fd2d8f57604d236e4351bd228dc707fe3538440b2796dbab58183f306912c6104d13ea96c649fd338994b4a2d5ecbfdd66b69b5245763371cc38c92774723f546a27519db4660f5dc6312f5f56edad2dcb77bd3034c8a4a084ee7e57016fea8a5fcb114ee5ae97d55b177dd8b1ccd0508fb6baee6244ccedf2705ba35a760b944acb4b3e0394b5add44e851d18e0400d99b4910cd4cb63311727f4a98289ce4ee960c506b72243fde14cf5d3185cc4b598f080faf9ebc75847dc7126bb90c47368c5408898e7bdaf9cde4f04299043600dcdf850c306c737d4be37c316eed63718804e9972f6c95d79771ada173293b06037f1282f4e79f8116e3d4c5fed2ec6db335faf2b0481b3aa3a0192f9ff3fea35ae1bafe71bbcd07a301fe11638a180b6b202c29dea331ac6a2527587a82175cd7b96033b165b88580e83df7759ebe6586d68d4efe6028403d5d0d700e967ca4908bbd8e4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;我们再将其发送到入口节点，并得到了回应:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;xxd -r -p quic.hex | nc -u mask.icloud.com &lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt; -v
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;注意从生成这个十六进制荷载的大约两天后，发送它已经不能再能得到入口节点的回应了。如果重放刚生成的初始包，应该还可以触发入口节点的回应。&lt;/p&gt;
&lt;h3 id=&#34;quic-tls指纹过滤&#34;&gt;(Quic-)TLS指纹过滤&lt;/h3&gt;
&lt;p&gt;如上所述，QUIC初始包可以被很容易的解密得到ClientHello。这就给了审查者采用&lt;a href=&#34;https://github.com/net4people/bbs/issues/54&#34;&gt;基于TLS指纹的审查&lt;/a&gt;的可乘之机。&lt;/p&gt;
&lt;p&gt;我们对Private Relay的TLS指纹的观察于&lt;a href=&#34;https://isc.sans.edu/forums/diary/A+First+Look+at+Apples+iOS+15+Private+Relay+feature/27858/&#34;&gt;这篇报告&lt;/a&gt;基本一致：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The connection to the relay uses QUIC to port 443/UDP and TLS 1.3. The clienthello includes the server name extension and the server name &amp;ldquo;mask.icloud.com.&amp;rdquo; Only 3 cipher suites are offered (TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256). The server ends up selecting the AES128 suite. Application Layer Protocol Negotiation (ALPN) is also used, with unsurprisingly HTTP/3 being the only option.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;除了引文中提到的3种密码套件外，我们还观察到了第四种Grease ciphersuit (&lt;code&gt;0x2a2a&lt;/code&gt;)。&lt;/p&gt;
&lt;p&gt;作为旁注，我们还观察到了ClientHello中包含了两个GREASE extensions：&lt;a href=&#34;https://www.rfc-editor.org/rfc/rfc8701.html#section-2-3.1&#34;&gt;0xAAAA&lt;/a&gt;和&lt;a href=&#34;https://www.rfc-editor.org/rfc/rfc8701.html#section-2-3.4&#34;&gt;0X3A3A&lt;/a&gt;。他们不太可能是被用于验证相关的目的（如果真的是被用作验证目的，那就是很不服合标准的做法）。GREASE extensions其实并不罕见；浏览器也会发送它们。正如&lt;a href=&#34;https://tools.ietf.org/id/draft-ietf-tls-grease-04.html&#34;&gt;这篇文档&lt;/a&gt;所解释的，它们被用来“保证TLS实现可以正确的处理不认识的值”。换而言之，因为GREASE的存在，TLS实现就不能假设只会收到和处理某些特定的值了。&lt;/p&gt;
&lt;p&gt;我们很好奇&lt;a href=&#34;https://tlsfingerprint.io/&#34;&gt;tlsfingerprint.io&lt;/a&gt;是否能告诉我们这些（或者任何）(QUIC) ClientHello的指纹有多特殊？(&lt;a href=&#34;https://github.com/sergeyfrolov&#34;&gt;@sergeyfrolov&lt;/a&gt;, &lt;a href=&#34;https://github.com/ewust&#34;&gt;@ewust&lt;/a&gt;)&lt;/p&gt;
&lt;h3 id=&#34;主动探测入口节点&#34;&gt;主动探测入口节点&lt;/h3&gt;
&lt;p&gt;我们发现在大约两天之内重放QUIC初始包到入口节点，入口节点都会回以发送握手包。我们还尝试使用&lt;a href=&#34;https://github.com/lucas-clemente/quic-go&#34;&gt;quic-go&lt;/a&gt;和&lt;a href=&#34;https://github.com/lucas-clemente/quic-go&#34;&gt;&lt;code&gt;curl --http3&lt;/code&gt;&lt;/a&gt;对入口节点进行典型的Quic握手，SNI为&lt;code&gt;mask.apple.com&lt;/code&gt;。但入口节点并不回应。我们怀疑这与合法客户端发送的ClientHello的&lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc7301&#34;&gt;ALPN extension&lt;/a&gt;有关。但入口节点是否回应也可能还与其他的验证信息有关。&lt;/p&gt;
&lt;h3 id=&#34;封锁入口节点的ip地址&#34;&gt;封锁入口节点的IP地址&lt;/h3&gt;
&lt;p&gt;如前所述，从中国发送的QUIC握手包可以得到入口节点的回应。这说明，至少我们测量的IP地址还没有被封锁。&lt;/p&gt;
&lt;p&gt;但是仍有很多方法封锁入口节点的IP地址，比如审查者可以：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;封锁所有解析&lt;code&gt;mask.icloud.com&lt;/code&gt;，&lt;code&gt;mask-api.icloud.com&lt;/code&gt;或 &lt;code&gt;mask-h2.icloud.com&lt;/code&gt;时返回的IP地址。&lt;/li&gt;
&lt;li&gt;观察QUIC链接中SNI为&lt;code&gt;mask.apple.com&lt;/code&gt;的服务器IP地址，然后用主动探测确认入口节点。确认后封锁相应IP地址。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;基于出口节点的ip地址歧视用户&#34;&gt;基于出口节点的IP地址歧视用户&lt;/h3&gt;
&lt;p&gt;如Tor出口节点一样，苹果也有一个实时更新的&lt;a href=&#34;https://mask-api.icloud.com/egress-ip-ranges.csv&#34;&gt;出口节点IP段列表&lt;/a&gt; (&lt;a href=&#34;https://web.archive.org/web/20210921182354/https://mask-api.icloud.com/egress-ip-ranges.csv&#34;&gt;存档&lt;/a&gt;)。这个列表可以方便网站基于出口节点的IP地址来歧视Private Relay用户，正如&lt;a href=&#34;https://www.icir.org/vern/papers/tor-differential.NDSS16.pdf&#34;&gt;Tor用户所遭受的歧视一样&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;还未解决的问题&#34;&gt;还未解决的问题&lt;/h2&gt;
&lt;h3 id=&#34;苹果是如何实现自我审查的&#34;&gt;苹果是如何实现自我审查的&lt;/h3&gt;
&lt;p&gt;除了上述的种种审查方式外，苹果公司还通过自我审查的方式阻止在本就身处受到严格审查地区的用户使用Private Relay。因此了解并绕过苹果公司的自我审查尤为重要。&lt;/p&gt;
&lt;p&gt;具体来讲，苹果公司&lt;a href=&#34;https://support.apple.com/en-us/HT212614&#34;&gt;承认&lt;/a&gt;：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Private Relay isn&amp;rsquo;t available in all countries and regions. If you travel somewhere Private Relay isn&amp;rsquo;t available, it will automatically turn off and will turn on again when you re-enter a country or region that supports it. Private Relay will notify you when it&amp;rsquo;s unavailable and when it&amp;rsquo;s active again.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;根据相关的&lt;a href=&#34;https://www.macrumors.com/2021/09/17/icloud-private-relay-disabled-russia/&#34;&gt;新闻&lt;/a&gt;&lt;a href=&#34;https://www.reuters.com/world/china/apples-new-private-relay-feature-will-not-be-available-china-2021-06-07/&#34;&gt;报道&lt;/a&gt;， 苹果在以下地区禁用了Private Relay：中国、白俄罗斯、哥伦比亚、埃及、哈萨克斯坦、沙特阿拉伯、南非、土库曼斯坦、乌干达、菲律宾和俄罗斯。&lt;/p&gt;
&lt;p&gt;苹果自我审查的实现机制还有待研究。我们的测试显示，入口节点似乎并不基于用户IP地址来拒绝服务。但是我们仍不清楚苹果公司是如何判断用户是否身处被禁止使用Private Relay的国家。&lt;/p&gt;
&lt;p&gt;一项&lt;a href=&#34;https://qust.me/post/PrivateRelay/&#34;&gt;报告&lt;/a&gt;(&lt;a href=&#34;https://web.archive.org/web/20210707024209/https://qust.me/post/PrivateRelay/&#34;&gt;存档&lt;/a&gt;)声称苹果公司是根据用户访问特定的一组苹果服务器时的IP地址，来判断用户位置的；使用境外代理访问这组苹果服务器即可激活Private Relay功能。&lt;/p&gt;
&lt;p&gt;而另一个用户&lt;a href=&#34;https://v2ex.com/t/803142&#34;&gt;报告&lt;/a&gt;(&lt;a href=&#34;https://web.archive.org/web/20210924192532/https://v2ex.com/t/803142&#34;&gt;存档&lt;/a&gt;)只需将iCloud的地区设置为非禁用地区，就可以启用Private Relay了。但同一个帖子中的另一用户声称使用了非禁用地区iCloud但仍然无法开启Private Relay。我们欢迎中国的用户分享你的经验。&lt;/p&gt;
&lt;p&gt;另外作为一点背景介绍，对于中国的iOS翻墙用户，拥有一个非中国iCloud账户并不罕见。这是由中国的App Store对翻墙软件的严格审查导致的。&lt;/p&gt;
&lt;h3 id=&#34;苹果是如何验证private-relay用户的&#34;&gt;苹果是如何验证Private Relay用户的？&lt;/h3&gt;
&lt;p&gt;苹果公司&lt;a href=&#34;https://developer.apple.com/support/prepare-your-network-for-icloud-private-relay&#34;&gt;声称&lt;/a&gt;：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Private Relay validates that the client connecting is an iPhone, iPad, or Mac, so you can be assured that connections are coming from an Apple device.&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;All connections that use Private Relay validate that the client is an iPhone, iPad, or Mac and that the customer has a valid iCloud+ subscription. Private Relay enforces several anti-abuse and anti-fraud techniques, such as single-use authentication tokens and rate-limiting.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我们好奇苹果是如何验证Private Relay用户的。&lt;/p&gt;
&lt;h3 id=&#34;苹果的private-relay是如何加密解密的&#34;&gt;苹果的Private Relay是如何加密解密的？&lt;/h3&gt;
&lt;p&gt;前面我们介绍Private Relay采用两跳结构。除此之外我们并不了解更多的技术细节。比如说，这两跳是否采用了如&lt;a href=&#34;https://en.wikipedia.org/wiki/Onion_routing&#34;&gt;onion-routing&lt;/a&gt;的结构？Amir Houmansadr&lt;a href=&#34;https://gfw.report/blog/private_relay_privacy/en/#our-immediate-questions-about-private-relays&#34;&gt;表达了对Private Relay协议不透明的关切&lt;/a&gt;。Private Relay的协议和工作原理因此有待更多的调查。&lt;/p&gt;
&lt;h2 id=&#34;致谢&#34;&gt;致谢&lt;/h2&gt;
&lt;p&gt;我们感谢一位把iPhone手机借我们测试的人。&lt;/p&gt;
&lt;h2 id=&#34;联系我们&#34;&gt;联系我们&lt;/h2&gt;
&lt;p&gt;这篇报告首发于&lt;a href=&#34;https://github.com/net4people/bbs/issues/87&#34;&gt;Net4People&lt;/a&gt;。我们还在&lt;a href=&#34;https://gfw.report/blog/private_relay_censorship/zh/&#34;&gt;GFW Report&lt;/a&gt;和&lt;a href=&#34;https://ntc.party/t/evaluating-the-censorship-resistance-of-apples-icloud-private-relay/1346/2&#34;&gt;ntc.party&lt;/a&gt;同步更新了这篇报告。&lt;/p&gt;
&lt;p&gt;我们鼓励您公开地或私下地分享与报告中的发现和假设相关的问题、评论或证据。我们私下的联系方式可见&lt;a href=&#34;https://gfw.report&#34;&gt;GFW Report&lt;/a&gt;的页脚。&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>A practical guide to defend against the GFW&#39;s latest active probing</title>
        <link>https://gfw.report/blog/ss_advise/en/</link>
        <pubDate>Tue, 26 Jan 2021 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/ss_advise/en/</guid>
        
        <description>&lt;p&gt;In our recent IMC&#39;20 work (&lt;a href=&#34;https://gfw.report/publications/imc20/data/paper/shadowsocks.pdf&#34;&gt;paper&lt;/a&gt;, &lt;a href=&#34;https://gfw.report/talks/imc20/en/&#34;&gt;talk&lt;/a&gt;) we provided insight into the combination of &lt;em&gt;traffic analysis&lt;/em&gt; and &lt;em&gt;active probing&lt;/em&gt; techniques that the Great Firewall uses to detect and block Shadowsocks servers.&lt;/p&gt;
&lt;p&gt;In this short post, we provide practical suggestions for non-technical users and circumvention tool developers to prevent their circumvention servers from being detected and blocked.
We also introduce the mitigation to &lt;a href=&#34;https://www.usenix.org/system/files/sec21summer_len.pdf#page=13&#34;&gt;partitioning oracle attacks&lt;/a&gt; newly demonstrated by Len et al..
If your Shadowsocks servers still get blocked, even when you follow the instructions below, please &lt;a href=&#34;https://gfw.report/&#34;&gt;report the block to GFW Report&lt;/a&gt; and/or the corresponding developers.&lt;/p&gt;
&lt;h2 id=&#34;for-users&#34;&gt;For users&lt;/h2&gt;
&lt;p&gt;According to our own testing, and reports from developers, with proper configurations, there are at least two Shadowsocks implementations whose latest releases are resistant to the GFW&amp;rsquo;s active probes: &lt;em&gt;Shadowsocks-libev&lt;/em&gt; and &lt;em&gt;OutlineVPN&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id=&#34;advice-on-using-shadowsocks-libev&#34;&gt;Advice on using Shadowsocks-libev&lt;/h3&gt;
&lt;p&gt;If you decide to use Shadowsocks-libev, we strongly encourage you to follow this &lt;a href=&#34;https://gfw.report/blog/ss_tutorial/en/&#34;&gt;tutorial on how to install, configure and maintain a Shadowsocks-libev server&lt;/a&gt;. We commit to make that tutorial up-to-date and provide latest best practices to defend against emerging attacks against Shadowsocks.&lt;/p&gt;
&lt;p&gt;If you already have a Shadowsocks-libev server installed, check the rules below to see if your servers have been properly configured.&lt;/p&gt;
&lt;p&gt;As of January 2021, to prevent your &lt;em&gt;Shadowsocks-libev&lt;/em&gt; server from being blocked, you have to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ensure your server version is &lt;code&gt;v3.3.1&lt;/code&gt; or above. You can check the server version with the command &lt;code&gt;ss-server -h&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Use &lt;a href=&#34;https://shadowsocks.org/en/spec/AEAD-Ciphers.html&#34;&gt;&lt;em&gt;AEAD ciphers&lt;/em&gt;&lt;/a&gt;, &lt;strong&gt;not&lt;/strong&gt; &lt;em&gt;stream ciphers&lt;/em&gt;. In other words, choose one of the following encryption methods: &lt;code&gt;chacha20-ietf-poly1305&lt;/code&gt; (recommended), &lt;code&gt;aes-256-gcm&lt;/code&gt;, &lt;code&gt;aes-192-gcm&lt;/code&gt; or &lt;code&gt;aes-128-gcm&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To mitigate the &lt;a href=&#34;https://www.usenix.org/system/files/sec21summer_len.pdf#page=13&#34;&gt;partitioning oracle attacks against Shadowsocks servers&lt;/a&gt;, you need to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;use a long random password, which can be generated from terminal using: &lt;code&gt;openssl rand -base64 16&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;and disable UDP mode.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Note: there is no special requirement for the client. Any client compatible with the server is okay.&lt;/p&gt;
&lt;h3 id=&#34;advice-on-using-outlinevpn&#34;&gt;Advice on using OutlineVPN&lt;/h3&gt;
&lt;p&gt;To prevent your &lt;a href=&#34;https://getoutline.org&#34;&gt;OutlineVPN&lt;/a&gt; server from being blocked, you have to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Use the latest client from its &lt;a href=&#34;https://getoutline.org/&#34;&gt;official website&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Use the latest server from its &lt;a href=&#34;https://getoutline.org/&#34;&gt;official website&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Note that:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The Outline already generates a long, random secret for you, so you don&amp;rsquo;t have to do it manually like what you have to do for a Shadowsocks-libev server.&lt;/li&gt;
&lt;li&gt;The Outline server can automatically update itself, so you don&amp;rsquo;t have to manually upgrade it.&lt;/li&gt;
&lt;li&gt;The Outline exclusively uses &lt;code&gt;chacha20-ietf-poly1305&lt;/code&gt; (an AEAD cipher) as the encryption method, so you don&amp;rsquo;t have to select encryption methods manually.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;for-circumvention-tool-developers&#34;&gt;For circumvention tool developers&lt;/h2&gt;
&lt;p&gt;Below, we introduce our findings on the latest capabilities of the GFW; along with our suggestions for making circumvention tools more resistant to censorship. These suggestions are useful not only for Shadowsocks, but for other circumvention tools.
We encourage you to participate in this discussion and we welcome any thoughts, comments, questions or concerns.&lt;/p&gt;
&lt;h3 id=&#34;proper-authentication&#34;&gt;Proper authentication&lt;/h3&gt;
&lt;p&gt;First of all, we strongly encourage circumvention tool developers to &lt;strong&gt;completely&lt;/strong&gt; deprecate unauthenticated cryptographic constructions. Confidentiality alone is not enough.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For newly developed circumvention tools, unauthenticated cryptographic constructions are unacceptable.&lt;/li&gt;
&lt;li&gt;For existing circumvention tools, developers should bravely &lt;strong&gt;remove&lt;/strong&gt; all code related to unauthenticated cryptographic constructions, even at the cost of incompatibility.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Our seemingly bold suggestion comes for a good reason.
As introduced in &lt;a href=&#34;https://gfw.report/publications/imc20/data/paper/shadowsocks.pdf#page=7&#34;&gt;our paper&lt;/a&gt;, certain types of the GFW&amp;rsquo;s probes exploit the ciphertext malleability of Shadowsocks&amp;rsquo;s stream ciphers. This is not the first vulnerability caused by unauthenticated cryptographic constructions. In fact, the lack of proper authentication has been the root cause of many vulnerabilities in Shadowsocks and other circumvention tools.&lt;/p&gt;
&lt;p&gt;In August 2015, BreakWa11 &lt;a href=&#34;https://web.archive.org/web/20160829052958/https://github.com/breakwa11/shadowsocks-rss/issues/38&#34;&gt;discovered&lt;/a&gt; an active probing vulnerability in Shadowsocks stream ciphers, resulting from their lack of integrity protection (see &lt;a href=&#34;https://groups.google.com/d/msg/traffic-obf/CWO0peBJLGc/Py-clLSTBwAJ&#34;&gt;English summary&lt;/a&gt;).
In 2020, similar vulnerabilities has also been &lt;a href=&#34;https://github.com/v2ray/v2ray-core/issues/2523&#34;&gt;discovered&lt;/a&gt; in other circumvention tools like V2Ray (see the &lt;a href=&#34;https://gfw.report/blog/v2ray_weaknesses/en/&#34;&gt;summary&lt;/a&gt;).
Shadowsocks developers &lt;a href=&#34;https://github.com/shadowsocks/shadowsocks-libev/compare/v2.5.4...v2.5.5&#34;&gt;mitigated&lt;/a&gt; the vulnerability by having the server not immediately terminate a connection when a target specification contains an unknown address type.&lt;/p&gt;
&lt;p&gt;Shadowsocks developers attempted to further mitigate the problem by introducing a &lt;code&gt;one time auth&lt;/code&gt; mode, in which each chunk of data would carry its own authenticator.
But a lack of integrity protection in chunk length prefixes led to another active probing &lt;a href=&#34;https://web.archive.org/web/20191002190325/https://printempw.github.io/why-do-shadowsocks-deprecate-ota/&#34;&gt;vulnerability&lt;/a&gt; (see &lt;a href=&#34;https://groups.google.com/d/msg/traffic-obf/CWO0peBJLGc/Py-clLSTBwAJ&#34;&gt;English summary&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;In February 2020, Zhejiang Peng &lt;a href=&#34;https://github.com/edwardz246003/shadowsocks&#34;&gt;disclosed&lt;/a&gt; a devastating vulnerability in Shadowsocks stream ciphers (see &lt;a href=&#34;https://github.com/net4people/bbs/issues/24&#34;&gt;English summary&lt;/a&gt;).
Using the Shadowsocks server as a decryption oracle, an attacker, without knowledge of the shared master password, can get full decryption of recorded Shadowsocks connections.&lt;/p&gt;
&lt;p&gt;As early as February 2017, AEAD ciphers had became part of the Shadowsocks protocol specification. While the authentication problem should have been fixed by that time, many servers are still using the vulnerable and deprecated unauthenticated stream ciphers in 2021.
This phenomenon indicates that, in practice, many users cannot properly choose the right ciphers to use, possibly misguided by out-dated tutorials. We therefore encourage developers to help users make the right choice by completely removing stream ciphers from Shadowsocks.&lt;/p&gt;
&lt;h3 id=&#34;replay-filtering-based-on-both-nonces-and-timing&#34;&gt;Replay filtering based on both nonces and timing&lt;/h3&gt;
&lt;p&gt;We suggest that circumvention tool developers deploy a replay filter that takes into account both nonces and timing. Since a timing-based replay filter may require a fundamental changes to existing protocols, developers should at least deploy a nonce-based replay filter and:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Either advise users to change passwords after each replay filter initialization; or&lt;/li&gt;
&lt;li&gt;Develop a mechanism to let the replay filter remember nonces even after a restart.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These suggestions are based on the following research findings and rationale.
As introduced in &lt;a href=&#34;https://gfw.report/publications/imc20/data/paper/shadowsocks.pdf#page=5&#34;&gt;section 3.5 of the paper&lt;/a&gt;, the GFW can replay a legitimate connection immediately; or it may remember a legitimate connection but not replay it until three weeks later. Therefore, a realistic adversary model of active probing should permit the censor to perform replay attacks after an arbitrarily long delay.&lt;/p&gt;
&lt;p&gt;Such a model reveals an asymmetry between attack and defense for purely nonce-based replay defense mechanisms. While it does not cost much in terms of resources for the GFW to record &lt;strong&gt;a few&lt;/strong&gt; legitimate payloads and replay them after a fairly long delay, it is costly and complicated for Shadowsocks servers to remember the nonces of &lt;strong&gt;all&lt;/strong&gt; authenticated connections forever, or until the master password is changed. The Shadowsocks server must remember those nonces even after being restarted; otherwise, the replay filter will be ineffective against replays that span a restart.&lt;/p&gt;
&lt;p&gt;Fortunately, this unfair game can be inverted by the addition of a timing-based defense mechanism: the server only responds to authenticated connections that are not replays and whose timestamp is within an expiration time, similar to &lt;a href=&#34;https://gfw.report/blog/v2ray_weaknesses/en/&#34;&gt;what VMess servers do&lt;/a&gt;. This way, the server does not need to remember nonces forever, but only for a limited time.&lt;/p&gt;
&lt;p&gt;We also want to emphasize that a replay filter is required even in circumvention tools that use a random emphermeral open port per session.
This is because the GFW may send a replay immediately after seeing the first data packet of a legitimate connection, before the session and the port are closed.&lt;/p&gt;
&lt;h3 id=&#34;being-consistent-in-servers-reactions&#34;&gt;Being consistent in servers&amp;rsquo; reactions&lt;/h3&gt;
&lt;p&gt;We suggest that developers make sure their circumvention tools react consistently not only in normal operation, but also when an error occurs. Ideally, as suggested by &lt;a href=&#34;https://censorbib.nymity.ch/pdf/Frolov2020a.pdf#page=12&#34;&gt;Frolov et al.&lt;/a&gt;, a server should &amp;ldquo;read forever&amp;rdquo; on error. The reason for these suggestions is that censors may intentionally trigger protocol edge cases in an attempt to fingerprint servers.&lt;/p&gt;
&lt;p&gt;In addition to the inconsistencies we found in Shadowsocks-libev and OutlineVPN, &lt;a href=&#34;https://censorbib.nymity.ch/pdf/Frolov2020a.pdf#page=11&#34;&gt;Frolov et al.&lt;/a&gt; demonstrated that various proxy servers, including Shadowsocks-python and OutlineVPN, can be identified using TCP flags and timing metadata after the servers close a connection. studentmain &lt;a href=&#34;https://github.com/net4people/bbs/issues/22#issuecomment-744704701&#34;&gt;reported&lt;/a&gt; that, as of December 2020, various Shadowsocks implementations still have similar problems.&lt;/p&gt;
&lt;p&gt;Frolov et al. suggest that proxy servers should read forever when errors occur, rather than terminating the connection. Doing so not only avoids revealing a specific timeout value, but also lets the server close the connection with consistent TCP flags in the non-error case.&lt;/p&gt;
&lt;p&gt;Furthermore, reading forever will not make fingerprints of your circumvention tools more unique, as Frolov et al. found that &lt;a href=&#34;https://censorbib.nymity.ch/pdf/Frolov2020a.pdf#page=12&#34;&gt;a large number of endpoints exhibits such &amp;ldquo;infinite timeout&amp;rdquo; behavior&lt;/a&gt;. As &lt;a href=&#34;https://github.com/net4people/bbs/issues/26#issuecomment-599712288&#34;&gt;surveyed&lt;/a&gt; by David Fifield, various popular circumvention tools have employed the &amp;ldquo;read forever&amp;rdquo; strategies, including OSSH, obfs4, Outline and Lampshade.&lt;/p&gt;
&lt;h3 id=&#34;enforce-using-strong-passwords&#34;&gt;Enforce using strong passwords&lt;/h3&gt;
&lt;p&gt;In 2020, Len et al. demonstrated &lt;a href=&#34;https://www.usenix.org/system/files/sec21summer_len.pdf#page=13&#34;&gt;partitioning oracle attacks against Shadowsocks servers&lt;/a&gt;. Exploiting the non-committing AEAD schemes used in Shadowsocks, an attacker can recover the password of Shadowsocks servers in a more efficient manner. We thus encourage the developers to enforce users to use strong passwords, possibly by setting entropy requirements for users&amp;rsquo; passwords.&lt;/p&gt;
&lt;h3 id=&#34;probe-your-implementations&#34;&gt;Probe your implementations&lt;/h3&gt;
&lt;p&gt;If you are a developer or contributor of a Shadowsocks implementation other than Shadowsocks-libev or Outline, we encourage you to check if similar vulnerabilities exist in your implementation of Shadowsocks. We have open-sourced the &lt;a href=&#34;https://gfw.report/publications/imc20/data/code/prober_simulator/&#34;&gt;prober simulator&lt;/a&gt; we used in &lt;a href=&#34;https://gfw.report/publications/imc20/data/paper/shadowsocks.pdf#page=8&#34;&gt;Section 5.1 of the paper&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;acknowledgement&#34;&gt;Acknowledgement&lt;/h2&gt;
&lt;p&gt;We want to thank Vinicius Fortuna at Jigsaw, Robert Mitchell and Dan Fidler at APNIC, as well as DuckSoft and Student Main at Qv2ray for offering feedback to a draft of this post.&lt;/p&gt;
&lt;h2 id=&#34;contacts&#34;&gt;Contacts&lt;/h2&gt;
&lt;p&gt;This report appeared first on &lt;a href=&#34;https://gfw.report/blog/ss_advise/en/&#34;&gt;GFW Report&lt;/a&gt;. We also maintain an up-to-date copy of the report on &lt;a href=&#34;&#34;&gt;APNIC blog&lt;/a&gt;, &lt;a href=&#34;https://github.com/net4people/bbs/issues/58&#34;&gt;net4people&lt;/a&gt; and &lt;a href=&#34;https://ntc.party/t/a-practical-guide-to-defend-against-the-gfws-latest-active-probing/847&#34;&gt;ntc.party&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We encourage you to share your comments publicly or privately. Our private contact information can be found at the footer of &lt;a href=&#34;https://gfw.report/&#34;&gt;GFW Report&lt;/a&gt;.&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>How to Deploy a Censorship Resistant Shadowsocks-libev Server</title>
        <link>https://gfw.report/blog/ss_tutorial/en/</link>
        <pubDate>Tue, 26 Jan 2021 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/ss_tutorial/en/</guid>
        
        <description>&lt;p&gt;This tutorial documents how to install, configure and maintain a Shadowsocks-libev server.
One cool thing about this tutorial is,
by following this tutorial, your Shadowsocks-libev servers should be able to defend against various attacks,
including &lt;a href=&#34;https://gfw.report/talks/imc20/en/&#34;&gt;active probing from the GFW&lt;/a&gt; and &lt;a href=&#34;https://www.usenix.org/system/files/sec21summer_len.pdf#page=13&#34;&gt;the partitioning oracle attack&lt;/a&gt;.
Additionally,
we compile a list of commonly asked questions, debunking common myths of Shadowsocks-libev.
As of November 7, 2021, we received a few &lt;a href=&#34;https://github.com/net4people/bbs/issues/69#issuecomment-962666385&#34;&gt;reports&lt;/a&gt; on the blocking of Shadowsocks ports. We thus share a way to setup backup ports to mitigate the inconvenience caused by port blocking.&lt;/p&gt;
&lt;p&gt;Please consider bookmark this page because we commit to make this tutorial up-to-date and provide latest best practices to defend against emerging attacks.
This tutorial is intended to be friendly to non-technical users.
If you get lost at any step of this tutorial,
please &lt;a href=&#34;https://gfw.report&#34;&gt;let us know&lt;/a&gt; and we will improve the documentation.&lt;/p&gt;
&lt;h2 id=&#34;installation&#34;&gt;Installation&lt;/h2&gt;
&lt;h3 id=&#34;install-snap&#34;&gt;Install Snap&lt;/h3&gt;
&lt;p&gt;Snap is the &lt;a href=&#34;https://github.com/shadowsocks/shadowsocks-libev#quick-start&#34;&gt;officially recommended&lt;/a&gt; way to install Shadowsocks-libev.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If your server is running Ubuntu 16.04 LTS or later, Snap is already installed.&lt;/li&gt;
&lt;li&gt;If your server is running some other Linux distributions, simply follow the corresponding &lt;a href=&#34;https://snapcraft.io/core&#34;&gt;installation instructions&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now double check you have both &lt;code&gt;snapd&lt;/code&gt; and Snap &lt;code&gt;core&lt;/code&gt; installed:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo snap install core
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;install-shadowsocks-libev&#34;&gt;Install Shadowsocks-libev&lt;/h3&gt;
&lt;p&gt;Now we install the latest Shadowsocks-libev from the edge channel:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo snap install shadowsocks-libev --edge
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;configuration&#34;&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Below is the recommended configuration for Shadowsocks-libev server:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;server&amp;#34;:[&amp;#34;::0&amp;#34;,&amp;#34;0.0.0.0&amp;#34;],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;server_port&amp;#34;:8388,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;method&amp;#34;:&amp;#34;chacha20-ietf-poly1305&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;password&amp;#34;:&amp;#34;ExamplePassword&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;mode&amp;#34;:&amp;#34;tcp_and_udp&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;fast_open&amp;#34;:false
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You need to replace the password &lt;code&gt;ExamplePassword&lt;/code&gt; with a much stronger one.
A strong password is recommended to mitigate the latest &lt;a href=&#34;https://www.usenix.org/system/files/sec21summer_len.pdf#page=13&#34;&gt;Partitioning Oracle Attacks against Shadowsocks servers&lt;/a&gt;.
A handy way to generate a strong password from your terminal is: &lt;code&gt;openssl rand -base64 16&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;You may also want to change the &lt;code&gt;server_port&lt;/code&gt; from &lt;code&gt;8388&lt;/code&gt; to a different value between &lt;code&gt;1024&lt;/code&gt; and &lt;code&gt;65535&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Now, open the default configuration file:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nano /var/snap/shadowsocks-libev/common/etc/shadowsocks-libev/config.json
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After copying and pasting your settings to the file, type &lt;code&gt;Ctrl + x&lt;/code&gt; to exit.
The text editor will ask &lt;code&gt;&amp;quot;Save modified buffer?&amp;quot;&lt;/code&gt;, and you can type &lt;code&gt;y&lt;/code&gt; and then hit &lt;code&gt;Enter&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The default configuration file path is too long to remember,
and it is not well documented elsewhere yet.
We thus encourage you to bookmark this page so that you can go back to check it whenever you want.&lt;/p&gt;
&lt;h2 id=&#34;firewall&#34;&gt;Firewall&lt;/h2&gt;
&lt;p&gt;We use &lt;code&gt;ufw&lt;/code&gt; to open ports for the Shadowsocks server.&lt;/p&gt;
&lt;p&gt;To install &lt;code&gt;ufw&lt;/code&gt; on a Debian-based server:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt update &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt install -y ufw
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then open ports for &lt;code&gt;ssh&lt;/code&gt; and Shadowsocks-libev.
Note that if you set the &lt;code&gt;server_port&lt;/code&gt; to a value different than &lt;code&gt;8388&lt;/code&gt; in &lt;code&gt;/var/snap/shadowsocks-libev/common/etc/shadowsocks-libev/config.json&lt;/code&gt;, you need to change the value &lt;code&gt;8388&lt;/code&gt; below accordingly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo ufw allow ssh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo ufw allow &lt;span style=&#34;color:#ae81ff&#34;&gt;8388&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now enable &lt;code&gt;ufw&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo ufw enable
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If it prompts &lt;code&gt;Command may disrupt existing ssh connections. Proceed with operation (y|n)?&lt;/code&gt;, type &lt;code&gt;y&lt;/code&gt; and hit &lt;code&gt;Enter&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Finally, run &lt;code&gt;sudo ufw status&lt;/code&gt;, and the output should look like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Status: active
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;To                         Action      From
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--                         ------      ----
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;22/tcp                     ALLOW       Anywhere
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;8388                       ALLOW       Anywhere
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;22/tcp (v6)                ALLOW       Anywhere (v6)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;8388 (v6)                  ALLOW       Anywhere (v6)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;run-shadowsocks-libev&#34;&gt;Run Shadowsocks-libev&lt;/h2&gt;
&lt;p&gt;Now you can start the Shadowsocks-libev:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl start snap.shadowsocks-libev.ss-server-daemon.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Remember to let Shadowsocks-libev auto-start after a server reboot:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl enable snap.shadowsocks-libev.ss-server-daemon.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;maintenance&#34;&gt;Maintenance&lt;/h2&gt;
&lt;h3 id=&#34;check-status-and-log&#34;&gt;Check status and log&lt;/h3&gt;
&lt;p&gt;To check the status of the service:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl status snap.shadowsocks-libev.ss-server-daemon.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you see &lt;code&gt;Active: active (running)&lt;/code&gt; in green, your Shadowsocks-libev server is running properly;
if you see &lt;code&gt;Active: failed&lt;/code&gt; in red, jump to the end of &lt;code&gt;journalctl -u snap.shadowsocks-libev.ss-server-daemon.service&lt;/code&gt; to see what is wrong.&lt;/p&gt;
&lt;h3 id=&#34;reload-configuration-file&#34;&gt;Reload configuration file&lt;/h3&gt;
&lt;p&gt;Whenever you change the configuration file, remember to restart Shadowsocks-libev to load the latest settings:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl restart snap.shadowsocks-libev.ss-server-daemon.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;mitigate-port-blocking-by-having-backup-ports&#34;&gt;Mitigate port blocking by having backup ports&lt;/h3&gt;
&lt;p&gt;As of November 7, 2021, we received a few &lt;a href=&#34;https://github.com/net4people/bbs/issues/69#issuecomment-962666385&#34;&gt;reports&lt;/a&gt; on the blocking of Shadowsocks ports.&lt;/p&gt;
&lt;p&gt;In particular, since the GFW has been reportedly doing port blocking, rather than IP blocking, having a few backup ports may mitigate the incovenience when port blocking happens.&lt;/p&gt;
&lt;p&gt;A user can run the following command on server to redirect both TCP and UDP traffic ranging from port &lt;code&gt;12000&lt;/code&gt; to &lt;code&gt;12010&lt;/code&gt;, to port &lt;code&gt;8388&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo iptables -t nat -A PREROUTING -p tcp --dport 12000:12010 -j REDIRECT --to-port &lt;span style=&#34;color:#ae81ff&#34;&gt;8388&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo iptables -t nat -A PREROUTING -p udp --dport 12000:12010 -j REDIRECT --to-port &lt;span style=&#34;color:#ae81ff&#34;&gt;8388&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Remember to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;replace &lt;code&gt;12000:12010&lt;/code&gt; with a different range that only you know (we suggest any port from 1024 to 65535);&lt;/li&gt;
&lt;li&gt;replace &lt;code&gt;8388&lt;/code&gt; with the Shadowsocks port you used.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This way, whenever a port on server got blocked, a user only needs to change the configurations of &lt;code&gt;server_port&lt;/code&gt; on the clients, without having to login to the server, change configuration, and then restart Shadowsocks. For example, if you had been using port &lt;code&gt;12000&lt;/code&gt; but it got blocked, all you need to do is changing the &lt;code&gt;server_port&lt;/code&gt; from &lt;code&gt;12000&lt;/code&gt; to another backup port &lt;code&gt;12001&lt;/code&gt; on your client.&lt;/p&gt;
&lt;p&gt;When properly configured, the output should look like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo iptables -t nat -L PREROUTING -nv --line-number
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;num   pkts bytes target     prot opt in     out     source               destination
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;1        0     0 REDIRECT   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpts:12000:12010 redir ports 8388
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2        0     0 REDIRECT   udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpts:12000:12010 redir ports 8388
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Note that setting a PREROUTING rule on ephermeral ports (&lt;code&gt;/proc/sys/net/ipv4/ip_local_port_range&lt;/code&gt;) will not disrupt normal outgoing connections that use those ephermeral ports as source ports.&lt;/p&gt;
&lt;h2 id=&#34;qa&#34;&gt;Q&amp;amp;A&lt;/h2&gt;
&lt;h5 id=&#34;q-why-did-my-server-still-get-blocked-when-i-followed-your-tutorial&#34;&gt;Q: Why did my server still get blocked when I followed your tutorial?&lt;/h5&gt;
&lt;p&gt;A: As of November 7 2021, we indeed received a few report on the blocking of Shadowsocks. Since this tutorial can defend all known active probing attacks by the GFW, it is likely that the censor has employed some unknown attacks against Shadowsocks-libev. If your server got blocked, too, please consider using the backup ports to mitigate the blocking. We also encourage you &lt;a href=&#34;https://gfw.report&#34;&gt;report the block to us&lt;/a&gt; and we will carefully investigate it.&lt;/p&gt;
&lt;h5 id=&#34;q-should-i-install-shadowsocks-libev-from-a-distribution-repo&#34;&gt;Q: Should I install Shadowsocks-libev from a distribution repo?&lt;/h5&gt;
&lt;p&gt;A: A distribution repo may not always include the latest version of Shadowsocks-libev. For example, as of January 2021, the version included in Debian buster repo was &lt;code&gt;v3.2.5&lt;/code&gt;, which was not sufficient to defend active probings from the GFW (see &lt;a href=&#34;https://gfw.report/publications/imc20/data/paper/shadowsocks.pdf#page=9&#34;&gt;Figure 10&lt;/a&gt;).&lt;/p&gt;
&lt;h5 id=&#34;q-how-can-i-update-shadowsocks-libev-via-snap&#34;&gt;Q: How can I update Shadowsocks-libev via snap?&lt;/h5&gt;
&lt;p&gt;A: Usually you don&amp;rsquo;t have to update it manually because snap automatically updates all apps once per day. To manually update immediately: &lt;code&gt;sudo snap refresh&lt;/code&gt;.&lt;/p&gt;
&lt;h5 id=&#34;q-why-do-you-use-chacha20-ietf-poly1305&#34;&gt;Q: Why do you use &lt;code&gt;chacha20-ietf-poly1305&lt;/code&gt;?&lt;/h5&gt;
&lt;p&gt;A: Because it is one of the &lt;a href=&#34;https://shadowsocks.org/en/wiki/AEAD-Ciphers.html&#34;&gt;AEAD ciphers&lt;/a&gt;, which &lt;a href=&#34;https://gfw.report/blog/ss_advise/en/&#34;&gt;can defend the active probings by the GFW&lt;/a&gt;. It is also the default encryption method for both Shadowsocks-libev and OutlineVPN.&lt;/p&gt;
&lt;h5 id=&#34;q-should-i-use-any-stream-cipher-in-shadowsocks&#34;&gt;Q: Should I use any stream cipher in Shadowsocks?&lt;/h5&gt;
&lt;p&gt;A: No. It is unacceptably insecure. Even the latest version of Shadowsocks-libev operating in stream cipher mode is vulnerable to active probing (see &lt;a href=&#34;https://gfw.report/publications/imc20/data/paper/shadowsocks.pdf#page=9&#34;&gt;Figure 10&lt;/a&gt;). More devastatingly, &lt;a href=&#34;https://github.com/net4people/bbs/issues/24&#34;&gt;an attacker can get full decryption of recorded Shadowsocks sessions, without knowing the password&lt;/a&gt;.&lt;/p&gt;
&lt;h5 id=&#34;q-but-my-airport-is-still-using-stream-cipher&#34;&gt;Q: But my &amp;ldquo;airport&amp;rdquo; is still using stream cipher?&lt;/h5&gt;
&lt;p&gt;A: Then it is clear sign that your &amp;ldquo;airport&amp;rdquo; has very poor security awareness. Point the owners to this tutorial, as well as &lt;a href=&#34;https://gfw.report/talks/imc20/en/&#34;&gt;this post&lt;/a&gt; and &lt;a href=&#34;https://gfw.report/blog/ss_advise/en/&#34;&gt;this summary&lt;/a&gt;.&lt;/p&gt;
&lt;h5 id=&#34;q-should-i-change-the-server_port-to-some-common-ports-like-443&#34;&gt;Q: Should I change the &lt;code&gt;server_port&lt;/code&gt; to some common ports like &lt;code&gt;443&lt;/code&gt;?&lt;/h5&gt;
&lt;p&gt;A: No. The GFW can still suspect your Shadowsocks traffic, regardless of the server port you use.&lt;/p&gt;
&lt;h5 id=&#34;q-why-do-you-operate-shadowsocks-libev-in-tcp_and_udp-mode&#34;&gt;Q: Why do you operate Shadowsocks-libev in &lt;code&gt;tcp_and_udp&lt;/code&gt; mode?&lt;/h5&gt;
&lt;p&gt;A: Previously, we used &lt;code&gt;tcp_only&lt;/code&gt; mode to mitigate the &lt;a href=&#34;https://www.usenix.org/system/files/sec21summer_len.pdf#page=13&#34;&gt;Partitioning Oracle Attacks against Shadowsocks servers&lt;/a&gt;; however, as Vinicius &lt;a href=&#34;https://gfw.report/blog/ss_tutorial/en/#isso-57&#34;&gt;pointed out&lt;/a&gt;, the partitioning oracle attack is not feasible when you have long random passwords, and it is recommended to &amp;ldquo;enable UDP support in order to enjoy better video calls&amp;rdquo;.&lt;/p&gt;
&lt;h5 id=&#34;q-why-do-you-disable-fast_open&#34;&gt;Q: Why do you disable &lt;code&gt;fast_open&lt;/code&gt;?&lt;/h5&gt;
&lt;p&gt;A: We recommend that you read &lt;a href=&#34;https://github.com/klzgrad/naiveproxy#why-not-use-go-node-etc-for-performance&#34;&gt;this rationale&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;contacts&#34;&gt;Contacts&lt;/h2&gt;
&lt;p&gt;This report appeared first on &lt;a href=&#34;https://gfw.report/blog/ss_tutorial/en/&#34;&gt;GFW Report&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We encourage you to share your comments publicly or privately. Our private contact information can be found at the footer of &lt;a href=&#34;https://gfw.report/&#34;&gt;GFW Report&lt;/a&gt;.&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>如何部署一台抗封锁的Shadowsocks-libev服务器</title>
        <link>https://gfw.report/blog/ss_tutorial/zh/</link>
        <pubDate>Tue, 26 Jan 2021 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/ss_tutorial/zh/</guid>
        
        <description>&lt;p&gt;这篇教程记录了如何安装，配置并维护一台Shadowsocks-libev服务器。
这篇教程的亮点在于，
按照这里的配置建议，你的Shadowsocks-libev服务器可以抵御各种已知的攻击，
包括&lt;a href=&#34;https://gfw.report/talks/imc20/en/&#34;&gt;来自GFW的主动探测和封锁&lt;/a&gt;以及&lt;a href=&#34;https://www.usenix.org/system/files/sec21summer_len.pdf#page=13&#34;&gt;partitioning oracle攻击&lt;/a&gt;。
我们还在教程的最后加入了有关Shadowsocks-libev部署的常见问题。
截止2021年11月7日，我们收到零星的用户&lt;a href=&#34;https://github.com/net4people/bbs/issues/69#issuecomment-962666385&#34;&gt;报告&lt;/a&gt;按此教程配置的服务器仍遭到了端口封锁，我们因此在文中分享一个配置备用端口来缓解端口封锁的方法。&lt;/p&gt;
&lt;p&gt;我们致力于更新和维护这篇教程。如果今后发现了新的针对Shadowsocks-libev的攻击，我们将在第一时间在这篇教程中加入缓解攻击的办法。
因此请考虑将这个页面加入到你的收藏夹中。
另外，我们希望这篇教程对技术小白同样友好，因此如果你在任何步骤卡住了，请&lt;a href=&#34;https://gfw.report&#34;&gt;联系我们&lt;/a&gt;，或在下方评论区留言。我们会对教程作相应改进。&lt;/p&gt;
&lt;h2 id=&#34;安装&#34;&gt;安装&lt;/h2&gt;
&lt;h3 id=&#34;安装snap应用商店&#34;&gt;安装Snap应用商店&lt;/h3&gt;
&lt;p&gt;通过Snap应用商店安装Shadowsocks-libev是&lt;a href=&#34;https://github.com/shadowsocks/shadowsocks-libev#quick-start&#34;&gt;官方推荐&lt;/a&gt;的方式。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果你的服务器运行Ubuntu 16.04 LTS及以上的版本，Snap已经默认安装好了。&lt;/li&gt;
&lt;li&gt;如果你的服务器运行了其他的Linux发行版，你只需跟着&lt;a href=&#34;https://snapcraft.io/core&#34;&gt;对应的发行版安装Snap core&lt;/a&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;现在来检测一下你的服务器已经安装了需要的&lt;code&gt;snapd&lt;/code&gt;和Snap &lt;code&gt;core&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo snap install core
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;安装shadowsocks-libev&#34;&gt;安装Shadowsocks-libev&lt;/h3&gt;
&lt;p&gt;现在我们安装最新的Shadowsocks-libev:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo snap install shadowsocks-libev --edge
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;配置&#34;&gt;配置&lt;/h2&gt;
&lt;p&gt;下面是我们推荐的Shadowsocks-libev服务器配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;server&amp;#34;:[&amp;#34;::0&amp;#34;,&amp;#34;0.0.0.0&amp;#34;],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;server_port&amp;#34;:8388,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;method&amp;#34;:&amp;#34;chacha20-ietf-poly1305&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;password&amp;#34;:&amp;#34;ExamplePassword&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;mode&amp;#34;:&amp;#34;tcp_and_udp&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;#34;fast_open&amp;#34;:false
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;注意，你需要把里面的&lt;code&gt;ExamplePassword&lt;/code&gt;替换成一个更强的密码。
强密码有助缓解最新发现的针对Shadowsocks服务器的&lt;a href=&#34;https://www.usenix.org/system/files/sec21summer_len.pdf#page=13&#34;&gt;Partitioning Oracle攻击&lt;/a&gt;。
你可以用以下命令在终端生成一个强密码：&lt;code&gt;openssl rand -base64 16&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;你还可以考虑将&lt;code&gt;server_port&lt;/code&gt;的值从&lt;code&gt;8388&lt;/code&gt;改为&lt;code&gt;1024&lt;/code&gt;到&lt;code&gt;65535&lt;/code&gt;之间的任意整数。&lt;/p&gt;
&lt;p&gt;现在打开通过Snap安装的Shadowsocks-libev默认的配置文件：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nano /var/snap/shadowsocks-libev/common/etc/shadowsocks-libev/config.json
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;将上方替换过密码的配置信息复制粘贴到配置文件后，
按&lt;code&gt;Ctrl + x&lt;/code&gt;退出。
退出时，文本编辑器将问你&lt;code&gt;&amp;quot;Save modified buffer?&amp;quot;&lt;/code&gt;，请输入&lt;code&gt;y&lt;/code&gt;然后按回车键。&lt;/p&gt;
&lt;p&gt;可以看到，通过Snap安装的Shadowsocks-libev默认的配置文件路径太长了，不便于记忆。同时默认配置路径又没有在官方文档中标出。
我们因此建议你收藏此页面，以备今后查找。&lt;/p&gt;
&lt;h2 id=&#34;防火墙&#34;&gt;防火墙&lt;/h2&gt;
&lt;p&gt;我们使用&lt;code&gt;ufw&lt;/code&gt;来管理Shadowsocks服务器的防火墙。&lt;/p&gt;
&lt;p&gt;在基于Debian的服务器上，可以通过如下命令安装&lt;code&gt;ufw&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt update &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt install -y ufw
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后开放有关&lt;code&gt;ssh&lt;/code&gt;和&lt;code&gt;Shadowsocks-libev&lt;/code&gt;的端口。
请注意，以下命令假设你在&lt;code&gt;/var/snap/shadowsocks-libev/common/etc/shadowsocks-libev/config.json&lt;/code&gt;中的&lt;code&gt;server_port&lt;/code&gt;的值为&lt;code&gt;8388&lt;/code&gt;。
如果你的&lt;code&gt;server_port&lt;/code&gt;用了其他的值，请对以下命令作相应的修改：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo ufw allow ssh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo ufw allow &lt;span style=&#34;color:#ae81ff&#34;&gt;8388&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;现在我们启动&lt;code&gt;ufw&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo ufw enable
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;启动时如果弹出&lt;code&gt;Command may disrupt existing ssh connections. Proceed with operation (y|n)?&lt;/code&gt;，请输入&lt;code&gt;y&lt;/code&gt;并按回车键。&lt;/p&gt;
&lt;p&gt;最后，请用&lt;code&gt;sudo ufw status&lt;/code&gt;检查一下你的配置是否和下面的一样：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Status: active
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;To                         Action      From
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--                         ------      ----
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;22/tcp                     ALLOW       Anywhere
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;8388                       ALLOW       Anywhere
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;22/tcp (v6)                ALLOW       Anywhere (v6)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;8388 (v6)                  ALLOW       Anywhere (v6)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;运行shadowsocks-libev&#34;&gt;运行Shadowsocks-libev&lt;/h2&gt;
&lt;p&gt;现在我们启动Shadowsocks-libev：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl start snap.shadowsocks-libev.ss-server-daemon.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;记得设置Shadowsocks-libev开机自启动：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl enable snap.shadowsocks-libev.ss-server-daemon.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;维护&#34;&gt;维护&lt;/h2&gt;
&lt;h3 id=&#34;检查运行状态和日志&#34;&gt;检查运行状态和日志&lt;/h3&gt;
&lt;p&gt;以下命令可以查看Shadowsocks-libev的运行状态：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl status snap.shadowsocks-libev.ss-server-daemon.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果你看到绿色的&lt;code&gt;Active: active (running)&lt;/code&gt;，那么你的Shadowsocks-libev服务器就在正常的运行；
如果你看到红色的&lt;code&gt;Active: failed&lt;/code&gt;，请用跳至如下命令&lt;code&gt;journalctl -u snap.shadowsocks-libev.ss-server-daemon.service&lt;/code&gt;的尾部查看问题出在哪里了。&lt;/p&gt;
&lt;h3 id=&#34;重新加载配置文件&#34;&gt;重新加载配置文件&lt;/h3&gt;
&lt;p&gt;每当你修改过配置文件后，请用如下命令重启Shadowsocks-libev以加载修改后的文件：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl restart snap.shadowsocks-libev.ss-server-daemon.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;配置备用端口来缓解端口封锁&#34;&gt;配置备用端口来缓解端口封锁&lt;/h3&gt;
&lt;p&gt;截止2021年11月7日，我们收到零星的用户&lt;a href=&#34;https://github.com/net4people/bbs/issues/69#issuecomment-962666385&#34;&gt;报告&lt;/a&gt;按此教程配置的服务器仍遭到了端口封锁。&lt;/p&gt;
&lt;p&gt;因为报告的封锁方式均为端口封锁，而非IP封锁，我们在此分享一个用备用端口来缓解端口括封锁的方法。&lt;/p&gt;
&lt;p&gt;你可以在服务器上使用以下命令来将服务器从&lt;code&gt;12000&lt;/code&gt;到&lt;code&gt;12010&lt;/code&gt;端口接收到的TCP和UDP流量全部转发到&lt;code&gt;8388&lt;/code&gt;端口：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo iptables -t nat -A PREROUTING -p tcp --dport 12000:12010 -j REDIRECT --to-port &lt;span style=&#34;color:#ae81ff&#34;&gt;8388&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo iptables -t nat -A PREROUTING -p udp --dport 12000:12010 -j REDIRECT --to-port &lt;span style=&#34;color:#ae81ff&#34;&gt;8388&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;记得：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;将&lt;code&gt;12000:12010&lt;/code&gt;替换成一个只有你自己知道的端口号，或者端口区间（我们建议从&lt;code&gt;1024&lt;/code&gt;到&lt;code&gt;65535&lt;/code&gt;之间任选几个端口或一个区间）。&lt;/li&gt;
&lt;li&gt;将&lt;code&gt;8388&lt;/code&gt;端口替换成你的Shadowsocks服务端实际使用的端口。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这样一来，如果你使用的&lt;code&gt;12000&lt;/code&gt;端口遭到了封锁，那么你无须更换IP，或者登录服务器修改配置文件。而是只需要在客户端（电脑或者手机上）将端口从&lt;code&gt;12000&lt;/code&gt;改为&lt;code&gt;12001&lt;/code&gt;就可以继续使用了。&lt;/p&gt;
&lt;p&gt;如果你配置正确，那么以下命令的输出应该类似于：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo iptables -t nat -L PREROUTING -nv --line-number
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;num   pkts bytes target     prot opt in     out     source               destination
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;1        0     0 REDIRECT   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpts:12000:12010 redir ports 8388
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2        0     0 REDIRECT   udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpts:12000:12010 redir ports 8388
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;注意任何&lt;code&gt;1024&lt;/code&gt;到&lt;code&gt;65535&lt;/code&gt;的端口都可以作为备用端口。即使使用ephermeral端口(&lt;code&gt;/proc/sys/net/ipv4/ip_local_port_range&lt;/code&gt;)作为配用端口也不会干扰服务器正常的向外连接。&lt;/p&gt;
&lt;h2 id=&#34;常见问题&#34;&gt;常见问题&lt;/h2&gt;
&lt;h5 id=&#34;q为什么我用了教程里的配置服务器还是被封了&#34;&gt;Q:为什么我用了教程里的配置，服务器还是被封了?&lt;/h5&gt;
&lt;p&gt;A: 截止2021年11月7日，我们收到零星的用户报告服务器的端口被封。因为通过这篇教程配置的Shadowsocks-libev服务器已经可以抵御已知的所有来自GFW的主动探测，所以有可能审查者使用了未知的攻击手段。如果你也遇到了类似问题，请考虑使用上述的备用端口方法来缓解封锁。我们鼓励你&lt;a href=&#34;https://gfw.report&#34;&gt;将封锁情况汇报给我们&lt;/a&gt;，我们会认真地调查。&lt;/p&gt;
&lt;h5 id=&#34;q-我应不应该从发行版的仓库下载安装shadowsocks-libev&#34;&gt;Q: 我应不应该从发行版的仓库下载安装Shadowsocks-libev?&lt;/h5&gt;
&lt;p&gt;A: 发行版仓库里的Shadowsocks-libev不一定是最新版的。比如，截止2021年1月，Debian buster仓库的Shadowsocks-libev的版本为&lt;code&gt;v3.2.5&lt;/code&gt;。而这个版本的Shadowsocks-libev是不够防御来自GFW的主动探测的（详见&lt;a href=&#34;https://gfw.report/publications/imc20/data/paper/shadowsocks.pdf#page=9&#34;&gt;Figure 10&lt;/a&gt;）。&lt;/p&gt;
&lt;h5 id=&#34;q-我应该怎样更新用snap安装的shadowsocks-libev&#34;&gt;Q: 我应该怎样更新用Snap安装的Shadowsocks-libev?&lt;/h5&gt;
&lt;p&gt;A: 因为Snap会每天自动更新通过其安装的软件，因此通常情况下你不需要手动更新。如若需要手动更新，请用： &lt;code&gt;sudo snap refresh&lt;/code&gt;。&lt;/p&gt;
&lt;h5 id=&#34;q-为什么用chacha20-ietf-poly1305作为加密方式&#34;&gt;Q: 为什么用&lt;code&gt;chacha20-ietf-poly1305&lt;/code&gt;作为加密方式?&lt;/h5&gt;
&lt;p&gt;A: 因为它是其中一种&lt;a href=&#34;https://shadowsocks.org/en/wiki/AEAD-Ciphers.html&#34;&gt;AEAD ciphers&lt;/a&gt;。而&lt;a href=&#34;https://gfw.report/blog/ss_advise/zh/&#34;&gt;AEAD ciphers可以抵御来自GFW的主动探测&lt;/a&gt;。它同时也是Shadowsocks-libev及OutlineVPN的默认加密方式。&lt;/p&gt;
&lt;h5 id=&#34;q-我应该用shadowsocks的stream-cipher吗&#34;&gt;Q: 我应该用Shadowsocks的stream cipher吗?&lt;/h5&gt;
&lt;p&gt;A: 完全不应该。因为Shadowsocks的stream cipher有着不可接受的安全隐私漏洞，并且可以被准确的主动探测。如&lt;a href=&#34;https://gfw.report/publications/imc20/data/paper/shadowsocks.pdf#page=9&#34;&gt;Figure 10&lt;/a&gt;所示，即使是最新版的Shadowsocks-libev，在使用stream cipher时同样可以被准确识别。更具灾难性的是，&lt;a href=&#34;https://github.com/net4people/bbs/issues/24&#34;&gt;在不需要密码的情况下，攻击者可以完全解密被记录下来的Shadowsocks会话&lt;/a&gt;。&lt;/p&gt;
&lt;h5 id=&#34;q-但为什么我用的机场仍在使用stream-cipher&#34;&gt;Q: 但为什么我用的机场仍在使用stream cipher?&lt;/h5&gt;
&lt;p&gt;A: 这清楚地说明你的机场缺乏安全意识和安全措施。请把&lt;a href=&#34;https://gfw.report/blog/ss_tutorial/zh/&#34;&gt;这篇教程&lt;/a&gt;，&lt;a href=&#34;https://gfw.report/talks/imc20/en/&#34;&gt;这个演讲&lt;/a&gt;，和这篇&lt;a href=&#34;https://gfw.report/blog/ss_advise/zh/&#34;&gt;总结&lt;/a&gt;，分享给你的机场主。&lt;/p&gt;
&lt;h5 id=&#34;q-我应该把配置中的server_port改为像443这样的常见端口吗&#34;&gt;Q: 我应该把配置中的&lt;code&gt;server_port&lt;/code&gt;改为像&lt;code&gt;443&lt;/code&gt;这样的常见端口吗?&lt;/h5&gt;
&lt;p&gt;A: 不应该。因为不论你使用哪个端口，GFW都会检测并怀疑你的Shadowsocks流量。&lt;/p&gt;
&lt;h5 id=&#34;q-为什么配置文件使用tcp_and_udp模式&#34;&gt;Q: 为什么配置文件使用&lt;code&gt;tcp_and_udp&lt;/code&gt;模式?&lt;/h5&gt;
&lt;p&gt;A: 我们之前使用&lt;code&gt;tcp_only&lt;/code&gt;模式是为了缓解&lt;a href=&#34;https://www.usenix.org/system/files/sec21summer_len.pdf#page=13&#34;&gt;Partitioning Oracle攻击&lt;/a&gt;。但正如Vinicius&lt;a href=&#34;https://gfw.report/blog/ss_tutorial/en/#isso-57&#34;&gt;所指出的&lt;/a&gt;，如果你使用了长的随机密码，那么partitioning oracle攻击就不能成功。因此也就不需要禁用UDP代理模式。开启UDP代理模式可能会让经过Shadowsocks代理的视频通话质量更佳。&lt;/p&gt;
&lt;h5 id=&#34;q-为什么配置文件禁用了fast_open&#34;&gt;Q: 为什么配置文件禁用了&lt;code&gt;fast_open&lt;/code&gt;?&lt;/h5&gt;
&lt;p&gt;A: 我们推荐你阅读&lt;a href=&#34;https://github.com/klzgrad/naiveproxy#why-not-use-go-node-etc-for-performance&#34;&gt;这里的讨论&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;联系&#34;&gt;联系&lt;/h2&gt;
&lt;p&gt;这篇报告首发于&lt;a href=&#34;https://gfw.report/blog/ss_tutorial/zh/&#34;&gt;GFW Report&lt;/a&gt;。我们鼓励您或公开地或私下地分享您的评论或疑问。我们私下的联系方式可见&lt;a href=&#34;https://gfw.report&#34;&gt;GFW Report&lt;/a&gt;的页脚。&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>防御GFW主动探测的实用指南</title>
        <link>https://gfw.report/blog/ss_advise/zh/</link>
        <pubDate>Tue, 26 Jan 2021 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/ss_advise/zh/</guid>
        
        <description>&lt;p&gt;在近期的IMC&#39;20的工作中(&lt;a href=&#34;https://gfw.report/publications/imc20/data/paper/shadowsocks.pdf&#34;&gt;论文&lt;/a&gt;, &lt;a href=&#34;https://gfw.report/talks/imc20/zh/&#34;&gt;演讲&lt;/a&gt;)，我们揭示了中国的防火长城采用&lt;em&gt;流量分析&lt;/em&gt;与&lt;em&gt;主动探测&lt;/em&gt;相结合的手段来检测和封锁Shadowsocks服务器。&lt;/p&gt;
&lt;p&gt;在这篇短文中，我们将分别向技术小白和翻墙软件开发者提供防御GFW主动探测的实用建议。
我们还将介绍Len et al.展示的&lt;a href=&#34;https://www.usenix.org/system/files/sec21summer_len.pdf#page=13&#34;&gt;partitioning oracle攻击&lt;/a&gt;的缓解办法。
如果在遵循了本文的建议后，你的Shadowsocks服务器仍被封锁，请将封锁情况&lt;a href=&#34;https://gfw.report/&#34;&gt;汇报给GFW Report&lt;/a&gt;以及相应的开发者。&lt;/p&gt;
&lt;h2 id=&#34;给用户的建议&#34;&gt;给用户的建议&lt;/h2&gt;
&lt;p&gt;根据我们的测试和来自开发者的报告，在采用了适当的配置后，以下两个Shadowsocks实现的最新版本已经可以抵御来自GFW的主动探测：&lt;em&gt;Shadowsocks-libev&lt;/em&gt;和&lt;em&gt;OutlineVPN&lt;/em&gt;。&lt;/p&gt;
&lt;h3 id=&#34;针对shadowsocks-libev的使用建议&#34;&gt;针对Shadowsocks-libev的使用建议&lt;/h3&gt;
&lt;p&gt;如果你决定使用Shadowsocks-libev，我们强烈建议你根据这篇教程来&lt;a href=&#34;https://gfw.report/blog/ss_tutorial/zh/&#34;&gt;部署一台抗封锁的Shadowsocks-libev服务器&lt;/a&gt;。我们会时刻更新那篇教程的，以应对之后新出现的针对Shadowsocks的识别和攻击。&lt;/p&gt;
&lt;p&gt;如果你已经拥有了一台Shadowsocks-libev服务器，你可以根据以下规则来确认你的服务器是否配置得可以对抗GFW的主动检测和封锁。&lt;/p&gt;
&lt;p&gt;截止2021年1月，你需要做到以下几点来防止你的&lt;em&gt;Shadowsocks-libev&lt;/em&gt;服务器被封锁：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;确保你的服务器版本为&lt;code&gt;v3.3.1&lt;/code&gt;及以上。你可以通过以下命令查看服务器的版本&lt;code&gt;ss-server -h&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;使用&lt;a href=&#34;https://shadowsocks.org/en/spec/AEAD-Ciphers.html&#34;&gt;&lt;em&gt;AEAD ciphers&lt;/em&gt;&lt;/a&gt;， 而&lt;strong&gt;不用&lt;/strong&gt; &lt;em&gt;stream ciphers&lt;/em&gt;。换句话说，仅在以下几种加密方式中进行选择：&lt;code&gt;chacha20-ietf-poly1305&lt;/code&gt; (推荐), &lt;code&gt;aes-256-gcm&lt;/code&gt;, &lt;code&gt;aes-192-gcm&lt;/code&gt;或者&lt;code&gt;aes-128-gcm&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;为了缓解针对Shadowsocks的&lt;a href=&#34;https://www.usenix.org/system/files/sec21summer_len.pdf#page=13&#34;&gt;partitioning oracle攻击&lt;/a&gt;，你需要:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;使用一个长的随机密码。这样的密码可以用以下命令在终端生成： &lt;code&gt;openssl rand -base64 16&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;禁用UDP模式。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;注意：针对客户端没有特殊的要求，任何与Shadowsocks-libev服务器兼容的客户端均可。&lt;/p&gt;
&lt;h3 id=&#34;针对outlinevpn的使用建议&#34;&gt;针对OutlineVPN的使用建议&lt;/h3&gt;
&lt;p&gt;为了防止你的&lt;a href=&#34;https://getoutline.org&#34;&gt;OutlineVPN&lt;/a&gt;服务器被GFW封锁，你需要做到以下几点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;使用最新版的从&lt;a href=&#34;https://getoutline.org/&#34;&gt;官网&lt;/a&gt;下载的服务端。&lt;/li&gt;
&lt;li&gt;使用最新版的从&lt;a href=&#34;https://getoutline.org/&#34;&gt;官网&lt;/a&gt;下载的客户端。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;注意：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Outline会自动生成一个长的，随机的密码，因此你不必像为Shadowsocks-libev那样手动配置密码。&lt;/li&gt;
&lt;li&gt;Outline服务端会自动更新，因此你不必手动升级服务端。&lt;/li&gt;
&lt;li&gt;Outline只采用&lt;code&gt;chacha20-ietf-poly1305&lt;/code&gt;这一种AEAD cipher作为加密方式，因此你不必手动选择加密方式。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;给翻墙软件开发者的建议&#34;&gt;给翻墙软件开发者的建议&lt;/h2&gt;
&lt;p&gt;下面我们介绍我们发现的GFW的最新审查能力，并附上我们给翻墙软件开发者的相应建议。这些建议不仅对Shadowsocks，而且对其他许多翻墙软件都有用。
我们欢迎你加入我们的讨论，分享你的想法，评论，疑惑和关切。&lt;/p&gt;
&lt;h3 id=&#34;正确的校验&#34;&gt;正确的校验&lt;/h3&gt;
&lt;p&gt;首先，我们强烈建议翻墙软件的开发者们&lt;strong&gt;彻底&lt;/strong&gt;废除不具备校验的加密构造。仅仅有保密性是不够的。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对于新开发的翻墙软件来说，这意味着根本不应考虑支持不具备校验的加密构造。&lt;/li&gt;
&lt;li&gt;对于现存的翻墙软件来说，这意味着开发者应该勇敢地&lt;strong&gt;移除&lt;/strong&gt;所有与不具备教研的加密构造相关的代码，即使以不向下兼容为代价。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我们这看似大胆的建议实际上出于合理的原因。如我们在&lt;a href=&#34;https://gfw.report/publications/imc20/data/paper/shadowsocks.pdf#page=7&#34;&gt;论文&lt;/a&gt;中所介绍的，
一些类型的GFW主动探测会利用Shadowsocks的stream ciphers的malleability。这已经不是第一次不具备校验的加密结构造成漏洞了。事实上，不具备校验的加密结构是许多Shadowsocks和其他翻墙软漏洞的根本来源。&lt;/p&gt;
&lt;p&gt;早在2015年8月，BreakWa11&lt;a href=&#34;https://web.archive.org/web/20160829052958/https://github.com/breakwa11/shadowsocks-rss/issues/38&#34;&gt;发现了&lt;/a&gt;一个关于Shadowsocks的stream ciphers的漏洞。这个漏洞是由于缺乏数据完整性保护而造成的（&lt;a href=&#34;https://groups.google.com/d/msg/traffic-obf/CWO0peBJLGc/Py-clLSTBwAJ&#34;&gt;英文总结&lt;/a&gt;）。
在2020年，类似的漏洞又被&lt;a href=&#34;https://github.com/v2ray/v2ray-core/issues/2523&#34;&gt;发现&lt;/a&gt;存在于V2Ray中（&lt;a href=&#34;https://gfw.report/blog/v2ray_weaknesses/zh/&#34;&gt;总结&lt;/a&gt;）。&lt;/p&gt;
&lt;p&gt;当Shadowsocks开发者试图引入&lt;code&gt;one time auth&lt;/code&gt;模式来缓解2015年的那个漏洞时，另一个因数据长度缺乏完整性保护的主动探测又被&lt;a href=&#34;https://web.archive.org/web/20191002190325/https://printempw.github.io/why-do-shadowsocks-deprecate-ota/&#34;&gt;引入了&lt;/a&gt;（&lt;a href=&#34;https://groups.google.com/d/msg/traffic-obf/CWO0peBJLGc/Py-clLSTBwAJ&#34;&gt;英文总计&lt;/a&gt;）。&lt;/p&gt;
&lt;p&gt;2020年2月，Zhejiang Peng&lt;a href=&#34;https://github.com/edwardz246003/shadowsocks&#34;&gt;发现了&lt;/a&gt;一个关于Shadowsocks stream ciphers的灾难性的漏洞，(&lt;a href=&#34;https://github.com/net4people/bbs/issues/24&#34;&gt;英文总结&lt;/a&gt;）。
利用使用了stream cipher的Shadowsocks服务器作为decryption oracle，攻击者可以在不需要密码的情况下，完全解密Shadowsocks会话。&lt;/p&gt;
&lt;p&gt;其实早在2017年2月，AEAD ciphers就已经成为了Shadowsocks协议的一部分。而校验问题也理应在那时就被解决了。但实际情况是，截止2021年，大量的服务器仍然因为使用被废弃的stream ciphers而存在着安全隐私漏洞，以及被准确识别的风险。&lt;/p&gt;
&lt;p&gt;这样的现象表明，在实际操作中，许多的用户不能够正确的选择加密方式。这可能与使用过时的教程或一键脚本有关。
我们因此鼓励开发者从Shadowsocks各实现中彻底移除stream ciphers，帮助用户做出正确的选择。&lt;/p&gt;
&lt;h3 id=&#34;使用同时基于nonces和时间的重放过滤器&#34;&gt;使用同时基于nonces和时间的重放过滤器&lt;/h3&gt;
&lt;p&gt;我们建议翻墙软件的开发者们采用同时基于nonces和时间的重放过滤器。
因为采用基于时间的重放过滤器需要对Shadowsocks协议进行根本性地变动，我们建议开发者至少要此采用基于nonces的过滤器，并且做到：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;要么建议用户在每次过滤器重置后修改密码；&lt;/li&gt;
&lt;li&gt;要么开发一个机制，可以让重放过滤器在软件重启后依然记得之前的nonces。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这些建议是基于以下的研究发现和推论。
如&lt;a href=&#34;https://gfw.report/publications/imc20/data/paper/shadowsocks.pdf#page=5&#34;&gt;论文的section 3.5&lt;/a&gt;所介绍的，
GFW既可以在观察到一个合法连接的瞬间对其进行重放；也可以等待三周甚至更长时间后才重放。
因此，一个更加合理的主动探测模型应该允许审查者在任意时长后对合法连接进行重放。&lt;/p&gt;
&lt;p&gt;这样的一个主动探测模型揭示了纯粹基于nonces的重放过滤所须要面对的不对称性。GFW仅用少量资源就可以记录&lt;strong&gt;一些&lt;/strong&gt;合法的连接，并且在经过任意的时长后再重放它们；但与此同时，Shadowsocks需要大量的资源和相对复杂的实现来永久性地记住&lt;strong&gt;所有的&lt;/strong&gt;合法链接，直至密码被更换。
注意，Shadowsocks服务器必须在重启后还记住这些nonces；否则重放过滤器不会过滤基于重启前的合法连接的重放。&lt;/p&gt;
&lt;p&gt;幸运的是，这个不公平的局面可以通过同时引入基于时间的重放过滤机制来扭转：服务器只需要处理并验证时间戳未过期的连接，&lt;a href=&#34;https://gfw.report/blog/v2ray_weaknesses/en/&#34;&gt;就像VMess服务器那样&lt;/a&gt;。
如此一来服务器就不需要永久性地记住所有合法连接中的nonces。&lt;/p&gt;
&lt;p&gt;我们还想强调，对于那些仅仅短暂暴露变化的监听端口的翻墙服务器，重放过滤仍是必要的。因为GFW可以瞬时重放合法连接中的第一个数据包，而这时暴露的监听端口因为未完成数据传输，依然是开启的。&lt;/p&gt;
&lt;h3 id=&#34;让服务器的反应保持一致&#34;&gt;让服务器的反应保持一致&lt;/h3&gt;
&lt;p&gt;我们建议开发者们确保翻墙服务器在正常运行时，和遇到不合法的连接时都反应一致。理想情况下，可以按照&lt;a href=&#34;https://censorbib.nymity.ch/pdf/Frolov2020a.pdf#page=12&#34;&gt;Frolov et al.&lt;/a&gt;的建议，让服务器遇到错误连接时“read forever”。
这是因为，审查者会故意触发协议的边边角角等特殊情况，来识别服务器指纹。&lt;/p&gt;
&lt;p&gt;除了我们在Shadowsocks-libev和OutlineVPN中发现的服务器反应指纹，&lt;a href=&#34;https://censorbib.nymity.ch/pdf/Frolov2020a.pdf#page=11&#34;&gt;Frolov et al.&lt;/a&gt;还展示了包括Shadowsocks-python和OutlineVPN在内的多种翻墙软件可以通过关闭连接时的TCP flags和连接时长来识别。studentmain&lt;a href=&#34;https://github.com/net4people/bbs/issues/22#issuecomment-744704701&#34;&gt;报告&lt;/a&gt;，直至2020年12月， 许多的Shadowsocks实现仍存在着我们在Shadowsocks-libev和Outline中发现的问题。&lt;/p&gt;
&lt;p&gt;Frolov et al.建议代理服务器在遇到错误连接时不要立即关闭连接，而是“read forever”。这样做不但避免泄漏超时值，而且使得服务器发送与正常连接关闭时相同的TCP flags来关闭错误连接。&lt;/p&gt;
&lt;p&gt;进一步说，“reading forever”本身不会带来更加独特的指纹。因为Frolov et al.发现&lt;a href=&#34;https://censorbib.nymity.ch/pdf/Frolov2020a.pdf#page=12&#34;&gt;互联网上大量的服务器都会有无限超时值（&amp;ldquo;infinite timeout&amp;rdquo;）的特征&lt;/a&gt;。David Fifield&lt;a href=&#34;https://github.com/net4people/bbs/issues/26#issuecomment-599712288&#34;&gt;调查&lt;/a&gt;显示，许多流行的翻墙软件已经采取了“read forever”策略。这些软件包括OSSH，obfs4，Outline和Lampshade。&lt;/p&gt;
&lt;h3 id=&#34;强制采用强密码&#34;&gt;强制采用强密码&lt;/h3&gt;
&lt;p&gt;Len et al. 于2020年展示了针对Shadowsocks服务器的&lt;a href=&#34;https://www.usenix.org/system/files/sec21summer_len.pdf#page=13&#34;&gt;partitioning oracle攻击&lt;/a&gt;。利用在Shadowsocks中使用的non-committing AEAD，攻击者可以更高效地猜出密码。我们因此建议开发者强制采用强密码。一种可能的实现方式是要求用户密码的熵高于一定值。&lt;/p&gt;
&lt;h3 id=&#34;主动探测你的实现&#34;&gt;主动探测你的实现&lt;/h3&gt;
&lt;p&gt;如果你是一个不同于Shadowsocks-libev和Outline的翻墙软件开发者或贡献者，我们鼓励你检查同样的漏洞是否也存在于你的Shadowsocks实现中。我们开源了我们在&lt;a href=&#34;https://gfw.report/publications/imc20/data/paper/shadowsocks.pdf#page=8&#34;&gt;论文Section 5.1&lt;/a&gt;中用到的&lt;a href=&#34;https://gfw.report/publications/imc20/data/code/prober_simulator/&#34;&gt;prober 模拟器&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;鸣谢&#34;&gt;鸣谢&lt;/h2&gt;
&lt;p&gt;我们想要感谢来自Jigsaw的Vinicius Fortuna，来自APNIC的Robert Mitchell和Dan Fidler，以及来自Qv2ray的DuckSoft和Student Main对本文提供的反馈。&lt;/p&gt;
&lt;h2 id=&#34;联系&#34;&gt;联系&lt;/h2&gt;
&lt;p&gt;这篇报告首发于&lt;a href=&#34;https://gfw.report/blog/ss_advise/zh/&#34;&gt;GFW Report&lt;/a&gt;。我们还在APNIC blog，&lt;a href=&#34;https://github.com/net4people/bbs/issues/58&#34;&gt;net4people&lt;/a&gt;以及&lt;a href=&#34;https://ntc.party/t/a-practical-guide-to-defend-against-the-gfws-latest-active-probing/847&#34;&gt;ntc.party&lt;/a&gt;同步更新了博文。&lt;/p&gt;
&lt;p&gt;我们鼓励您或公开地或私下地分享您的评论或疑问。我们私下的联系方式可见&lt;a href=&#34;https://gfw.report&#34;&gt;GFW Report&lt;/a&gt;的页脚。&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>I&#39;ll shake your hand: what happens after DNS poisoning</title>
        <link>https://gfw.report/blog/injected_ips/en/</link>
        <pubDate>Fri, 13 Nov 2020 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/injected_ips/en/</guid>
        
        <description>&lt;p&gt;A typical DNS poisoning event consists of three steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A client sends a DNS query to a DNS server, asking for the IP address of a sensitive domain;&lt;/li&gt;
&lt;li&gt;the GFW observes the query and injects a forged DNS response, telling the client a wrong IP address;&lt;/li&gt;
&lt;li&gt;the client receives the forged response, and attempts to connect to the wrong IP address.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;But what will happen after step 3?&lt;/p&gt;
&lt;p&gt;While packets sent to these wrong IP addresses are often believed to be dropped or null-routed;
in this report, we document an interesting phenomena:
&lt;strong&gt;the GFW pretends to be some of the injected IP addresses
to accept (or deny) TCP handshakes from the clients.&lt;/strong&gt;
Such behavior tricks censored clients to send data
that would never be sent if the handshakes were not accepted.
The censor can thus learn more about the effect of its censorship and also the intention of clients.&lt;/p&gt;
&lt;p&gt;We characterize this behavior and fingerprint the censoring machine.
Our findings suggest that the censoring machine is likely to be &lt;strong&gt;stateless&lt;/strong&gt;;
it also employs some &lt;strong&gt;load-balancing&lt;/strong&gt; that accepts around &lt;code&gt;75%&lt;/code&gt; of the traffic.
We locate the injecting point of the censoring machine,
and find that DNS queries or TLS connections to these IP addresses are not affected by the DNS or SNI censorship.
Finally, we suggest that users encrypt their DNS queries and
&lt;strong&gt;block all outgoing traffic to these injected IP addresses&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;main-findings&#34;&gt;Main findings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The GFW pretends to be four injected IP addresses to accept (or deny) TCP handshakes at all 65535 ports, potentially seducing censored clients to send more data.&lt;/li&gt;
&lt;li&gt;The implementation of the censoring machine appears to be crude and stateless.&lt;/li&gt;
&lt;li&gt;The censoring machine employs some load-balancing to accept around &lt;code&gt;75%&lt;/code&gt; of the traffic. The load-balancing algorithm is associated with &lt;code&gt;(srcIP, dstIP, srcPort, dstPort)&lt;/code&gt; tuple.&lt;/li&gt;
&lt;li&gt;The GFW has a 31-second residual censorship after denying a TCP handshake to some of the injected IP addresses.&lt;/li&gt;
&lt;li&gt;The censoring machine is likely to share the same location as the DNS injection points.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;reachability-of-injected-ip-addresses&#34;&gt;Reachability of Injected IP addresses&lt;/h2&gt;
&lt;p&gt;Our investigation started from something we could not explain.
As show in &lt;a href=&#34;https://gfw.report/publications/foci20_dns/dns.pdf#page=4&#34;&gt;Figure 3 of Anonymous et al. 2020&lt;/a&gt;,
when testing the reachability of the injected IP addresses from China and the US,
around &lt;code&gt;40%&lt;/code&gt; of the results are different.
For example,
&lt;code&gt;0.4%&lt;/code&gt; of the IP-port pairs are &lt;code&gt;open&lt;/code&gt; when tested from China,
but are &lt;code&gt;filtered&lt;/code&gt; when tested from the US.
(See definitions of port state &lt;code&gt;open&lt;/code&gt;, &lt;code&gt;closed&lt;/code&gt; and &lt;code&gt;filtered&lt;/code&gt; in &lt;a href=&#34;https://nmap.org/book/man-port-scanning-basics.html&#34;&gt;the Nmap manual&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;To answer why such inconsistency exists,
we re-tested their reachability.
We first obtained the injected IP addresses from &lt;a href=&#34;https://gfw.report/publications/foci20_dns/en/&#34;&gt;the open dataset&lt;/a&gt;.
We then used Nmap to SYN ping all 65535 ports of &lt;a href=&#34;https://gfw.report/publications/foci20_dns/foci20_anonymous/injected_ips/ips_after_drop.txt&#34;&gt;the 215 IP addresses&lt;/a&gt; from China:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nmap -iL ips_after_drop.txt -p1-65535 -Pn --min-rate&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;500&lt;/span&gt; -oX all_ips_65535.xml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In total, we discovered 14 IP addresses that has at least one non-&lt;code&gt;filtered&lt;/code&gt; port;
the rest 201 IP addresses appeared to not respond at any port.
Based on the port states, we categorized these 14 IP addresses into three groups:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Group 1 (G1): 4 IP addresses whose 1-65535 ports are &lt;code&gt;open&lt;/code&gt; when tested from China; but are all &lt;code&gt;filtered&lt;/code&gt; when tested from the US:
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;8.7.198.46
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;46.82.174.69
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;59.24.3.174
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;93.46.8.90
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;Group 2 (G2): 7 IP addresses have a few &lt;code&gt;closed&lt;/code&gt; ports; and all other ports are &lt;code&gt;filtered&lt;/code&gt; when tested from China. All ports are &lt;code&gt;filtered&lt;/code&gt; when tested from the US:
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;8.7.198.45
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;67.228.126.62
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;93.46.8.89
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;118.5.49.6
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;188.5.4.96
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;203.98.7.65
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;208.101.48.171
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;Group 3 (G3): 3 IP addresses have a few &lt;code&gt;open&lt;/code&gt; ports; and a few &lt;code&gt;closed&lt;/code&gt; ports; the rest are &lt;code&gt;filtered&lt;/code&gt; when tested from China. Similar results with slight differences were discovered when tested from the US.
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;31.13.64.49
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;31.13.72.54
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;31.13.85.1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;g1-ips&#34;&gt;G1 IPs&lt;/h2&gt;
&lt;p&gt;We first discuss the four IP addresses in group 1:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;8.7.198.46
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;46.82.174.69
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;59.24.3.174
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;93.46.8.90
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;We call them &lt;code&gt;listening IPs&lt;/code&gt; because
all their ports from 1 to 65535 were observed to accept TCP handshakes,
when tested from China.&lt;/p&gt;
&lt;h3 id=&#34;g1-ips-are-exclusively-used-by-injector-1&#34;&gt;G1 IPs are exclusively used by Injector 1&lt;/h3&gt;
&lt;p&gt;Prior work shows that the GFW uses multiple DNS injectors,
and each maintain a separate blacklist (see &lt;a href=&#34;https://gfw.report/publications/foci20_dns/dns.pdf#page=5&#34;&gt;Figure 5&lt;/a&gt;) and injects a different set of IP addresses (see &lt;a href=&#34;https://gfw.report/publications/foci20_dns/dns.pdf#page=4&#34;&gt;Table 3&lt;/a&gt;).
Therefore, it is intuitive to ask:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Which injectors are using these &lt;code&gt;listening IPs&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;What domains do the GFW poison with these IP addresses?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These questions can be answered easily using &lt;a href=&#34;https://gfw.report/publications/foci20_dns/en/&#34;&gt;the open dataset&lt;/a&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;grep --max-count &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;59\.24\.3\.174&amp;#34;&lt;/span&gt; injector*.csv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Interestingly,
we found these four &lt;code&gt;listening IPs&lt;/code&gt; &lt;strong&gt;exactly match&lt;/strong&gt; the first row of &lt;a href=&#34;https://gfw.report/publications/foci20_dns/dns.pdf#page=4&#34;&gt;Table 3&lt;/a&gt;.
In other words,
they happen to be the same four IP addresses used by the injector 1,
and they are used to poison 88 domains:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cut -d&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;;&amp;#34;&lt;/span&gt; -f2 injector1.csv | sort | uniq
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;details&gt;
  &lt;summary&gt;Click to see the 88 domains&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.8800.org
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.expressvpn.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.as
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.bf
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.bi
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.bj
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.bs
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.bt
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.by
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.cat
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.cd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.cg
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.ci
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.cm
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.co.ao
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.co.ck
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.co.ls
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.com.af
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.com.ag
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.com.ai
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.com.ar
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.com.bd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.com.bz
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.com.cu
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.com.do
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.com.eg
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.com.et
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.com.fj
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.com.gh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.com.gi
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.com.lb
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.com.ly
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.com.mm
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.com.ng
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.com.np
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.com.pg
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.com.pk
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.com.py
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.com.sb
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.com.sl
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.com.tj
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.com.vc
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.co.mz
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.co.tz
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.co.ug
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.co.uz
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.co.ve
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.co.zw
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.cv
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.dj
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.ga
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.gg
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.gl
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.gm
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.gp
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.gy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.hn
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.ht
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.im
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.iq
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.it
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.je
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.kg
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.ki
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.la
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.li
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.me
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.mg
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.ml
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.mn
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.mv
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.mw
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.ne
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.pn
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.ps
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.rs
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.sm
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.sn
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.so
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.sr
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.st
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.td
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.tg
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.tl
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.tm
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.to
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.google.ws
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;www.kuniao.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;
&lt;p&gt;As listed above,
most of these domains are related to Google,
with three exceptions to be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;www.kuniao.com&lt;/code&gt; (see &lt;a href=&#34;https://github.com/net4people/bbs/issues/17&#34;&gt;the related censorship event&lt;/a&gt;),&lt;/li&gt;
&lt;li&gt;&lt;code&gt;www.8800.org&lt;/code&gt; (&lt;a href=&#34;https://web.archive.org/web/*/8800.org&#34;&gt;archive&lt;/a&gt;),&lt;/li&gt;
&lt;li&gt;&lt;code&gt;www.expressvpn.com&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;characterize-the-listening-behavior-on-g1-ips&#34;&gt;Characterize the listening behavior on G1 IPs&lt;/h3&gt;
&lt;p&gt;The behaviors of the censoring machine are rather simple.
It spoofs these four &lt;code&gt;listening IPs&lt;/code&gt; and:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When client sends a packet with &lt;code&gt;SYN&lt;/code&gt; flag turned on &lt;strong&gt;AND&lt;/strong&gt; &lt;code&gt;PSH&lt;/code&gt; and &lt;code&gt;ACK&lt;/code&gt; flags turned off, it replies a &lt;code&gt;SYN+ACK&lt;/code&gt; packet.&lt;/li&gt;
&lt;li&gt;When client sends a packet with &lt;code&gt;PSH&lt;/code&gt; flag turned on, it replies a single &lt;code&gt;RST&lt;/code&gt; packet.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can also quickly test it using &lt;code&gt;Nping&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nping -c &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; --tcp 59.24.3.174 -p65535 --flags S
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nping -c &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; --tcp 59.24.3.174 -p65535 --flags P
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;While, in theory, the GFW has the capability of replying to clients&amp;rsquo; requests,
we did not observe such behaviors.
The GFW appears to tear down connections regardless of the data sent by our clients.
We tested this by trying to establish typical HTTP or TLS connections with these four IP addresses from China.
The three commands we used are as follows:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# HTTP GET&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wget http://59.24.3.174 -v
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# TLS with SNI=www.google.com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;openssl s_client -servername www.google.com -tlsextdebug -msg -connect 59.24.3.174:443
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# TLS with SNI=www.baidu.com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;openssl s_client -servername www.baidu.com -tlsextdebug -msg -connect 59.24.3.174:443
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;As a result,
all our connections were RSTed after successful handshakes.&lt;/p&gt;
&lt;h3 id=&#34;the-intention-of-the-censor&#34;&gt;The intention of the censor&lt;/h3&gt;
&lt;p&gt;We have two different conjectures on why the censor behaves this way.
The first conjecture is that the censor simply intends to disrupt TCP connections to these four IP addresses.
Indeed, the forged &lt;code&gt;SYN+ACK&lt;/code&gt;s and &lt;code&gt;RST&lt;/code&gt;s are reminiscent of
the GFW&amp;rsquo;s obsolete way to disrupt TCP connections during residual censorship period.
(Note, we say &amp;ldquo;obsolete&amp;rdquo; because the GFW does not send any packet during the 60-second residual censorship anymore as of November 10, 2020. We triggered the residual censorship by using a TLS ClientHello with sensitive SNI.)
As introduced by Wang et al. in the &lt;a href=&#34;https://censorbib.nymity.ch/pdf/Wang2017a.pdf#page=2&#34;&gt;TCP connection reset section&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;During this period, any SYN packet between the two end-hosts will
trigger a forged SYN/ACK packet with a wrong sequence number from the GFW,
which will obstruct the legitimate handshake;
any other packets will trigger forged RST and RST/ACK packets,
which will tear down the connection.&amp;rdquo;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;However,
the first conjecture cannot explain why the censor spends extra resources sending packets,
instead of simply dropping or null-routing all packets to these four IP addresses.&lt;/p&gt;
&lt;p&gt;The second conjecture is that,
by pretending to be these injected IP addresses to accept TCP handshakes,
&lt;strong&gt;the GFW can seduce clients to send data that would never be sent if the handshakes were not accepted&lt;/strong&gt;.
The censor can thus learn more about the effect of its censorship and also the intention of clients.
Specifically,
the connection attempts to these injected IP addresses
provides the censor with a different angel to measure the effectiveness of its DNS censorship.
The censor would have underestimated the number of DNS censorship events,
if it merely counts the number of sensitive DNS queries it observes at the Internet backbone or border.
This is because the majority of the Chinese clients use a local resolver,
and their sensitive DNS queries are answered by local resolvers with poisoned cache,
not by the GFW.
Thus, by observing the traffic to these injected IP addresses,
the censor will have a better idea on how many clients received DNS poisoned answers.
Furthermore,
by seducing the censored clients to send more data than a &lt;code&gt;SYN&lt;/code&gt; packet,
the GFW can learn more on what the clients would do if its connection was not censored.&lt;/p&gt;
&lt;p&gt;We remind our readers that,
although the conjectures may sound reasonable,
we have no way to validate or falsify them.&lt;/p&gt;
&lt;h3 id=&#34;the-censoring-machine-appears-to-be-stateless&#34;&gt;The censoring machine appears to be stateless&lt;/h3&gt;
&lt;p&gt;Many evidences suggest that the censoring machine appears to be stateless,
and its implementation is crude.
For example:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The censoring machine never times out;&lt;/li&gt;
&lt;li&gt;The censoring machine does not retransmit &lt;code&gt;SYN+ACK&lt;/code&gt;, even if the client does not &lt;code&gt;ACK&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The censoring machine does not respond to &lt;code&gt;SYN+ACK&lt;/code&gt; with &lt;code&gt;RST&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The censoring machine does not validate the IP and/or TCP checksum&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;First,
to measure the timeout value of the censoring machine,
we used the following command to connect to one of the &lt;code&gt;listening IPs&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nc -v 59.24.3.174 &lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After &lt;code&gt;Connection to 59.24.3.174 443 port [tcp/https] succeeded!&lt;/code&gt;,
we intentionally did not send any data for &lt;strong&gt;more than 30 minutes&lt;/strong&gt;;
however, the censoring machine did not send any packet to close the connection.
As soon as we sent a chunk of data &lt;code&gt;TEST&lt;/code&gt; via nc,
the censoring machine sent a single RST to tear down the connection.
This experiment shows that the censoring machine either does not timeout,
or has an unusually large timeout value.
If the censoring machine was indeed stateful,
having such a large timeout value would have easily drained up its resources.&lt;/p&gt;
&lt;p&gt;Second,
the censoring machine does not retransmit SYN+ACK,
even if the client does not ACK.
One can test it with commands like these:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# capture traffic usig tcpdump,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# as nping will not show if RST was sent by kernel&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo tcpdump -n host 59.24.3.174 and port &lt;span style=&#34;color:#ae81ff&#34;&gt;442&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;## open another terminal:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# drop RST sent by kernel due to unexpected SYN+ACK&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo iptables -A OUTPUT -p tcp --tcp-flags RST RST -s &lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;hostname -I&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt; -j DROP
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# send SYN packets&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nping -c &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; --tcp 59.24.3.174 -p443 --flags S
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# delete the dropping RST rule&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo iptables -D OUTPUT -p tcp --tcp-flags RST RST -s &lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;hostname -I&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt; -j DROP
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Third,
the censoring machine does not respond to unexpected &lt;code&gt;SYN+ACK&lt;/code&gt; with &lt;code&gt;RST&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Sending SA to open ports of listening IPs will not get RST&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nping -c &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; --tcp 59.24.3.174 -p443 --flags SA
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Sending SA to open ports of common TCP server will get RST&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nping -c &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; --tcp 1.1.1.1 -p443 --flags SA
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Forth,
the censoring machine replies a &lt;code&gt;SYN+ACK&lt;/code&gt;,
even if the &lt;code&gt;SYN&lt;/code&gt; packets has a wrong IP and/or TCP checksum:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nping -c &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; --tcp 59.24.3.174 -p443 --flags S --badsum-ip --badsum
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;All evidences above suggest the TCP implementation of the censoring machine is simple and crude.
Indeed,
sometimes, &lt;a href=&#34;https://en.wikipedia.org/wiki/Worse_is_better&#34;&gt;&amp;ldquo;worse is better&amp;rdquo;&lt;/a&gt;.
If all the censor needs is to seduce TCP handshakes,
then this stateless implementation means simplicity in code,
efficiency in resources, less fingerprints, and a smaller attack surface.&lt;/p&gt;
&lt;h3 id=&#34;fingerprint-the-packets-by-g1&#34;&gt;Fingerprint the packets by G1&lt;/h3&gt;
&lt;p&gt;We fuzzed and sent packets to these &lt;code&gt;listening IPs&lt;/code&gt; using the following script:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python3&#34; data-lang=&#34;python3&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/usr/bin/env python3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; scapy.all &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;packet&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;Ether() &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; fuzz(IP(dst&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;59.24.3.174&amp;#34;&lt;/span&gt;)) &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; fuzz(TCP())
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sendp(packet, loop&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;We then compare the packets forged and replied from the censoring machine.&lt;/p&gt;
&lt;p&gt;On IP-layer, the fingerprints of the forged replies are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Type of service (&lt;a href=&#34;https://en.wikipedia.org/wiki/Type_of_service&#34;&gt;ToS&lt;/a&gt;): fixed value &lt;code&gt;0x68&lt;/code&gt; (&lt;code&gt;throughput&lt;/code&gt; bit is turned on).&lt;/li&gt;
&lt;li&gt;IPID: same as the triggering packet.&lt;/li&gt;
&lt;li&gt;IP flag: the &lt;code&gt;Don&#39;t Fragment (DF)&lt;/code&gt; bit is same as the triggering packet; the censoring machine does not respond to packets with the &lt;code&gt;More Fragments (MF)&lt;/code&gt; bit turned on.&lt;/li&gt;
&lt;li&gt;IP TTL: same as the TTL value of the triggering packet &lt;strong&gt;received&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On TCP-layer, the fingerprints of the forged replies are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;TSVal (of SYN+ACK): same as the SYN packet.&lt;/li&gt;
&lt;li&gt;TCP Sequence number (of SYN+ACK): random from &lt;code&gt;0&lt;/code&gt; to &lt;code&gt;2^32&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;TCP flag: if the triggering packet has &lt;code&gt;SYN&lt;/code&gt; bit turned on &lt;strong&gt;AND&lt;/strong&gt; &lt;code&gt;PSH&lt;/code&gt; and &lt;code&gt;ACK&lt;/code&gt; bits turned off, then the flag is a copy of the triggering packet with the &lt;code&gt;ACK&lt;/code&gt; bit turned on; if the triggering packets has &lt;code&gt;PSH&lt;/code&gt; bit turned on, then the flag is a copy of the triggering packet with &lt;code&gt;RST&lt;/code&gt; bit turned on, and with the &lt;code&gt;ACK&lt;/code&gt;, &lt;code&gt;PSH&lt;/code&gt;, &lt;code&gt;SYN&lt;/code&gt;, &lt;code&gt;FIN&lt;/code&gt; bits turned off.&lt;/li&gt;
&lt;li&gt;TCP window size: same as the triggering packet.&lt;/li&gt;
&lt;li&gt;Urgent pointer: same as the triggering packet.&lt;/li&gt;
&lt;li&gt;TCP option: almost same as the triggering packet, except that, if MSS specified in the triggering packet, the MSS is fixed value &lt;code&gt;1424&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you want to do a quick sanity check to see
if the censoring machine has the same fingerprints in your area,
you may use commands similar to this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nping -c &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; --tcp 59.24.3.174 -p443 --id &lt;span style=&#34;color:#ae81ff&#34;&gt;3333&lt;/span&gt; --tos 0x02 -df --flags S --win &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; -v4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;We also note that,
some seeming randomly fingerprints of the GFW will exhibits certain pattern,
only when the GFW is probed at a very fast speed.
One example is the &lt;a href=&#34;https://gfw.report/publications/foci20_dns/dns.pdf#page=5&#34;&gt;Figure 4.a by Anonymous et al.&lt;/a&gt;.
We thus SYN-flooded one of the &lt;code&gt;listening IPs&lt;/code&gt; (for less than 2 seconds).
Although,
we received GFW&amp;rsquo;s forged &lt;code&gt;SYN+ACK&lt;/code&gt; at a speed of 15,000 packets per second;
as shown in the figure below,
the TCP sequence numbers still appear to be random.&lt;/p&gt;
&lt;!-- TODO: add figure and code directory. --&gt;
&lt;h3 id=&#34;load-balancing&#34;&gt;Load balancing&lt;/h3&gt;
&lt;p&gt;We find that &lt;code&gt;SYN&lt;/code&gt; or &lt;code&gt;PSH&lt;/code&gt; packets do not always trigger the censoring machine to send the responding &lt;code&gt;SYN+ACK&lt;/code&gt; or &lt;code&gt;RST&lt;/code&gt;.
Further investigation reveals that,
for a given &lt;code&gt;(srcIP, dstIP, srcPort, dstPort)&lt;/code&gt; tuple,
whether the packets can trigger the censoring machine or not is deterministic.
In addition,
when fixing the &lt;code&gt;(srcIP, dstIP, dstPort)&lt;/code&gt;, and enumerating all &lt;code&gt;srcPort&lt;/code&gt; from 1 to 65535,
almost exactly &lt;code&gt;75%&lt;/code&gt; (min: &lt;code&gt;49132/65535&lt;/code&gt;; max: &lt;code&gt;491363/65535&lt;/code&gt;) of the &lt;code&gt;srcPort&lt;/code&gt;s can trigger the censoring machine.
This result suggests that the censoring machine employs some kind of load-balancing.&lt;/p&gt;
&lt;p&gt;We could not figure out the exact load balancing algorithm used;
but &lt;a href=&#34;&#34;&gt;this directory&lt;/a&gt; includes the code,
data, and analysis we have done.
We encourage you to explore this intriguing problem.&lt;/p&gt;
&lt;h3 id=&#34;location-of-the-censoring-machine&#34;&gt;Location of the censoring machine&lt;/h3&gt;
&lt;p&gt;As introduced above,
the packets sent by the censoring machine has the same IP TTL value as
the triggering packet &lt;strong&gt;received&lt;/strong&gt;.
This IP TTL mirroring behavior also exits in some DNS poisoning injectors of the GFW (see &lt;a href=&#34;https://gfw.report/publications/foci20_dns/dns.pdf#page=6&#34;&gt;Figure 8&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;One important implication of IP TTL mirroring is that
the censorship machine appears to be much further away from the testing host
than it actually is.
We took this into consideration,
and find the censoring machine is 8-9 hosts away from our host.
We then used limited-TTL approach to locate the DNS injection points from this host to a IP addresses within the same &lt;code&gt;/30&lt;/code&gt; of the G2 IP addresses.
We find the censoring machine may share the same location with the DNS injection points.
We say &amp;ldquo;may&amp;rdquo; because we could not accurately locate the censoring machine due to asymmetric routing.&lt;/p&gt;
&lt;!-- DNS: --&gt;
&lt;!-- TTL=8 censored, --&gt;
&lt;!-- TTL=7 not censored, --&gt;
&lt;p&gt;We also find that connections to these &lt;code&gt;listening IPs&lt;/code&gt; are not under DNS or SNI censorship;
while the IP addresses within the same &lt;code&gt;/30&lt;/code&gt; are under censorship.
For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 46.82.174.69 is one of the listening IPs and we get no forged response.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dig @46.82.174.69 www.google.sm
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 46.82.174.70 is within the same /30 and we get forged responses.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dig @46.82.174.70 www.google.sm
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;g2-ips&#34;&gt;G2 IPs&lt;/h2&gt;
&lt;p&gt;The 7 IP addresses have a few closed ports; and all other ports are filtered when tested from China.
When SYN pinging theses addresses from the US,
all 65535 ports appear to be &lt;code&gt;filtered&lt;/code&gt;.
We SYN-pinged these ports with limited TTL.
The result shows that we received &lt;code&gt;RST&lt;/code&gt;s even before reaching the actual IP addresses,
indicating these &lt;code&gt;RST&lt;/code&gt;s were actually sent by the GFW.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;closed&lt;/code&gt; ports are listed as follows:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;118.5.49.6,1723,closed,pptp
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;188.5.4.96,1723,closed,pptp
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;203.98.7.65,1080,closed,socks
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;203.98.7.65,1723,closed,pptp
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;208.101.48.171,5222,closed,xmpp-client
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;67.228.126.62,443,closed,https
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;8.7.198.45,443,closed,https
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;8.7.198.45,1080,closed,socks
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;8.7.198.45,1723,closed,pptp
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;93.46.8.89,443,closed,https
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Note that &lt;code&gt;118.5.49.6&lt;/code&gt; and &lt;code&gt;188.5.4.96&lt;/code&gt; look very similar,
as if they were carelessly picked by someone.&lt;/p&gt;
&lt;p&gt;Among the 10 &lt;code&gt;closed&lt;/code&gt; ports,
the typical services running on these ports include PPTP, SOCKS, xmpp-client and HTTPS.
&lt;a href=&#34;https://en.wikipedia.org/wiki/Point-to-Point_Tunneling_Protocol&#34;&gt;PPTP&lt;/a&gt; and SOCKS can be used as censorship circumvention protocols.&lt;/p&gt;
&lt;h3 id=&#34;censoring-machine-appears-to-be-on-path&#34;&gt;Censoring machine appears to be on-path&lt;/h3&gt;
&lt;p&gt;We find we could still get ICMP TTL=0 messages while the initial TTL is large enough to trigger three &lt;code&gt;RST&lt;/code&gt;s.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nping -c &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; --tcp 203.98.7.65 -p1080  --flags S --ttl &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SENT (0.0019s) TCP host:19825 &amp;gt; 203.98.7.65:1080 S ttl=10 id=951 iplen=40  seq=18295394 win=1480
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;RCVD (0.2008s) TCP 203.98.7.65:1080 &amp;gt; host:19825 RA ttl=251 id=20366 iplen=40  seq=0 win=3509
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;RCVD (0.2008s) TCP 203.98.7.65:1080 &amp;gt; host:19825 RA ttl=251 id=20366 iplen=40  seq=0 win=3509
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;RCVD (0.2008s) TCP 203.98.7.65:1080 &amp;gt; host:19825 RA ttl=251 id=20366 iplen=40  seq=0 win=3509
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;RCVD (0.2008s) ICMP [202.97.90.114 &amp;gt; host TTL=0 during transit (type=11/code=0) ] IP [ttl=243 id=17562 iplen=96 ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SENT (1.0033s) TCP host:19825 &amp;gt; 203.98.7.65:1080 S ttl=10 id=951 iplen=40  seq=1829538994 win=1480
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;RCVD (1.2208s) ICMP [202.97.90.114 &amp;gt; host TTL=0 during transit (type=11/code=0) ] IP [ttl=243 id=17732 iplen=96 ]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This suggests that the on-path GFW injects the three &lt;code&gt;RST&lt;/code&gt;s,
without dropping those &lt;code&gt;SYN&lt;/code&gt; packets.&lt;/p&gt;
&lt;!-- TODO: finish fingerprint --&gt;
&lt;!-- ### Fingerprint the packets by G2 --&gt;
&lt;!-- For those RST connections: --&gt;
&lt;!-- What’s the IPID etc? --&gt;
&lt;!-- Note the max TTL is 255 --&gt;
&lt;!-- GFW -&gt; 254 -&gt; 253 -&gt; 252 -&gt; Host --&gt;
&lt;!-- Host-&gt;  6  -&gt; 5   -&gt; 4   -&gt; 3 -&gt; 2 -&gt; 1 -&gt; GFW --&gt;
&lt;!-- Three RST seem to be the same, different from the three injectors of different DNS censoring machine. --&gt;
&lt;!-- , same TTL=251, same fixed value, but not sure why, win fixed but not same, --&gt;
&lt;!-- But interestingly, TTL=6 no response, TTL=7 resposne --&gt;
&lt;!-- Maybe asymmetric routing, or maybe absorbing and injection points are different. --&gt;
&lt;!-- S -&gt; R --&gt;
&lt;!-- SA -&gt; RA --&gt;
&lt;!-- SF -&gt; RA --&gt;
&lt;!-- SR -&gt; none --&gt;
&lt;!-- SP -&gt; RA --&gt;
&lt;!-- P -&gt; none --&gt;
&lt;!-- F -&gt; none --&gt;
&lt;!-- R -&gt; none --&gt;
&lt;!-- U -&gt; none --&gt;
&lt;h3 id=&#34;residual-censorship-on-g2-ips&#34;&gt;Residual censorship on G2 IPs&lt;/h3&gt;
&lt;p&gt;There is a 31-second residual censorship after the GFW sends the &lt;code&gt;RST&lt;/code&gt;s.
During this period of time,
the GFW does not send &lt;code&gt;RST&lt;/code&gt;s to our &lt;code&gt;SYN&lt;/code&gt;s if our &lt;code&gt;SYN&lt;/code&gt;s have the same &lt;code&gt;(srcIP, dstIP, srcPort, dstPort)&lt;/code&gt; tuple.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nping -c &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; --tcp 118.5.49.6 -p1723 -g10001 --flags S
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SENT (0.0020s) TCP host:10001 &amp;gt; 118.5.49.6:1723 S ttl=64 id=45322 iplen=40  seq=3600506539 win=1480
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;RCVD (0.2010s) TCP 118.5.49.6:1723 &amp;gt; host:10001 RA ttl=251 id=29186 iplen=40  seq=0 win=2857
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;RCVD (0.2010s) TCP 118.5.49.6:1723 &amp;gt; host:10001 RA ttl=251 id=29186 iplen=40  seq=0 win=2857
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;RCVD (0.2010s) TCP 118.5.49.6:1723 &amp;gt; host:10001 RA ttl=251 id=29186 iplen=40  seq=0 win=2857
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SENT (1.0022s) TCP host:10001 &amp;gt; 118.5.49.6:1723 S ttl=64 id=45322 iplen=40  seq=3600506539 win=1480
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SENT (2.0037s) TCP host:10001 &amp;gt; 118.5.49.6:1723 S ttl=64 id=45322 iplen=40  seq=3600506539 win=1480
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SENT (3.0051s) TCP host:10001 &amp;gt; 118.5.49.6:1723 S ttl=64 id=45322 iplen=40  seq=3600506539 win=1480
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;....
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SENT (31.0406s) TCP host:10001 &amp;gt; 118.5.49.6:1723 S ttl=64 id=45322 iplen=40  seq=3600506539 win=1480
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;RCVD (31.2090s) TCP 118.5.49.6:1723 &amp;gt; host:10001 RA ttl=251 id=29359 iplen=40  seq=0 win=2904
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;RCVD (31.2090s) TCP 118.5.49.6:1723 &amp;gt; host:10001 RA ttl=251 id=29359 iplen=40  seq=0 win=2904
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SENT (32.0410s) TCP host:10001 &amp;gt; 118.5.49.6:1723 S ttl=64 id=45322 iplen=40  seq=3600506539 win=1480
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;RCVD (32.0411s) TCP 118.5.49.6:1723 &amp;gt; host:10001 RA ttl=251 id=29359 iplen=40  seq=0 win=2904
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;g3-ips&#34;&gt;G3 IPs&lt;/h2&gt;
&lt;p&gt;Different from the IP addresses in group 1 and group 2,
we find no evidence that the group 3 IP addresses are spoofed by the GFW.
However,
we indeed find packets to some of their ports are dropped by the GFW.&lt;/p&gt;
&lt;p&gt;Specifically,
we first SYN pinged all their ports from both China and the US:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nmap 31.13.64.49 31.13.72.54 31.13.85.1 -p1-65535 -Pn --min-rate&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;5000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The result from China is:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;31.13.64.49  (443 open; other filtered)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;31.13.72.54  (80,443 open; 843,5222,5228,8883 closed; other filtered)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;31.13.85.1   (80,443 open; 843,5222,8883 closed; other filtered)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The result from the US is:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;31.13.64.49  (80,443 open; 843,5222,5228,8883 closed, other filtered)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;31.13.72.54  (80,443 open; 843,5222,5228,8883 closed; other filtered)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;31.13.85.1   (80,443 open; 843,5222,5228,8883 closed; other filtered)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;We repeated the SYN ping several times to eliminate the inconsistency due to packet losses;
however, there are still some ports unreachable from China.
Further investigation using a traceroute-like SYN-ping,
we find the packets to those ports were dropped by the router at the CHINANET backbone.
For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# This will get ICMP TTL=0 from the router at the CHINANET backbone&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nping -c &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; --tcp 31.13.64.49 -p443  --flags S  -ttl &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# But this will not get such message, suggesting packets drop&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nping -c &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; --tcp 31.13.64.49 -p80  --flags S  -ttl &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For those ports that are reachable from China,
we tried to establish HTTP or TLS connections to them.
The result shows that the client can successfully got the corresponding &lt;code&gt;HTTP 400 Bad Request&lt;/code&gt;
or the TLS certificate from the server,
without being disrupted by the GFW.
The commands we used are as follows:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wget http://31.13.85.1:80
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;openssl s_client -tlsextdebug -msg -connect 31.13.85.1:443
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;our-suggestion&#34;&gt;Our suggestion&lt;/h2&gt;
&lt;p&gt;We suggest users encrypt their DNS traffic whenever possible.
At the same time,
one can use iptables rules to block all outgoing traffic to these IPs
to avoid their connection attempts being logged by the GFW.
Blocking traffic to these IP addresses do little harm to your Internet connectivity,
as theses IP addresses are blocked, spoofed or filtered anyway.
Specifically, one can try executing the following commands to add the iptables rules:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Get the 215 injected IP addresses&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wget https://gfw.report/publications/foci20_dns/foci20_anonymous/injected_ips/ips_after_drop.txt
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# source: https://www.cyberciti.biz/faq/iptables-read-and-block-ips-subnets-from-text-file/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;### Setup our black list ###&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Create a new chain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$IPT -N droplist
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Filter out comments and blank lines&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# store each ip or subnet in $ip&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt; IFS&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; read -r p &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; -n &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$p&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Append everything to droplist&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    iptables -A droplist -s &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$ip&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; -j LOG --log-prefix &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; Drop Bad IP List &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    iptables -A droplist -s &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$ip&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; -j DROP
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt; &amp;lt;ips_after_drop.txt
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Finally, insert or append our black list&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -I INPUT -j droplist
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -I OUTPUT -j droplist
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -I FORWARD -j droplist
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;limitations&#34;&gt;Limitations&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;All measurement experiments conducted from China were done using one vantage point. This means we are not able to find any Ge-location inconsistency if it exists. We encourage you to conduct your measurement experiments and report what you observe.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;acknowledgement&#34;&gt;Acknowledgement&lt;/h2&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>How China Detects and Blocks Shadowsocks</title>
        <link>https://gfw.report/talks/imc20/en/</link>
        <pubDate>Tue, 27 Oct 2020 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/talks/imc20/en/</guid>
        
        <description>&lt;p&gt;This is the talk for our paper &lt;a href=&#34;./publications/imc20/en&#34;&gt;&lt;em&gt;How China Detects and Blocks Shadowsocks&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can select English or Chinese subtitle by clicking the &lt;code&gt;cc&lt;/code&gt; button on the video.&lt;/p&gt;


  &lt;video controls id=video&gt;
    &lt;source src=./talks/imc20/video/IMC2020-212-long.origin.mp4 type=&#34;video/mp4&#34;&gt;
    &lt;track default label=English kind=captions srclang=en src=./talks/imc20/video/en.vtt&gt;
    &lt;track default label=Chinese kind=captions srclang=zh src=./talks/imc20/video/zh.vtt&gt;
    &lt;p&gt;
	&lt;a href=./talks/imc20/video/IMC2020-212-long.mp4&gt;Video&lt;/a&gt;
    &lt;/p&gt;
  &lt;/video&gt;


&lt;p&gt;This is &amp;ldquo;How China Detects and Blocks Shadowsocks&amp;rdquo;,
by GFW Report, Jan Beznazwy and Amir Houmansadr.
I&amp;rsquo;m David Fifield and I&amp;rsquo;m presenting this work on behalf of the authors,
most of whom are anonymous.
I have experience researching in this field and
the authors have acquainted me thoroughly with this work.&lt;/p&gt;
&lt;p&gt;The grand summary of this research is that
the Great Firewall of China detects and blocks Shadowsocks
using a combination of passive traffic analysis and active probing.
And let&amp;rsquo;s talk about what those terms mean.&lt;/p&gt;
&lt;p&gt;Shadowsocks is an encrypted proxy protocol and
it&amp;rsquo;s designed to be difficult to detect.
It&amp;rsquo;s really popular in China as a means of censorship circumvention,
a way of getting around the Great Firewall.
And the Great Firewall for its part,
as part of its general mission of information control
tries to find and block all types of different proxy servers, Shadowsocks included.
And in fact, since about May 2019, there have been anecdotal reports of people&amp;rsquo;s
Shadowsocks servers being blocked from China
sometimes during politically sensitive times,
but without a good explanation.
This research helps provide an explanation for how this has been happening.&lt;/p&gt;
&lt;p&gt;Now in Shadowsocks, the connection between the client and the server is encrypted
and furthermore it&amp;rsquo;s encrypted in a way that
it reveals only ciphertext to an observer.
So unlike TLS, for example, which has plaintext framing bytes,
there&amp;rsquo;s nothing like that in Shadowsocks.
If you flatten out a Shadowsocks stream,
it looks like just a sequence of uniformly random bytes and
that&amp;rsquo;s by design.
This quality means that it&amp;rsquo;s not possible to, for example,
write a simple regular expression that will match all Shadowsocks traffic,
you have to work a little harder than that.
Now if you&amp;rsquo;re thinking that this randomness, this lack of a fingerprint
is itself a kind of fingerprints,
you&amp;rsquo;re absolutely right.
And in fact this research shows that
the Great Firewall uses the entropy and the length of packets in a TCP stream
as part of its first step in classifying Shadowsocks traffic.&lt;/p&gt;
&lt;p&gt;Now what do I mean by active probing?
This research shows that
the Great Firewall discovers Shadowsocks servers in a two-step process:
the first step is passive and the second step is active.
In the first step, it looks for possible or potential Shadowsocks connections;
and in the second step,
it connects to the servers involved in those connections from its own IP addresses
as if it were a Shadowsocks client and watches how the server responds.
You can think of step 1 as guess and step 2 as confirm.&lt;/p&gt;
&lt;p&gt;Now you can understand this process of active probing as a way of
increasing precision or reducing cost in network classification.
If you were to write a purely passive classifier for Shadowsocks,
it may yield unacceptably high false positives.
On the other hand,
if you were to try to active probe every single connection
that passes through the firewall
that may be more probes than you can manage to send.
So you can think of step one as being a sort of pre-filter for step two.&lt;/p&gt;
&lt;p&gt;Now this is certainly not the first time that active probing has been documented
to be used in China against censorship circumvention protocols.
There is research going back all the way to 2011,
showing it being used against Tor, against various VPN protocols like that.
But the level of detection now in using Shadowsocks
reaches a new heights of sophistication.&lt;/p&gt;
&lt;p&gt;How do we know all this?
Well, the authors investigated it in the way you might expect.
They ran an experiment,
they set up their own Shadowsocks servers outside of China;
They set up their own Shadowsocks clients inside China and then
they connected to their own servers through the Firewall and
watched for what else connected to those same servers.
They also set up some control servers and never connected to them,
just to be able to distinguish the connection triggered active probes
from random internet scanning.
And they ran this experiment for about four months.
Now there are many many implementations of Shadowsocks out there.
For this experiment, the authors chose two of the most popular,
which are called Shadowsocks-libev and Outline.
These are two independent implementations of the same protocol.&lt;/p&gt;
&lt;p&gt;The main observations of the four month server experiment are that
active probers send a variety of probe types,
some of them look like replay attacks and some of them do not.
The ones that are replays may be
stored and replayed after a surprisingly long delay.
The ones that are not replays have a peculiar distribution of packet lengths.
And active probes come from apparently thousands of different source IP addresses.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s talk about the replay based probes.
First these are copies of the author&amp;rsquo;s own legitimate connection
from their authenticated Shadowsocks clients.
And specifically, they&amp;rsquo;re copies of the first data packets
in an authenticated Shadowsocks connection.
Sometimes the replay is identical, sometimes it has certain bytes changed,
one or two or maybe a dozen bytes changed,
but usually at fixed positions.&lt;/p&gt;
&lt;p&gt;So what could be the intention behind sending replay probes?
Well, potentially it&amp;rsquo;s exploiting a vulnerability in the Shadowsocks protocol.
See the protocol doesn&amp;rsquo;t specify what should happen when
a server gets a replay of a previous properly authenticated client connection.
Now if an implementation doesn&amp;rsquo;t do any sort of replay filtering,
any prevention of replay attacks,
what&amp;rsquo;s likely to happen is that
it will do the exact same proxy request
that it did earlier for the authenticated client,
and send back to the active prober a big blob of ciphertext.
Now the active prober won&amp;rsquo;t be able to decrypt that blob
because it doesn&amp;rsquo;t know the password for that Shadowsocks server.
But the fact that it received a large amount of ciphertext back is a giveaway
that the server is in fact Shadowsocks.
And even in implementations that try to filter out or prevent replays,
there are certain edge conditions in how connections are closed, for example,
that can be characteristic of Shadowsocks.
And the fact that
certain bytes are sometimes changed in these replay based probes
may be an attempt to evade implementations that have a replay filter.&lt;/p&gt;
&lt;p&gt;Replay-based probes are convenient for analysis
because it&amp;rsquo;s easy to match the active probe with the legitimate connection that
it is a replay of.
It makes it possible to, for example, measure how long the delay is
between when a legitimate connection is sent and then
replays based on that connection are sent.
So take a look at this graph,
this is a CDF.
Because a probe may be replayed more than once,
the darker line here only considers the first replay,
and then the paler line considers all replays.
And as you can see,
for first replays anyway at least around 25 percent of replay probes
come within one second, so almost immediately;
but there is a surprisingly long tail and
some replay probes are sent after a delay of minutes, hours, even days.&lt;/p&gt;
&lt;p&gt;Now the non-replay probes:
these ones had a payload that was to all appearances random;
but didn&amp;rsquo;t match any prior legitimate connection.
And you notice there&amp;rsquo;s a very strange distribution of packet lengths:
looking at the ones of length below 50,
you&amp;rsquo;ll see that they&amp;rsquo;re roughly uniformly distributed
in what I&amp;rsquo;ll call triplets centered on lengths 8, 12, 16, 22, 33, 41, and 49.
So the triplet at 8, for example, that represents
a length of 7, a length of 8, and a length of 9.
All being about equally likely to be sent.
Besides those notice the different scales here,
the great majority of the non-replay probes had length exactly 221 bytes,
and this is an interesting and thought-provoking distribution of packet lengths.&lt;/p&gt;
&lt;p&gt;The authors think they have at least a partial explanation
for why active probers send probes of these lengths.
You see when you send random unauthenticated data to a Shadowsock server,
the server may react differently depending on how much data you send it.
So if you send too little data,
the server is going to wait to receive the rest of the data that it&amp;rsquo;s expecting,
and eventually timeout.
But if you send beyond that threshold,
the server will attempt to authenticate the data that it&amp;rsquo;s received,
be unable to authenticate it, and close the connection.&lt;/p&gt;
&lt;p&gt;Now I won&amp;rsquo;t get in too far into the details here,
but you can configure Shadowsocks with a variety of different ciphers
and initialization vectors of different lengths,
and things like that.&lt;/p&gt;
&lt;p&gt;But you&amp;rsquo;ll notice in this table that
those triplets many of them straddle what I&amp;rsquo;ll call byte thresholds,
between where the server times out and
when it closes the connection with a RST or otherwise.
So looking at the first row here,
if you send a server so configured a packet of seven bytes or eight bytes,
it&amp;rsquo;s going to time out but if you send it nine bytes,
you&amp;rsquo;ll get an immediate RST.&lt;/p&gt;
&lt;p&gt;So that&amp;rsquo;s a distinguishable difference in how the server reacts.
This analysis doesn&amp;rsquo;t fully explain the triplet distribution,
because, for example, the triplet at 32, 33, 34, and the one at 40, 41, 42,
don&amp;rsquo;t match up with any byte thresholds and neither does the 221.&lt;/p&gt;
&lt;p&gt;Alright, moving on to the origin of the probers.
Over those four months,
the authors&amp;rsquo; Shadowsock servers received over 50,000 active probes and
those came from over 12,000 different IP addresses,
which all geolocate to China.
So a consequence of this observation is that
it&amp;rsquo;s not possible to simply enumerate all the active prober IP addresses
and ban them from your server.
It also isn&amp;rsquo;t surprising because prior research studying active probing
has also found large numbers of IP addresses being used to send active probes.&lt;/p&gt;
&lt;p&gt;Now comparing the 12,000 IP addresses in this work,
with previously compiled lists of prober IP addresses,
there is not much overlap although there is some;
however this is not really that surprising,
because past research has found that there is a lot of churn in the IP addresses
used for active probing over time.&lt;/p&gt;
&lt;p&gt;Now despite the fact that there seemed to be
these thousands and thousands of different active probers,
it&amp;rsquo;s likely that they are all centrally managed by a small number of processes;
and the evidence for that comes from a TCP layer side channel,
namely the TCP timestamp.
So the TCP timestamp is a 32-bit counter that increases at a fixed rate,
and it&amp;rsquo;s attached to every outgoing TCP segments.
Different computers will generally not have synchronized TCP timestamp sequences,
because it&amp;rsquo;s going to be relative to usually when the computer was last rebooted,
and the counter was reset to zero or initialized to a random value.
So this graph shows the TCP timestamp sequences over time,
of a few thousand active prober IP addresses in one sub-experiment.
And you can see that even though they come from many different IP addresses,
they fall into a small number of distinct TCP timestamp sequences and
these sequences increase at typical rates so 250 HZ or 1,000 HZ.
That 1,000 hertz line goes through a cluster of about 20 data points
that are very closely spaced,
but within that space they&amp;rsquo;re much more like 1,000 HZ than 250 HZ.
So this TCP timestamp observation is consistent with prior work,
as are most of the other network layer fingerprints that
you might think to look of.&lt;/p&gt;
&lt;p&gt;Look at the exception is TCP source port numbers.
Prior work has found a roughly uniform distribution of source port numbers,
whereas in this work the authors found
a marked bias towards the default ephemeral port range used by Linux.&lt;/p&gt;
&lt;p&gt;So it&amp;rsquo;s clear that active probing of Shadowsocks is a phenomenon.
It happens what features is the Great Firewall looking for.
The authors investigated this aided by the fact that:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;replay-based probes are often sent almost immediately and&lt;/li&gt;
&lt;li&gt;they are copies only of the first data carrying packet.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So the authors designed an experiment to establish a TCP connection and then
send one TCP packet with a configurable entropy and a configurable packet length.
A configurable payload size and,
from this graph,
we can see although there isn&amp;rsquo;t a real sharp distinguishing threshold that
high entropy packets are more likely to be replayed than low entropy packets,
and the length of the packets matters as well.&lt;/p&gt;
&lt;p&gt;So here we have another CDF:
the gray line in the back is the author&amp;rsquo;s own trigger connections
and they tested packet lengths between 1 and 1,000 bytes uniformly distributed.
Now you can see the non-replay probes there with the expected peak at 221.
The replay probes only occur between in the interval of about 160 to 700 bytes lengths.
Outside that interval were almost never replayed and
even within that interval certain lengths,
are more likely to be replayed than others.&lt;/p&gt;
&lt;p&gt;So you&amp;rsquo;ll notice the replay line has a sort of chunky stair-step pattern,
and there&amp;rsquo;s actually some structure to that:
so between lengths about 160 to 384,
packets were more likely to be replayed if
they had a length whose remainder was 9 when divided by 16.
And in the interval about 264 to 700,
they were more likely to be replayed if
they had a length whose remainder was 2 when divided by 16.
And in the area where those two intervals overlap,
there was a mix of remainders 2 and 9.
The authors don&amp;rsquo;t have an explanation for this phenomenon,
it&amp;rsquo;s just an intriguing feature of the packet length distribution.&lt;/p&gt;
&lt;p&gt;Taking active probing of Shadowsocks as a given,
what can be done to mitigate it?
Well, because we know that the detection process is a two-step process,
it is sufficient to disrupt either of those two steps.
So you can either evade the passive traffic analysis,
or you can invade the active probing components.&lt;/p&gt;
&lt;p&gt;Evading the passive traffic analysis means
changing the features that the Great Firewall is looking for:
so entropy and packet lengths.
Changing entropy in Shadowsocks is not easy without
kind of fundamentally changing how the protocol works;
but with packet lengths, you have a little bit of leeway.
And, for example, newer versions of Outline will coalesce consecutive packets:
maybe something that would be sent as two packets
could send as one packet instead,
as a way of disguising the characteristic packet length distribution that
the Firewall may be looking for.&lt;/p&gt;
&lt;p&gt;Another interesting observation is with a tool called Brdgrd (Bridge Guard).
So this is software that you can install on a Shadowsocks server and
it causes clients to send smaller than usual packets.
When they&amp;rsquo;re in the early stages of their connection,
it does this by rewriting the server&amp;rsquo;s TCP window size.
Although there are some drawbacks and caveats to using Brdgrd with Shadowsocks,
it&amp;rsquo;s clear that here in this experiment while Brdgrd was active,
the incidence of active probing is notably diminished,
although not quite to zero.&lt;/p&gt;
&lt;p&gt;The other thing you can do to avoid detection is
changing the way that you respond to active probes.
So I showed you this table earlier and it was a little bit of a lie because
that table described the behavior of some older versions of Shadowsocks.
Some newer versions of Shadowsocks, partially as a result of this research,
try to disguise the distinction between timing out a connection and
terminating the connection.
So their reactions in newer versions of Shadowsocks looks more like this.
Now I don&amp;rsquo;t want to get into the details but the AEAD is the newer,
currently recommended version of the Shadowsocks protocol.
And you can see in this version,
in these two implementations,
at least the server always times out,
no matter the length of the unauthenticated probe.
In this older deprecated stream version of the protocol,
for compatibility reasons,
it&amp;rsquo;s not possible to completely eliminate that distinction,
but they have done it as far as possible.&lt;/p&gt;
&lt;p&gt;In summary, the Great Firewall of China detects Shadowsocks servers
using a combination of passive traffic analysis and active probing.
Probing is triggered by the first packet in a data connection and
it&amp;rsquo;s more likely when packets have high entropy or have certain payload lengths.
There are many different types of active probe:
some are replays, some are not.
Probes come from many IP addresses but they show signs of being centrally managed
and it&amp;rsquo;s possible to mitigate the effects of active probe into Shadowsocks
by disrupting either of the two steps in the classification process.&lt;/p&gt;
&lt;p&gt;Thank you for your attention if you have questions or comments,
it&amp;rsquo;s best to get in touch with the authors directly.
Source code and data for this research is available at the URL you see.&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>Shadowsocks是如何被检测和封锁的</title>
        <link>https://gfw.report/talks/imc20/zh/</link>
        <pubDate>Tue, 27 Oct 2020 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/talks/imc20/zh/</guid>
        
        <description>&lt;p&gt;这场演讲介绍了我们的IMC&#39;20论文: &lt;a href=&#34;./publications/imc20/zh&#34;&gt;&lt;em&gt;Shadowsocks是如何被检测和封锁的&lt;/em&gt;&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;你可以点击视频下方的&lt;code&gt;cc&lt;/code&gt;按钮来选择中文或英文字幕。&lt;/p&gt;


  &lt;video controls id=video&gt;
    &lt;source src=./talks/imc20/video/IMC2020-212-long.origin.mp4 type=&#34;video/mp4&#34;&gt;
    &lt;track default label=Chinese kind=captions srclang=zh src=./talks/imc20/video/zh.vtt&gt;
    &lt;track default label=English kind=captions srclang=en src=./talks/imc20/video/en.vtt&gt;
    &lt;p&gt;
	&lt;a href=./talks/imc20/video/IMC2020-212-long.mp4&gt;Video&lt;/a&gt;
    &lt;/p&gt;
  &lt;/video&gt;


&lt;p&gt;这是关于&amp;quot;中国是如何检测和封锁Shadowsocks的&amp;quot;的论文介绍，
该论文出自GFW Report，Jan Beznazwy和Amir Houmansadr。
我是David Fifield。我今天代替作者做论文介绍，
因为他们中大多数都是匿名的。
我有在这个领域的研究经验，
而且在作者的帮助下，
我已经完全熟悉了他们的这项工作。&lt;/p&gt;
&lt;p&gt;对这项工作总结成一句话就是：
中国的防火长城已经采用
被动流量分析与主动探测相结合的手段
来检测和封锁Shadowsocks。&lt;/p&gt;
&lt;p&gt;现在让我们来讲一下这些词是什么意思。
Shadowsocks是一个加密代理协议，
其设计旨在让协议难以被审查者识别。
这个审查绕过（翻墙）协议在中国非常流行。
而且作为信息管控任务的一部分，
防火长城努力找出并封锁各种类型的代理服务器，
其中包括Shadowsocks。
而事实上，从2019年5月起，
已经有许多来自中国的用户汇报
他们的Shadowsocks服务器被墙。
这些封锁有时发生在政治敏感时期。
但当时对封锁原理都缺乏解释。
这项研究揭示了封锁原理。&lt;/p&gt;
&lt;p&gt;首先，在Shadowsocks中，
客户端与服务端之间的连接是加密的。
而且这种加密后，
观察者看到的全部都是密文。
这一点与TLS不同。
TLS的报头中含有明文。
而Shadowsocks流量则全部是密文。
如果你观察就会发现Shadowsocks的流量
就好像一列列均匀随机的字节。
而其就是这么设计的。
这样的设计意味着，你不能仅仅用一个
简单的正则表达来匹配出所有的Shadowsocks流量。
你得更努力一些才行。&lt;/p&gt;
&lt;p&gt;现在如果你想流量这样的随机，这样的缺乏特征，
是不是本身就是一种特征呢？
那你想的绝对正确。
事实上，这项研究揭示了防火长城
使用在TCP流中数据包的长度和熵作为
其识别Shadowsocks流量的第一步。&lt;/p&gt;
&lt;p&gt;现在我来解释下刚刚提到的
主动探测是啥意思。
这项研究揭示了：
防火长城识别Shadowsocks流量的过程分两步：
第一步被动，第二步主动。
第一步，防火长城流量分析出
其怀疑是Shadowsocks的连接。
而在第二步中，
防火长城会假装成Shadowsocks客户端，
从自己的IP地址主动去连接它怀疑的服务器。
然后观察被探测的服务器会怎样回应。
你可以把第一步的目的想成“怀疑”，
而第二步的目的则为“确认”。&lt;/p&gt;
&lt;p&gt;现在你就能理解了：
主动探测是为了在识别中增加准确率，降低成本。
如果你仅仅用流量分析被动地识别Shadowsocks流量，
那么假阳性可能会高得不可接受。
而另一方面，如果你对每一个经过防火长城的连接，
都进行主动探测的话，
那你又会因为需要发送的
主动探测太多而管不过来。
因此你可以把步骤一想成是对步骤二的预先过滤。&lt;/p&gt;
&lt;p&gt;这当然不是第一个记录中国采用
主动探测来识别翻墙协议的研究。
早在2011年，就有研究显示中国以主动探测
的方式来识别Tor和其他VPN协议。
但防火长城用来识别Shadowsocks的技术
可谓又达到了新的高度。&lt;/p&gt;
&lt;p&gt;我们又是怎么知道这些的呢？
你可能已经猜到了文章作者的调查方法。
她们在中国境外搭建了自己的Shadowsocks服务器；
然后又从中国用自己的客户端去
穿过防火长城，连接到搭建好的服务器。
然后再观察还有什么连接
到了她们的服务器上。
她们还搭建了对照服务器，
她们自己的客户端从未连接到上面，
对照服务器只是用来区分主动探测
和一般的互联网扫描。
她们的实验大概持续了4个月。&lt;/p&gt;
&lt;p&gt;目前已经有许多许多的Shadowsocks实现了。
而在这项实验中，
作者选用了其中最受欢迎的两个实现：
分别叫做Shadowsocks-libev和Outline。
它们是对同一个协议的两个相互独立的实现。&lt;/p&gt;
&lt;p&gt;在为期4个月的实验中得到的一个主要观察是
防火长城会使用各种各不同类型的主动探测：
一部分主动探测是对合法连接的重放，
另一部分则不是。
合法连接可能被储存起来，
然后经过长得惊人的时间才被重放。
另一部分非重放探测的数据包，
有着奇特的长度分布。
主动探测看上去来自上千个不同的源IP地址。&lt;/p&gt;
&lt;p&gt;现在我们来谈谈基于重放的主动探测。
首先这些重放基于合法客户端发出的连接。
具体来讲，它们是基于
合法客户端发出的第一个数据包。
有的重放和原连接一模一样，
而有的重放则是在特定位置上
改变了1个，2个或者更多的字节。&lt;/p&gt;
&lt;p&gt;那么审查者发送这些重放探测的目的是什么呢？
原来，审查者是想利用存在于Shadowsocks协议中的某些弱点。
你看，协议并没有规定当一个服务器遇到
重放攻击时应该如何响应。
如果一个实现对重放攻击不做任何的过滤，
那么它就会向代理之前合法客户端发出
的请求一样，去代理重放攻击的请求，
进而将密文的代理流量发送回主动探测者。
虽然审查者因为不知道密码
而无法解密代理流量，
但是服务器向审查者返回了一串密文
这件事本身就足以暴露其为Shadowsocks。&lt;/p&gt;
&lt;p&gt;即使是使用了重放过滤的Shadowsocks实现，
仍可能在其服务器关闭连接时的
一些边界情况上暴露信息。
审查者会改变原始连接中一些特定位置上的
字节后再重放，可能是为了绕过重放过滤器。&lt;/p&gt;
&lt;p&gt;因为很容易找到重放攻击所基于的原始连接，
所以我们可以测量从合法连接被发送到
其重放攻击被发送的延迟。
请看这幅累积分布函数（CDF）图。
因为同一个合法连接可能被重放多次，
因此暗色线仅表示合法连接第一次被重放的延迟；
而浅色线则表示所有重放的延迟。
如你所见，25%的第一次重放发生在1秒内，
相当于是紧随合法连接之后。
但这幅图还有一个长的惊人的尾巴：
一些重放的延迟是以分钟，小时，甚至是天来计数的。&lt;/p&gt;
&lt;p&gt;现在我们来看非重放的主动探测，
这些探测的数据看上去完全随机，
但又并非基于之前的任何合法连接。
你可能发现了这个包长度分布很奇怪。
你看这些长度小于50字节的包，
它们如“三重奏”一般地分布在
8， 12， 16， 22， 33， 41，和49字节。
比如说基于8字节“三重奏”，
包括了数量大致相同的长度为7，8，9字节的探测包。
除此之外，请注意不同类型的非重放探测的比例：
绝大多数的非重放探测的
长度为整整221字节。
这是一个有趣而又发人思考的包长度分布。
论文作者觉得她们至少可以部分地解释&lt;/p&gt;
&lt;p&gt;为什么审查者会发送这些长度的探测数据包。
你看，当你向Shadowsock服务器
发送未经认证的随机数据时，
不同的数据长度会引起服务器不同的反应。
如果你发送了过少的数据，
服务器会期待你发送更多的数据，
因此服务器最终会超时。
但当你发送的数据长度超过这一阀值时，
服务器会尝试验证它受到的数据，
而之后又因验证失败而关闭连接。
我不会介绍过多的细节，
但你要知道Shadowsocks
可以配置使用不同的加密方式
而不同加密方式的初始向量长度会不同。&lt;/p&gt;
&lt;p&gt;你可以看到，很多的“三重奏”，
长度都是骑跨在服务器不同反应的临界值上的。
服务器的反应包括超时和发送RST关闭连接等。
如第一行所示，如果你向服务器发送了
7或者8字节的数据后，服务器将超时。
但如果你发送了9字节，
那么服务器就会立即发送RST来关闭连接。
因此这个服务器反应可以被识别。
但这个分析并不能完全地
解释“三重奏”的分布。
因为，比如说，长度为32，33，34，
或者长度为40，41，42字节的“三重奏”，
就不位于任何临界值附近。
另外221字节的探测长度也不在临界值上。&lt;/p&gt;
&lt;p&gt;现在来讲主动探测的源头。
在为期4个月的实验中，
作者的Shadowsocks服务器收到了
超过50,000次主动探测，
它们来自超过12,000个不同的IP地址。
所有这些IP地址都是中国的。
由上述观察可知，仅仅简单的枚举并屏蔽
所有主动探测的IP地址并不容易。
但这也不是什么令人惊讶的结论，
因为之前的研究工作就早已发现了
审查者会用大量不同的
IP地址来主动探测。
现在我们把这12,000多个在这次研究中
发现的IP地址与之前工作中发现的做对比。
它们之前的重合并不多，
但这也不是很令人惊奇的，
因为之前的研究早已发现
这些主动探测所用的IP地址随时间会发生大量的变化。&lt;/p&gt;
&lt;p&gt;虽然这些主动探测看似来自
成千上万的不同IP地址，
但它们很可能是被一小撮进程集中控制的。
证据来自TCP层的旁道信息泄露：
TCP时间戳。
TCP时间戳是一个32位的计数器，
其以固定的速率随时间增长。
其被附在每一个(非RST的）TCP包上面。
不同的计算机通常不会有
相同的TCP时间戳序列。
因为这个序列会在系统重启时，
被归零或初始化为一个随机值
这张图显示了来自上千个不同IP地址的
数据包的TCP时间戳随时间的变化，
你可以看到，虽然它们来自不同的IP地址，
但它们都可以被归为很少的几个TCP时间序列。
这些序列的增长速率为250 HZ或1,000 HZ。
那条1,000HZ的线由20个
相距很近的数据点拟合而成。
但可以确定它们的变化率
更接近1000HZ而非250HZ。
TCP时间戳的观察与之前研究中的发现一致。&lt;/p&gt;
&lt;p&gt;其他许多不同网络层的指纹
也与之前研究的发现很像。
但TCP源端口号则是一个例外。
先前的工作发现主动探测的TCP源端口号
近乎是均匀随机分布（于1-65535）的。
但在这项研究中，
TCP源端口号有很大一部分与
Linux的临时端口相吻合。&lt;/p&gt;
&lt;p&gt;现在可以确定防火长城会主动探测
Shadowsocks服务器。
但防火长城是如何怀疑上
Shadowsocks服务器的呢？
以下两个事实辅助了作者的调查：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;重放攻击通常紧随合法连接之后；&lt;/li&gt;
&lt;li&gt;重放攻击仅仅基于第一个携带数据的包。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;作者因此设计实验，
在建立TCP连接后仅发送一个数据包。
发送的数据包的长度和熵由作者设置。&lt;/p&gt;
&lt;p&gt;虽然我们没有在图中看到尖锐的拐点，
但高熵的数据包比低熵的
数据包更有可能被重放。&lt;/p&gt;
&lt;p&gt;作者还确定防火长城也会根据
包的长度来怀疑Shadowsocks流量。
请看这幅累积分布函数（CDF）图。
灰线代表作者自己的连接。
她们发送了长度从1到1,000字节
均匀随机分布的数据包。
现在你看，非重放的探测包
的长度集中在221字节。
而绝大部分重放探测包
的长度则在160到700字节之间。
这个区间长度之外的连接极少被重放。
而即使是在这个区间之内，
一些长度的连接也更有可能被重放。
你会发现代表重放探测的这条线呈阶梯状。
事实上，详细结构如下：
对于长度为160到384字节的包，
如果其长度对16取模后为9，
则其更有可能被重放。
对于长度为246到700字节的包，
如果其长度对16取模后为2，
则其更有可能被重放。
这长度在两个区间的重叠区域的包，
其长度对16取模后的结果则以2和9为主。
作者对这一现象没有好的解释，
她们只是发现了这个让人着迷的包长度分布。&lt;/p&gt;
&lt;p&gt;那么我们又能怎么缓解
对Shadowsocks的主动探测呢？
我们已经知道了探测分两步，
那么阻挡其中任何一步就足以挫败探测。
你既可以选择绕过被动地流量分析，
也可以选择绕过主动探测模块。
绕过流量分析就是说去改变会被
防火长城用来分析的特征：
也就是包的熵和长度。
改变包的熵并不容易，
因为这需要根本性地改变协议本身。
而你有更多地余地来改变包的长度。
比如说新版本的Outline会
合并两个连续的包：
这样一来其包的长度分布就可能
不同于防火长城期待的流量特征。&lt;/p&gt;
&lt;p&gt;另一个有意思的发现是基于一个叫
Brdgrd(Bridge Guard)的工具.
这是一个你可以安装在
Shadowsocks服务器上的工具。
它可以让客户端发送的每个包的长度变小，
这是通过在每次连接的初始阶段，
改变服务器TCP窗口大小来实现的。
Brdgrd配合Shadowsocks使用
有着种种的缺点和注意事项，
但可以看到在这项实验中，
当Brdgrd被开启时，
主动探测被有效地缓解了，
尽管不是完完全全地阻止了。
你还可以改变服务器对探测的
回应方式，从而避免被识别。&lt;/p&gt;
&lt;p&gt;刚刚我给你展示过这个表格，
但我其实撒了一点点谎：
这个表格展示的其实是旧版本的Shadowsocks。
部分因为这项研究的成果，
一些新的Shadowsocks版本，
试图消除超时和关闭连接这样的不一致反应。
新版本的Shadowsocks的反应
更像是这幅图所示的那样。
我不会介绍太多关于AEAD
在新的Shadowsocks协议中的细节，
但你可以看到当在新版Shadowsocks
中使用了推荐的AEAD后，
由于缺乏验证，在使用流加密协议时，
服务器的反应无法做到完全一致地超时。
但开发者已经尽力保持反应一致，
来消除其特征。&lt;/p&gt;
&lt;p&gt;总而言之，中国的防火长城已经开始
使用被动的流量分析和主动探测来识别Sadowsocks
主动探测可被连接中的第一个带有数据的包触发。
而且拥有特定长度的包，
和高熵的包更容易触发重放。
与许多种不同的主动探测：
一些是重放攻击，另一些则不是。
主动探测来自许多不同的IP地址，
但有被集中控制的迹象。
可以通过阻断防火长城对Shadowsocks
识别过程中两步的任一一步，
来阻止Shadowsocks被识别。&lt;/p&gt;
&lt;p&gt;感谢您的收看。如果您有任何的疑问或评论，
尽情直接与作者们联系。
研究中的源代码和数据在下方链接中。&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>How China Detects and Blocks Shadowsocks</title>
        <link>https://gfw.report/publications/imc20/en/</link>
        <pubDate>Wed, 07 Oct 2020 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/publications/imc20/en/</guid>
        
        <description>&lt;!-- use CSS file --&gt;

&lt;!-- Used to render latex syntax --&gt;
&lt;script type=&#34;text/javascript&#34; async
  src=&#34;https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML&#34;&gt;
&lt;/script&gt;

&lt;!-- Used to render Table of Content --&gt;
&lt;link href=&#34;./css/tocbot.css&#34; rel=&#39;stylesheet&#39; type=&#39;text/css&#39; /&gt;
&lt;script src=&#34;./js/tocbot.min.js&#34;&gt;&lt;/script&gt;
&lt;script&gt;
    document.addEventListener(&#39;DOMContentLoaded&#39;, function() {
    tocbot.init({
        tocSelector: &#39;.js-toc&#39;,
        contentSelector: &#39;.js-toc-content&#39;,
        headingSelector: &#39;h2, h3&#39;,
        collapseDepth: 3,
        activeLinkClass: &#39;&#39;
    });
    });
&lt;/script&gt;

&lt;h1 class=&#34;titleHead&#34;&gt;How China Detects and Blocks Shadowsocks&lt;/h1&gt;

&lt;div class=&#34;authors&#34;&gt;
  &lt;div class=&#34;author&#34;&gt;
    &lt;p class=&#34;author-name&#34;&gt;Alice&lt;/p&gt;
    &lt;p class=&#34;author-affiliation&#34;&gt;GFW Report&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&#34;author&#34;&gt;
    &lt;p class=&#34;author-name&#34;&gt;Bob&lt;/p&gt;
    &lt;p class=&#34;author-affiliation&#34;&gt;GFW Report&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&#34;author&#34;&gt;
    &lt;p class=&#34;author-name&#34;&gt;Carol&lt;/p&gt;
    &lt;p class=&#34;author-affiliation&#34;&gt;GFW Report&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&#34;author&#34;&gt;
    &lt;p class=&#34;author-name&#34;&gt;Jan Beznazwy&lt;/p&gt;
    &lt;p class=&#34;author-affiliation&#34;&gt;Independent consultant&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&#34;author&#34;&gt;
    &lt;p class=&#34;author-name&#34;&gt;Amir Houmansadr&lt;/p&gt;
    &lt;p class=&#34;author-affiliation&#34;&gt;University of Massachusetts Amherst&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;!-- Table of Contents place holder --&gt;
&lt;div class=&#34;js-toc&#34;&gt;&lt;/div&gt;


  &lt;h2 class=&#34;sectionHead&#34; id=&#34;abstract&#34;&gt;&lt;a id=&#34;sec:abstract&#34; href=&#34;#sec:abstract&#34;&gt;Abstract&lt;/a&gt;&lt;/h2&gt;
  &lt;p class=&#34;indent&#34;&gt;Shadowsocks is one of the most popular circumvention tools in China. Since May 2019, there have been
    numerous anecdotal reports of the blocking of Shadowsocks from Chinese users. In this study, we reveal
    how the Great Firewall of China (GFW) detects and blocks Shadowsocks and its variants. Using measurement
    experiments, we find that the GFW uses the length and entropy of the first data packet in each
    connection to
    identify probable Shadowsocks traffic, then sends seven different types of active probes, in different
    stages, to the corresponding servers to test whether its guess is correct.
  &lt;/p&gt;

  &lt;p class=&#34;indent&#34;&gt;
    We developed a prober simulator to analyze the effect of different types of probes on various
    Shadowsocks
    implementations, and used it to infer what vulnerabilities are exploited by the censor. We fingerprinted
    the
    probers and found differences relative to previous work on active probing. A network-level side channel
    reveals that the probers, which use thousands of IP addresses, are likely controlled by a set of
    centralized
    structures.
  &lt;/p&gt;

  &lt;p class=&#34;indent&#34;&gt;
    Based on our gained understanding, we present a temporary workaround that successfully mitigates the
    traffic
    analysis attack by the GFW. We further discuss essential strategies to defend against active probing. We
    responsibly disclosed our findings and suggestions to Shadowsocks developers, which has led to more
    censorship-resistant tools.
  &lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;1&#34;&gt;&lt;a id=&#34;sec:1-intro&#34; href=&#34;#sec:1-intro&#34;&gt;1 Introduction&lt;/a&gt;&lt;/h2&gt;
&lt;p class=&#34;indent&#34;&gt;Shadowsocks is a protocol for Internet censorship circumvention, especially popular in China.
  According to a
  research survey in July 2015, of 371 faculty members and students from Tsinghua University, 21% used Shadowsocks to
  bypass censorship in China &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Lu2017&#34;&gt;29&lt;/a&gt;, §4.1]&lt;/span&gt;. The popularity of Shadowsocks
  stems from its simplicity. Its lightweight design imposes minimal overhead on proxied traffic and makes it easy to
  implement on a variety of platforms. A large, profit-incentivized proxy reseller market, as well as numerous
  tutorials and one-click installation scripts, have reduced the difficulty of installing and using Shadowsocks, and
  made it popular even among non-technical users. Since as early as October 2017, users in China have reported their
  Shadowsocks servers becoming unreliable or being blocked by the Great Firewall (GFW), especially during politically
  sensitive times &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Ghost2017&#34;&gt;21&lt;/a&gt;]&lt;/span&gt;. The most recent such event happened in
  mid-September 2019, with Shadowsocks users reporting a sudden increase in blocking &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Fifield2019b&#34;&gt;17&lt;/a&gt;]&lt;/span&gt;. &lt;a href=&#34;#sec:2.2-past-blocking&#34; class=&#34;section-ref&#34;&gt;Section 2.2&lt;/a&gt; summarizes
  past
  blocking
  events. Despite the anecdotal evidence that the GFW is capable of detecting and blocking Shadowsocks servers, little
  is known about how the GFW actually does it. The importance of Shadowsocks in censorship circumvention, and the
  mysterious behavior of the GFW, motivate us to explore and understand the underlying mechanisms of detection and
  blocking.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;Our systematic study finds that the GFW has started to identify Shadowsocks servers using a
  combination of
  &lt;em&gt;passive traffic analysis&lt;/em&gt; and &lt;em&gt;active probing&lt;/em&gt;. &lt;a href=&#34;#fig:1-active-probing&#34;&gt;Figure 1&lt;/a&gt;
  illustrates the general notion: the GFW
  first detects suspected Shadowsocks traffic, using features like the size and entropy of the first data packet in
  each connection. Once a server falls under suspicion, the GFW sends active probes to it, in different stages, to
  confirm whether the server really is Shadowsocks. The probes are partial replays of past legitimate connections, and
  random probes of varied lengths. We suspect that the probes are designed to attack detection vulnerabilities in
  different implementations of Shadowsocks. The GFW has been known to use active probing against various circumvention
  tools since as long ago as 2011 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Ensafi2015&#34;&gt;14&lt;/a&gt;]&lt;/span&gt;, but the techniques now in
  use
  against Shadowsocks are new and more sophisticated than what has previously been reported.
&lt;/p&gt;

&lt;figure class=&#34;float&#34; id=&#34;fig:1-active-probing&#34;&gt;&lt;/a&gt;
  &lt;img src=&#34;../figures/active_probing.png&#34; alt=&#34;How active probing works.&#34;&gt;
  &lt;figcaption&gt;&lt;a href=&#34;#fig:1-active-probing&#34;&gt;&lt;b&gt;Figure 1&lt;/a&gt;: How active probing
    works.
    A genuine Shadowsocks client connects to a
    Shadowsocks server; once
    the GFW passively determines that the connection &lt;em&gt;may&lt;/em&gt; be Shadowsocks, it directs its active probers to
    confirm this
    guess.&lt;/b&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p class=&#34;indent&#34;&gt;In summary, our work makes the following contributions:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;We reveal and systematically study the GFW’s latest secret weapon against Shadowsocks.
    &lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;We identify and fingerprint different types of active probes, and infer the probable
      intention behind them.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;We derive a more realistic adversary model of replay attacks.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;We introduce a temporary but effective mitigation against the detection, and provide
      suggestions for defending against active probing.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;We have collaborated with the developers of different Shadowsocks implementations to make
      Shadowsocks more resistant to active-detection attacks.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;2&#34;&gt;&lt;a id=&#34;sec:2-background&#34; href=&#34;#sec:2-background&#34;&gt;2 Background on Shadowsocks&lt;/a&gt;&lt;/h2&gt;
&lt;div&gt;
  &lt;p class=&#34;indent&#34;&gt;Shadowsocks is an encrypted proxy protocol.
    It attempts to avoid detection not by imitating some other protocol,
    but by using encryption to appear as a uniformly random byte stream.
    There are two components: client and server.
    The server is typically installed
    on some network outside the censor’s control.
    The client sends an encrypted target specification to the server.
    The server then connects to the target and
    begins proxying traffic for the client.
    All traffic between the client and the server is encrypted.&lt;/p&gt;

  &lt;p class=&#34;indent&#34;&gt;It will be important to know a few details of how Shadowsocks encryption works,
    in order to appreciate the construction of the probes described in &lt;a
      href=&#34;#sec:3.2-probe-types&#34;&gt;&lt;span&gt;Section&amp;nbsp;3.2&lt;/span&gt;&lt;/a&gt;. Shadowsocks specifies two main classes of cryptographic
    constructions,
    known in the context of the protocol as
    “stream ciphers” and “AEAD ciphers”
    &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:ShadowsocksWhitepaper&#34;&gt;46&lt;/a&gt;]&lt;/span&gt;.
    The stream cipher construction is cryptographically weak—it
    provides only confidentiality, not integrity or authentication,
    and for that reason is deprecated.
    The AEAD cipher construction (authenticated encryption with associated data)
    was developed to fix the flaws of the stream cipher construction,
    and provides confidentiality, integrity, and authentication.
    Both constructions are keyed by a master password that client and server share,
    and both intend to require the client to demonstrate knowledge
    of the shared password before using the proxy server
    (though as we will see, with stream ciphers the requirement is loose).
  &lt;/p&gt;

  &lt;p class=&#34;indent&#34;&gt;With stream ciphers,
    the network stream
    in both directions is one long ciphertext, preceded by a random initialization vector:&lt;/p&gt;
  &lt;blockquote&gt;
    &lt;pre style=&#34;font-size: 15px;&#34;&gt;
  [variable-length IV][encrypted payload...]&lt;/pre&gt;
  &lt;/blockquote&gt;

  &lt;p class=&#34;indent&#34;&gt;Client and server use the same encryption key,
    but different initialization vectors.
    The length of the initialization vector may be 8, 12, or 16&amp;nbsp;bytes,
    depending on what cipher is configured.&lt;/p&gt;

  &lt;p class=&#34;indent&#34;&gt;With AEAD ciphers,
    the network stream is a sequence of
    length-prefixed chunks, each encrypted and authenticated with an AEAD tag.
    To avoid introducing any plaintext for the censor to match on,
    the length prefixes are themselves encrypted and tagged.&lt;/p&gt;
    &lt;blockquote&gt;
      &lt;pre style=&#34;font-size: 15px;&#34;&gt;
  [variable-length salt]
  [2-byte encrypted length][16-byte length tag][encrypted payload][16-byte payload tag]
  [2-byte encrypted length][16-byte length tag][encrypted payload][16-byte payload tag]
  ...&lt;/pre&gt;
    &lt;/blockquote&gt;
  &lt;p class=&#34;indent&#34;&gt;The entire stream is preceded by a salt,
    which is combined with the shared secret password
    to produce a session key for each direction.
    The salt may be 16, 24, or 32&amp;nbsp;bytes.&lt;/p&gt;

  &lt;p class=&#34;indent&#34;&gt;In both constructions,
    the first piece of data the client sends through the tunnel
    is a host:port target specification,
    whose structure is borrowed from the SOCKS proxy protocol.
    The first byte is an address type that indicates the format of the bytes that follow.
    The three address types are:&lt;/p&gt;
  &lt;blockquote&gt;
    &lt;pre style=&#34;font-size: 15px;&#34;&gt;
  [0x01][4-byte IPv4 address][2-byte port]
  [0x03][1-byte length][hostname][2-byte port]
  [0x04][16-byte IPv6 address][2-byte port]&lt;/pre&gt;
  &lt;/blockquote&gt;

  &lt;p class=&#34;indent&#34;&gt;There are many implementations of Shadowsocks
    &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;##cite:goShadowsocks2&#34;&gt;22&lt;/a&gt;&lt;/span&gt;,
    &lt;span class=&#34;cite&#34;&gt;&lt;a href=&#34;#cite:JigsawOutline&#34;&gt;25&lt;/a&gt;&lt;/span&gt;,
    &lt;span class=&#34;cite&#34;&gt;&lt;a href=&#34;#cite:ShadowsocksRustDevelopers&#34;&gt;41&lt;/a&gt;&lt;/span&gt;,
    &lt;span class=&#34;cite&#34;&gt;&lt;a href=&#34;#cite:Shadowsocks&#34;&gt;44&lt;/a&gt;&lt;/span&gt;,
    &lt;span class=&#34;cite&#34;&gt;&lt;a href=&#34;#cite:ShadowsocksLibev&#34;&gt;45&lt;/a&gt;&lt;/span&gt;,
    &lt;span class=&#34;cite&#34;&gt;&lt;a href=&#34;#cite:shadowsocksr-csharp&#34;&gt;47&lt;/a&gt;]&lt;/span&gt;, and they differ in what features they
    support. Not every implementation supports every possible cryptographic construction; for example, OutlineVPN
    &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:JigsawOutline&#34;&gt;25&lt;/a&gt;]&lt;/span&gt; supports AEAD ciphers only, not stream ciphers. Some
    implementations take steps to mitigate replay attacks, and some do not. This means that a probing adversary may
    encounter different reactions to probes, depending on what implementation of Shadowsocks is in use. In this
    work, we focus on two of the more popular implementations, Shadowsocks-libev
    &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:ShadowsocksLibev&#34;&gt;45&lt;/a&gt;]&lt;/span&gt; and OutlineVPN
    &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:JigsawOutline&#34;&gt;25&lt;/a&gt;]&lt;/span&gt;, but the vulnerabilities we describe may also apply to
    other implementations.
  &lt;/p&gt;

  &lt;h3 class=&#34;subsectionHead&#34; id=&#34;2-1&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:2.1-historical-vulnerabilities&#34;
      href=&#34;#sec:2.1-historical-vulnerabilities&#34;&gt;2.1 Historical Vulnerabilities and Defenses&lt;/a&gt;&lt;/h3&gt;

  &lt;p class=&#34;indent&#34;&gt;In August 2015, BreakWa11 discovered an active-probing vulnerability in Shadowsocks stream
    ciphers, resulting
    from their lack of integrity protection &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:BreakWa112015&#34;&gt;8&lt;/a&gt;, &lt;a
        href=&#34;#cite:Fifield2017&#34;&gt;15&lt;/a&gt;]&lt;/span&gt;. An attacker can make many connections to a suspected Shadowsocks
    server, and take advantage of ciphertext malleability to try every possible value of the byte that corresponds
    to the address type in the target specification. Because only 0x01, 0x03, and 0x04 are valid address types, a
    known fraction of connections will time out differently from the rest. Shadowsocks developers mitigated the
    vulnerability by having the server not immediately terminate a connection when a target specification contains
    an unknown address type &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:madeye2016&#34;&gt;30&lt;/a&gt;]&lt;/span&gt;.
  &lt;/p&gt;

  &lt;p class=&#34;indent&#34;&gt;Shadowsocks developers attempted to further mitigate the problem by introducing a “one time
    auth” mode, in
    which each chunk of data would carry its own authenticator. But a lack of integrity protection in chunk length
    prefixes led to another active probing vulnerability &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Fifield2017&#34;&gt;15&lt;/a&gt;, &lt;a
        href=&#34;#cite:printempw2017&#34;&gt;37&lt;/a&gt;]&lt;/span&gt;. In February 2017, AEAD ciphers became part of the protocol
    specification, fixing this authentication problem.&lt;/p&gt;

  &lt;p class=&#34;indent&#34;&gt;In February 2020, Zhiniang Peng disclosed a devastating vulnerability in Shadowsocks stream
    ciphers &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Fifield2019a&#34;&gt;16&lt;/a&gt;, &lt;a href=&#34;#cite:Peng2020&#34;&gt;36&lt;/a&gt;]&lt;/span&gt;.
    Using the
    Shadowsocks server as a decryption oracle, an attacker, without knowledge of the shared master password, can get
    full decryption of recorded Shadowsocks connections.&lt;/p&gt;

  &lt;h3 class=&#34;subsectionHead&#34; id=&#34;2-2&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:2.2-past-blocking&#34;
      href=&#34;#sec:2.2-past-blocking&#34;&gt;2.2
      &lt;/span&gt;Past Blocking of Shadowsocks&lt;/a&gt;&lt;/h3&gt;
  &lt;p class=&#34;indent&#34;&gt;Since as early as October 2017, Internet users in China have reported their Shadowsocks servers
    being blocked,
    by port or IP address &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Ghost2017&#34;&gt;21&lt;/a&gt;, &lt;a href=&#34;#cite:ProgramThink2017&#34;&gt;38&lt;/a&gt;,
      &lt;a href=&#34;#cite:Scott2017&#34;&gt;42&lt;/a&gt;]&lt;/span&gt;. Notable blocking
    events were reported in October 2017 and January 2018, at the same time as two important political congresses in
    China &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Ghost2017&#34;&gt;21&lt;/a&gt;]&lt;/span&gt;. After the two congresses, many users
    reported their servers got unblocked. Contrary evidence comes from Wiley et al., who during those times were
    testing Shadowsocks reachability every day from locations around the world, but reported not having seen any
    evidence of Shadowsocks blocking anywhere &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:BrandonWiley2017&#34;&gt;53&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;

  &lt;p class=&#34;indent&#34;&gt;The reported large-scale blockings mostly happened during politically sensitive times, including
    during the
    30th anniversary of the 1989 Tiananmen Square protests, the 70th anniversary of the People’s Republic of China,
    and the 4th Plenary Session of the 19th Central Committee of the Communist Party of China. The most recent spate
    of reports began around September 16, 2019 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Fifield2019b&#34;&gt;17&lt;/a&gt;]&lt;/span&gt;.
  &lt;/p&gt;

  &lt;h2 class=&#34;sectionHead&#34; id=&#34;3&#34;&gt;&lt;a id=&#34;sec:3-characterization&#34; href=&#34;#sec:3-characterization&#34;&gt;3 &lt;/span&gt;Characterization of
      Probes and the Probing Infrastructure&lt;/a&gt;&lt;/h2&gt;

  &lt;p class=&#34;indent&#34;&gt;Here we describe the experiments we conducted to collect and understand the GFW’s active
    probes.
    Based on a collection of 51,837 active probes observed in a number of experiments, we answer the following
    questions:&lt;/p&gt;
  &lt;div&gt;
    &lt;ul&gt;
      &lt;li&gt;
        &lt;div&gt;
          &lt;p&gt;What types of probes are observed, and under what conditions?&lt;/p&gt;
        &lt;/div&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;div&gt;
          &lt;p&gt;Where do the probes come from?&lt;/p&gt;
        &lt;/div&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;div&gt;
          &lt;p&gt;Do the probes have any “fingerprints” that reveal information about the underlying probing
            infrastructure?&lt;/p&gt;
        &lt;/div&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;div&gt;
          &lt;p&gt;How long is the delay between a legitimate connection and the probes that react to it?&lt;/p&gt;
        &lt;/div&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/div&gt;

  &lt;h3 class=&#34;subsectionHead&#34; id=&#34;3-1&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:3.1-shadowsocks-server-experiments&#34;
      href=&#34;#sec:3.1-shadowsocks-server-experiments&#34;&gt;3.1
      Shadowsocks Server Experiment&lt;/a&gt;&lt;/h3&gt;
  &lt;p class=&#34;indent&#34;&gt;We set up our own Shadowsocks servers and attempted to provoke the GFW into probing them. To do
    this, we connected to our servers using Shadowsocks clients, and sent HTTP and HTTPS traffic through the
    encrypted
    proxy tunnel, using web browsers and curl as automated drivers. We captured packets at both ends for analysis.
    We
    used unmodified clients and servers in all our experiments, did not create any special firewall rules, and did
    not
    install any obfuscation plugins. As summarized in &lt;a href=&#34;#tbl:1-experiment-timeline&#34;
      title=&#34;Table 1: 2. Background on Shadowsocks – How China Detects and Blocks Shadowsocks&#34;&gt;Table 1&lt;/a&gt;, the
    experiments were conducted over four months, from September 29, 2019 to January 21, 2020.&lt;/p&gt;

    &lt;div class=&#34;tabular&#34;&gt;
    &lt;figure class=&#34;table&#34;&gt;
      &lt;table class=&#34;tabular&#34; id=&#34;tbl:1-experiment-timeline&#34;&gt;
        &lt;tbody&gt;
          &lt;tr&gt;
            &lt;td class=&#34;td11&#34; style=&#34;text-align:center; white-space:nowrap;&#34;&gt;
              &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                  class=&#34;ptmr8t-x-x-90&#34;&gt;Experiment&lt;/span&gt;&lt;/div&gt;
            &lt;/td&gt;
            &lt;td class=&#34;td11&#34; style=&#34;text-align:center; white-space:nowrap;&#34;&gt;
              &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;Time
                  Span&lt;/span&gt;&lt;/div&gt;
            &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td class=&#34;td11&#34; style=&#34;text-align:center; white-space:nowrap;&#34;&gt;
              &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                  class=&#34;ptmr8t-x-x-90&#34;&gt;Shadowsocks&lt;/span&gt;&lt;/div&gt;
            &lt;/td&gt;
            &lt;td class=&#34;td11&#34; style=&#34;text-align:center; white-space:nowrap;&#34;&gt;
              &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;Sept
                  29,
                  2019 – Jan 21, 2020 (4 months)&lt;/span&gt;&lt;/div&gt;
            &lt;/td&gt;
          &lt;/tr&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center; white-space:nowrap;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;Sink&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center; white-space:nowrap;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;May 16 –
                31, 2020 (2 weeks)&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td style=&#34;text-align:center; white-space:nowrap;&#34;&gt;
              &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                  class=&#34;ptmr8t-x-x-90&#34;&gt;Brdgrd&lt;/span&gt;&lt;/div&gt;
            &lt;/td&gt;
            &lt;td style=&#34;text-align:center; white-space:nowrap;&#34;&gt;
              &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;Nov 2
                  –
                  19, 2019 (403 hours)&lt;/span&gt;&lt;/div&gt;
            &lt;/td&gt;
          &lt;/tr&gt;
        &lt;/tbody&gt;
      &lt;/table&gt;
  &lt;/div&gt;
  &lt;figcaption class=&#34;caption&#34;&gt;&lt;span&gt;&lt;a href=&#34;#tbl:1-experiment-timeline&#34;&gt;&lt;b&gt;Table 1:
      &lt;/a&gt;&lt;/span&gt;Timeline
    of all major experiments. The three set of experiments span weeks and months. Shadowsocks, Sink, and
    Brdgrd refer to the experiments in&amp;nbsp;&lt;a href=&#34;#sec:3.1-shadowsocks-server-experiments&#34;&gt;Section&amp;nbsp;3.1&lt;/a&gt;,
    &lt;a href=&#34;#sec:4.1-experiments&#34;&gt;Section&amp;nbsp;4.1&lt;/a&gt;,
    and &lt;a href=&#34;#sec:7.1-defense-against-traffic-analysis&#34;&gt;Section&amp;nbsp;7.1&lt;/a&gt;
    respectively.&lt;/b&gt;&lt;/span&gt;
  &lt;/figcaption&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p class=&#34;indent&#34;&gt;Because we could not know in advance what features the GFW might use to identify Shadowsocks, we
  maximized our
  coverage by using different Shadowsocks implementations and versions, and by selecting different encryption
  algorithms. The two implementations we used were Shadowsocks-libev &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:ShadowsocksLibev&#34;&gt;45&lt;/a&gt;]&lt;/span&gt; and
  OutlineVPN &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:JigsawOutline&#34;&gt;25&lt;/a&gt;]&lt;/span&gt;&lt;/p&gt;


&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;Shadowsocks-libev.&lt;/b&gt; We installed Shadowsocks-libev clients
  on five VPSes in a
  Tencent Cloud
  Beijing
  datacenter,
  and Shadowsocks-libev servers on five VPSes in a Digital Ocean UK datacenter.
  Each client was configured to connect to only one of the servers.
  Two pairs of the clients and servers used v3.1.3 of Shadowsocks-libev, and the other three pairs used
  v3.3.1.
  As a control, we set up an additional VPS within the same UK datacenter
  and never connected to it,
  only capturing all incoming traffic.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;We generated client traffic using curl.
  Through the Shadowsocks proxy, we constantly fetched one of the websites at a given frequency:
  &lt;a href=&#34;https://www.wikipedia.org&#34;&gt;https://www.wikipedia.org&lt;/a&gt;,
  &lt;a href=&#34;http://example.com&#34;&gt;http://example.com&lt;/a&gt;,
  and &lt;a href=&#34;https://gfw.report.&#34;&gt;https://gfw.report.&lt;/a&gt;
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;OutlineVPN.&lt;/b&gt; We installed an OutlineVPN v1.0.7 server in a
  US university network.
  The OutlineVPN client we used was the latest as of October 2019.
  The client was in a residential network in China.
  Client traffic was provided by an instance of Firefox,
  configured to automatically browse a subset of the Alexa top 1&amp;nbsp;million sites that is censored in
  China.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;Limitations.&lt;/b&gt; The locations of our vantage points lack
  some diversity,
  making us less likely to observe any potential inconsistencies in the probing system
  caused by geolocation.&lt;/p&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3-2&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:3.2-probe-types&#34; href=&#34;#sec:3.2-probe-types&#34;&gt;3.2
    Probe
    Types&lt;/a&gt;&lt;/h3&gt;
&lt;p class=&#34;indent&#34;&gt;We analyzed all connections to the server port running Shadowsocks,
  and used the traffic received by the control host to verify that the probes we observed
  were triggered by our own connections,
  and not the result of “background radiation” Internet scans.
  We observed a total of 51,837 active probes across all experiments.
  We arrange the probes into two main categories,
  replay-based and seemingly random,
  with a further distinction of probe types within each category.
  The first category of probes, replay-based,
  have a payload that is derived from the first data-carrying packet
  of some previously recorded legitimate connection.
  We assign the probe types in this category names beginning with ‘R’, for “replay”:&lt;/p&gt;

&lt;div&gt;
  &lt;ul&gt;
    &lt;li&gt;
      &lt;p&gt;&lt;b&gt;Type R1:&lt;/b&gt; Identical replay.&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;p&gt;&lt;b&gt;Type R2:&lt;/b&gt; Replay with byte 0 changed.&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;p&gt;&lt;b&gt;Type R3:&lt;/b&gt; Replay with bytes 0–7 and 62–63 changed.&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;p&gt;&lt;b&gt;Type R4:&lt;/b&gt; Replay with byte 16 changed.&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;p&gt;&lt;b&gt;Type R5:&lt;/b&gt; Replay with bytes 6 and 16 changed.&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;p class=&#34;indent&#34;&gt;Probe types&amp;nbsp;R3, R4, and&amp;nbsp;R5 were received only in the OutlineVPN experiment,
  not in the Shadowsocks-libev one.
  Only two type&amp;nbsp;R5 probes were received in our experiments.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;The other category of probes, seemingly random, have varying lengths.
  Their contents that do not resemble a prior legitimate connection in any way we can identify.
  We give probe types in this category names starting with ‘NR’, for “non-replay”:&lt;/p&gt;

  &lt;div&gt;
  &lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;b&gt;Type NR1:&lt;/b&gt; Probes of length 7–9, 11–13, 15–17, 21–23, 32–24, 40–42, or 48–50 bytes.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;b&gt;Type NR2:&lt;/b&gt; Probes of length exactly 221 bytes.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

  &lt;p&gt;&lt;a href=&#34;#fig:2-random-probe-length-distribution&#34; title=&#34;Figure 2&#34;&gt;&lt;span&gt;Figure&amp;nbsp;2&lt;/span&gt;&lt;/a&gt;
    illustrates the distribution of type&amp;nbsp;NR1 and&amp;nbsp;NR2 probes.
    The lengths of NR1 probes are distributed in trios
    centered on 8, 12, 16, 22, 33, 41, and 49&amp;nbsp;bytes.
    We will have more to say about this distribution in
    &lt;a href=&#34;#sec:5.2-intention-behind-random-probes&#34;
      title=&#34;5.2. Intention Behind Random ProbesP&#34;&gt;&lt;span&gt;Section&amp;nbsp;5.2&lt;/span&gt;&lt;/a&gt;.
  &lt;/p&gt;

&lt;figure class=&#34;float&#34; id=&#34;fig:2-random-probe-length-distribution&#34;&gt;&lt;img src=&#34;../figures/random-probe-length-distribution.png&#34;
  id=&#34;random-probe-length-distributio&#34;&gt;
&lt;figcaption&gt;&lt;span&gt;&lt;span&gt;&lt;a href=&#34;#fig:2-random-probe-length-distribution&#34;&gt;&lt;b&gt;Figure 2&lt;/a&gt;&lt;/span&gt;. &lt;/span&gt;&lt;span&gt;
    Number of occurrences of random probes (type&amp;nbsp;NR1 and type&amp;nbsp;NR2) by length.
    Note the two different vertical axes.
    The lengths of type&amp;nbsp;NR1 probes are evenly distributed in trios&lt;/b&gt;
    &lt;span id=&#34;S3.F2.m3&#34; class=&#34;ltx_Math&#34;&gt;&lt;span class=&#34;mjpage&#34;&gt;&lt;span class=&#34;mjx-chtml&#34;&gt;&lt;span class=&#34;mjx-math&#34;
            aria-label=&#34;(n-1,n,n+1)&#34;&gt;&lt;span class=&#34;mjx-mrow&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;mjx-mo&#34;&gt;&lt;span
                  class=&#34;mjx-char MJXc-TeX-main-R&#34;
                  style=&#34;padding-top: 0.446em; padding-bottom: 0.593em;&#34;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mjx-mi&#34;&gt;&lt;span
                  class=&#34;mjx-char MJXc-TeX-math-I&#34;
                  style=&#34;padding-top: 0.225em; padding-bottom: 0.298em;&#34;&gt;n&lt;/span&gt;&lt;/span&gt;&lt;span
                class=&#34;mjx-mo MJXc-space2&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                  style=&#34;padding-top: 0.298em; padding-bottom: 0.446em;&#34;&gt;−&lt;/span&gt;&lt;/span&gt;&lt;span
                class=&#34;mjx-mn MJXc-space2&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                  style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mjx-mo&#34;&gt;&lt;span
                  class=&#34;mjx-char MJXc-TeX-main-R&#34;
                  style=&#34;margin-top: -0.144em; padding-bottom: 0.519em;&#34;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span
                class=&#34;mjx-mi MJXc-space1&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-math-I&#34;
                  style=&#34;padding-top: 0.225em; padding-bottom: 0.298em;&#34;&gt;n&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mjx-mo&#34;&gt;&lt;span
                  class=&#34;mjx-char MJXc-TeX-main-R&#34;
                  style=&#34;margin-top: -0.144em; padding-bottom: 0.519em;&#34;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span
                class=&#34;mjx-mi MJXc-space1&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-math-I&#34;
                  style=&#34;padding-top: 0.225em; padding-bottom: 0.298em;&#34;&gt;n&lt;/span&gt;&lt;/span&gt;&lt;span
                class=&#34;mjx-mo MJXc-space2&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                  style=&#34;padding-top: 0.298em; padding-bottom: 0.446em;&#34;&gt;+&lt;/span&gt;&lt;/span&gt;&lt;span
                class=&#34;mjx-mn MJXc-space2&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                  style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mjx-mo&#34;&gt;&lt;span
                  class=&#34;mjx-char MJXc-TeX-main-R&#34;
                  style=&#34;padding-top: 0.446em; padding-bottom: 0.593em;&#34;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;b&gt;for&lt;/b&gt; &lt;span id=&#34;S3.F2.m4&#34; class=&#34;ltx_Math&#34;&gt;&lt;span class=&#34;mjpage&#34;&gt;&lt;span class=&#34;mjx-chtml&#34;&gt;&lt;span
            class=&#34;mjx-math&#34; aria-label=&#34;n=8,12,16,22,33,41,49&#34;&gt;&lt;span class=&#34;mjx-mrow&#34; aria-hidden=&#34;true&#34;&gt;&lt;span
                class=&#34;mjx-mi&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-math-I&#34;
                  style=&#34;padding-top: 0.225em; padding-bottom: 0.298em;&#34;&gt;n&lt;/span&gt;&lt;/span&gt;&lt;span
                class=&#34;mjx-mo MJXc-space3&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                  style=&#34;padding-top: 0.077em; padding-bottom: 0.298em;&#34;&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span
                class=&#34;mjx-mn MJXc-space3&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                  style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;8&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mjx-mo&#34;&gt;&lt;span
                  class=&#34;mjx-char MJXc-TeX-main-R&#34;
                  style=&#34;margin-top: -0.144em; padding-bottom: 0.519em;&#34;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span
                class=&#34;mjx-mn MJXc-space1&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                  style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;12&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mjx-mo&#34;&gt;&lt;span
                  class=&#34;mjx-char MJXc-TeX-main-R&#34;
                  style=&#34;margin-top: -0.144em; padding-bottom: 0.519em;&#34;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span
                class=&#34;mjx-mn MJXc-space1&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                  style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;16&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mjx-mo&#34;&gt;&lt;span
                  class=&#34;mjx-char MJXc-TeX-main-R&#34;
                  style=&#34;margin-top: -0.144em; padding-bottom: 0.519em;&#34;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span
                class=&#34;mjx-mn MJXc-space1&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                  style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;22&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mjx-mo&#34;&gt;&lt;span
                  class=&#34;mjx-char MJXc-TeX-main-R&#34;
                  style=&#34;margin-top: -0.144em; padding-bottom: 0.519em;&#34;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span
                class=&#34;mjx-mn MJXc-space1&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                  style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;33&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mjx-mo&#34;&gt;&lt;span
                  class=&#34;mjx-char MJXc-TeX-main-R&#34;
                  style=&#34;margin-top: -0.144em; padding-bottom: 0.519em;&#34;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span
                class=&#34;mjx-mn MJXc-space1&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                  style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;41&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mjx-mo&#34;&gt;&lt;span
                  class=&#34;mjx-char MJXc-TeX-main-R&#34;
                  style=&#34;margin-top: -0.144em; padding-bottom: 0.519em;&#34;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span
                class=&#34;mjx-mn MJXc-space1&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                  style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;49&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;.
    &lt;b&gt;Type&amp;nbsp;NR2 probes have length 221 and are roughly three times as common
      as all the NR1 probes together.&lt;/b&gt;
  &lt;/span&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3-3&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:3.3-origin-of-the-probes&#34;
    href=&#34;#sec:3.3-origin-of-the-probes&#34;&gt;3.3 Origin of the Probes&lt;/a&gt;&lt;/h3&gt;

&lt;p class=&#34;indent&#34;&gt;A&amp;nbsp;simple idea to defend against active probing
  is to discover the IP addresses of probers, and ban them.
  Below, we show it may be challenging to implement such a defense,
  because the GFW probes from a large and diverse pool of IP addresses, with high churn.&lt;/p&gt;

  &lt;figure class=&#34;float&#34; id=&#34;fig:3-cumulative-number-of-probes&#34;&gt;&lt;img src=&#34;../figures/cdf_ip_occurrences.png&#34;
    id=&#34;cumulative number of probes&#34; alt=&#34;&#34;&gt;
  &lt;figcaption style=&#34;text-align: center;&#34;&gt;&lt;span&gt;&lt;span&gt;&lt;a href=&#34;#fig:3-cumulative-number-of-probes&#34;&gt;&lt;b&gt;Figure 3&lt;/a&gt;&lt;/span&gt;.
    &lt;/span&gt;&lt;span&gt;
      Cumulative number of probes per prober IP address.&lt;/b&gt;
    &lt;/span&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;/span&gt;&lt;b&gt;IP addresses.&lt;/b&gt; The 51,837 active probes were sent from 12,300
  unique source IP addresses,
  all located in China.
  &lt;a href=&#34;#fig:3-cumulative-number-of-probes&#34; title=&#34;Figure 3&gt;
            &lt;span&#34;&gt;Figure&amp;nbsp;3&lt;/span&gt;
  &lt;/a&gt;
  shows the distribution of the number of probes sent per unique IP address.In contrast to previous work, which
  found that “95% of the addresses appear only once” &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Ensafi2015&#34;&gt;14&lt;/a&gt;,
    §5.3]&lt;/span&gt;, in our tests more
  than 75% of addresses sent more than one probe.
  The most common prober IP addresses are summarized&amp;nbsp;&lt;a href=&#34;#tbl:2-IP-addresses&#34;
    title=&#34;Table 2&#34;&gt;&lt;span&gt;Table&amp;nbsp;2&lt;/span&gt;&lt;/a&gt;.
&lt;/p&gt;

&lt;figure class=&#34;table&#34; id=&#34;tbl:2-IP-addresses&#34;&gt;
  &lt;div class=&#34;tabular&#34;&gt;
    &lt;table class=&#34;tabular&#34;&gt;
      &lt;tbody&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;Prober
                IP address&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;Count&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;175.42.1.21&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;44&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
              &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;223.166.74.207&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
              &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;38&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
              &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;124.235.138.113&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
              &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;36&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
              &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;113.128.105.20&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
              &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;36&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;221.213.75.88&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;33&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;112.80.138.231&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;32&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;116.252.2.39&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;32&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;124.235.138.231&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;32&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;221.213.75.126&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;32&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;223.166.74.110&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;31&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
  &lt;figcaption style=&#34;text-align: center;&#34;&gt;&lt;span&gt;&lt;a href=&#34;#tbl:2-IP-addresses&#34;&gt;&lt;b&gt;Table 2&lt;/a&gt;&lt;/span&gt;. The most common prober IP
    addresses and their
    number of occurrences.&lt;/b&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p class=&#34;indent&#34;&gt;We compared our list of prober IP addresses against 934 that were observed to send active
  probes to Tor servers in 2018 by Dunna et al. &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Dunna2018&#34;&gt;13&lt;/a&gt;]&lt;/span&gt;, and
  22,000 that were observed to
  send various types of active probes between 2010 and 2015 by Ensafi et al. &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Ensafi2015&#34;&gt;14&lt;/a&gt;]&lt;/span&gt;. &lt;a href=&#34;#fig:4-comparison-with-other-probe-source&#34;
    title=&#34;Figure 4: IP addresses.&#34;&gt;Figure 4&lt;/a&gt;
  shows that the three
  sets overlap only slightly.
  We note the IP address 202.108.181.70, which was responsible for an inordinate number of probes in
  previous
  work &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Ensafi2015&#34;&gt;14&lt;/a&gt;, §5.3]&lt;/span&gt;, does not appear in our data. The
  small overlap is not
  unexpected,
  given that past work has observed high churn in prober IP addresses.&lt;/p&gt;

&lt;figure class=&#34;float&#34; id=&#34;fig:4-comparison-with-other-probe-source&#34;&gt;&lt;img
    src=&#34;../figures/comparison_with_other_probe_source_datasets.png&#34; alt=&#34;&#34;&gt;
  &lt;figcaption style=&#34;text-align: center;&#34;&gt;&lt;span&gt;&lt;span&gt;&lt;a href=&#34;#fig:4-comparison-with-other-probe-source&#34;&gt;&lt;b&gt;Figure
            4&lt;/a&gt;&lt;/span&gt;. &lt;/span&gt;&lt;span&gt;
      Overlap in prober source IP addresses across independently collected datasets.&lt;/b&gt;
    &lt;/span&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;Autonomous systems.&lt;/b&gt; The autonomous system (AS) distribution
  of probers is shown in &lt;a href=&#34;#tbl:3-counts-of-unique-prober-IP-addresses&#34;&gt;&lt;span&gt;
      Table&amp;nbsp;3&lt;/span&gt;&lt;/a&gt;.
  The two ASes that account for the most Shadowsocks probes are AS4837 (CHINA169-BACKBONE CNCGROUP China169
  Backbone) and AS4134 (CHINANET-BACKBONE No.31, Jin-rong Street).
  These two were the most common in previous work &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Ensafi2015&#34;&gt;14&lt;/a&gt;&lt;/span&gt;,
  &lt;span class=&#34;cite&#34;&gt;&lt;a href=&#34;#cite:Winter2012a&#34;&gt;56&lt;/a&gt;]&lt;/span&gt;
  as well. Other ASes that overlap with previous work are AS17816, AS9808, AS56046, AS17638, AS56047, and
  AS17622. AS17622
  (CNCGROUP-GZ China Unicom Guangzhou network) accounts for a much larger fraction of probes than in previous
  work
  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Ensafi2015&#34;&gt;14,&lt;/a&gt; Figure 7]&lt;/span&gt;. Other
  previously attested ASes do
  not appear in our data, including AS7497 (CSTNET-AS-AP Computer Network Information Center), which was the
  third most common source of probes seen by Ensafi et al &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Ensafi2015&#34;&gt;14&lt;/a&gt;]&lt;/span&gt;.
  There are also ASes
  in our dataset that have not been previously documented as being a source of active probes.
&lt;/p&gt;

&lt;figure class=&#34;table&#34; id=&#34;tbl:3-counts-of-unique-prober-IP-addresses&#34;&gt;
  &lt;div class=&#34;tabular&#34;&gt;
    &lt;table class=&#34;tabular&#34;&gt;
      &lt;tr&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS4837&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;6262&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS58563&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;44&lt;/div&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS4134&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;5188&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS17638&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;17&lt;/div&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS17622&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;315&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS9808&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;2&lt;/div&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS17621&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;263&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS4812&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;1&lt;/div&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS17816&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;104&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS24400&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;1&lt;/div&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS4847&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;101&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS56046&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;1&lt;/div&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS56047&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;1&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;&lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
  &lt;/div&gt;
  &lt;figcaption style=&#34;text-align: center;&#34;&gt;
    &lt;span&gt;
      &lt;a href=&#34;#tbl:3-counts-of-unique-prober-IP-addresses&#34;&gt;&lt;b&gt;Table 3.&lt;/a&gt;
      Counts of unique prober IP addresses per autonomous system, across all experiments.&lt;/b&gt;
    &lt;/span&gt;
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3-4&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:3.4-fingerprinting&#34;
    href=&#34;#sec:3.4-fingerprinting&#34;&gt;3.4 Fingerprinting the Probes&lt;/a&gt;&lt;/h3&gt;
&lt;p class=&#34;indent&#34;&gt;As in previous work, we fingerprint the packet-level features
  of active probes.
  At the IP layer, we examine the ID and TTL fields.
  At the TCP layer, we look at source ports and timestamps.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;IP&amp;nbsp;ID and TT.&lt;/b&gt; We fingerprint the IP ID and TTL of
  PSH/ACK packets sent by the probers. As in Ensafi et al. &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Ensafi2015&#34;&gt;14&lt;/a&gt;,
    §5.5]&lt;/span&gt;, we find no
  clear pattern in the IP ID sequences, and that TTLs remain within the range 46–50.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;TCP source ports.&lt;/b&gt; Around 90% of probes came from source
  ports in the
  range 32768–60999.
  This range, highlighted in &lt;a href=&#34;#fig:5-CDF-source-port&#34;&gt;Figure 5&lt;/a&gt;,
  happens to be the default source port range of many Linux kernels. Probes never used a source port below 1024
  (the precise minimum we saw in one experiment was 1212). These results differ from those of previous work
  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Ensafi2015&#34;&gt;14&lt;/a&gt;,
    §5.5]&lt;/span&gt;,
  which observed all ports being used, and no range of ports being more common than any other.
&lt;/p&gt;

&lt;figure class=&#34;float&#34; id=&#34;fig:5-CDF-source-port&#34;&gt;&lt;img src=&#34;../figures/cdf_source_port_lon15.png&#34; id=&#34;fig:5-CDF-source-port&#34;&gt;
  &lt;figcaption style=&#34;text-align: center;&#34;&gt;&lt;span&gt;&lt;span&gt;&lt;a href=&#34;#fig:5-CDF-source-port&#34;&gt;&lt;b&gt;Figure 5&lt;/a&gt;&lt;/span&gt;. &lt;/span&gt;&lt;span&gt;
      CDF of TCP source port numbers of probes in one experiment, including 1,576 probes.
      &lt;/b&gt;&lt;/span&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;TCP timestamp (TSval).&lt;/b&gt; The TCP timestamp is a 32-bit
  counter that increases
  at a fixed rate, attached to every non-RST TCP segment
  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Borman2014&#34;&gt;7&lt;/a&gt;, §3]&lt;/span&gt;. It is not an absolute timestamp, but is
  relative to
  how and when the counter
  was initialized,
  and its rate of increase varies across operating systems.
  &lt;a href=&#34;#fig:6-tsval-lon&#34;&gt;Figure 6&lt;/a&gt; illustrates that although the probers use thousands of source IP addresses,
  they cannot be fully independent because they share a small number of TCP timestamp sequences.
  This suggests at least seven different physical systems or processes, with one prominently accounting for the
  majority of probes.
  The term “at least” seven is used because distinguishing two processes with very close TSvals sequences is
  challenging,
  such as if both were restarted around the same time. The slope of the linear sequences was almost exactly 250
  Hz,
  except for a small cluster of 22 points closer to 1000 Hz. Sequences reaching the maximum value of \(2^{32} -
  1\)
  and wrapping to 0 were observed in two instances. This observation is compared with Figure 11 of Ensafi et al. &lt;/a&gt;
  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Ensafi2015&#34;&gt;14&lt;/a&gt;]&lt;/span&gt;, which also shows
  sequences of 250 Hz and 1000 Hz.
&lt;/p&gt;

&lt;figure class=&#34;float&#34; id=&#34;fig:6-tsval-lon&#34;&gt;&lt;img src=&#34;../figures/tsval_lon8.png&#34; id=&#34;Figure 6&#34;&gt;
  &lt;figcaption&gt;&lt;span&gt;&lt;span&gt;&lt;a href=&#34;#fig:6-tsval-lon&#34;&gt;&lt;b&gt;Figure 6&lt;/a&gt;&lt;/span&gt;. &lt;/span&gt;&lt;span&gt;
      Non-independent processes revealed by
      common TCP timestamp sequences.
      The labeled marker lines have slopes of precisely 250&amp;nbsp;Hz and 1000&amp;nbsp;Hz.
      The small cluster of 22&amp;nbsp;non-replay probes on the 1000&amp;nbsp;Hz line
      locally have a slope of 1009&amp;nbsp;Hz,
      but here the measurement is less certain because they span only about&amp;nbsp;3.5&amp;nbsp;s.
      The 1000&amp;nbsp;Hz line does not become 250&amp;nbsp;Hz, even if connected to one of the sparse non-replay
      data points at the left edge of the figure.
      &lt;/b&gt;&lt;/span&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3-5&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:3.5-delay-of-replay-attacks&#34;
    href=&#34;#sec:3.5-delay-of-replay-attacks&#34;&gt;3.5 Delay of Replay Attacks&lt;/a&gt;&lt;/h3&gt;

&lt;p class=&#34;indent&#34;&gt;The GFW may record the first data-carrying packet of a genuine client connection
  and replay it later, possibly with modifications, as an active probe.
  &lt;a href=&#34;#fig:7-delay-of-replay&#34;&gt;Figure&amp;nbsp;7&lt;/a&gt; shows
  the variability in delay between
  when a legitimate connection is made and when the GFW sends replay-based probes derived from that
  connection.
  Because probe payloads may be replayed more than once
  (up to 47&amp;nbsp;times, in one case),
  we present two distributions,
  with and without repeated payloads.
  The orange line represents the delay of the &lt;em&gt;first&lt;/em&gt; occurrence
  of each replay-based probe payload,
  while the blue line shows the delay of &lt;em&gt;all&lt;/em&gt; replay-based
  probes,
  including repeated payloads.
  The total number of probes is 3,269 for first occurrences and 11,137 for all occurrences.
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;More than 20% of first replays arrived within one second;
  more than 50% within one minute;
  and more than 75% within 15&amp;nbsp;minutes.
  Replay-based probes may be sent almost immediately, or
  may be stored for a surprisingly long time before being sent.
  The shortest delay we observed was 0.28&amp;nbsp;seconds
  and the longest was 570&amp;nbsp;hours.&lt;/p&gt;

&lt;figure class=&#34;float&#34; id=&#34;fig:7-delay-of-replay&#34;&gt;&lt;img src=&#34;../figures/delay_of_replays_in_all_experiments.png&#34; id=&#34;Figure 7&#34;&gt;
  &lt;figcaption style=&#34;text-align: center;&#34;&gt;&lt;span&gt;&lt;span&gt;&lt;a href=&#34;#fig:7-delay-of-replay&#34;&gt;&lt;b&gt;Figure 7&lt;/a&gt;&lt;/span&gt;. &lt;/span&gt;&lt;span&gt;
      CDF of the delay of replay-based probes.
      Note the logarithmic &lt;span&gt;&lt;span class=&#34;mjpage&#34;&gt;&lt;span class=&#34;mjx-chtml&#34;&gt;&lt;span class=&#34;mjx-math&#34;
              aria-label=&#34;x&#34;&gt;&lt;span class=&#34;mjx-mrow&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;mjx-mi&#34;&gt;&lt;span
                    class=&#34;mjx-char MJXc-TeX-math-I&#34;
                    style=&#34;padding-top: 0.225em; padding-bottom: 0.298em;&#34;&gt;x&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;-axis.&lt;/b&gt;
    &lt;/span&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;4&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:4-delay-of-replay-attacks&#34;
    href=&#34;#sec:4-delay-of-replay-attacks&#34;&gt;4 What
    Triggers Active Probing&lt;/a&gt;&lt;/h2&gt;

&lt;p class=&#34;indent&#34;&gt;There are alternative hypotheses for how the GFW might go about discovering Shadowsocks
  servers.
  One is large-scale, &lt;em&gt;proactive&lt;/em&gt; port scanning;
  another is &lt;em&gt;reactive&lt;/em&gt; probing triggered by legitimate connections.
  The fact that the unused control host in &lt;a href=&#34;#sec:3-characterization&#34;
    title=&#34;3. Characterization of Probes and the Probing Infrastructure&#34;&gt;the
    previous section&lt;/a&gt;
  did not receive any active probes leads us to discard the proactive scanning hypothesis.
  Instead, we assume that probes are sent only when the probing system
  sees a suspected Shadowsocks connection.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;What, then, constitutes a suspected Shadowsocks connection, from the GFW’s point of view?
  In this section, we deal with the following questions:&lt;/p&gt;
&lt;div&gt;
  &lt;ul&gt;
    &lt;li&gt;
      &lt;p&gt;How much traffic is required to trigger active probes?&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;p&gt;Why were type R3, type R4, and type R5 probes sent only to the OutlineVPN server, not the Shadowsocks-libev
        server?&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;p&gt;Does the GFW consider the length of packets?&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;p&gt;Does the GFW consider the entropy of packet payloads?&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;p&gt;Do outside-to-inside connections (with the client outside China and the server inside) result in as much
        active probing as inside-to-outside connections?&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4-1&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:4.1-experiments&#34; href=&#34;#sec:4.1-experiments&#34;&gt;4.1
    Experiments&lt;/a&gt;&lt;/h3&gt;
&lt;p class=&#34;indent&#34;&gt;A&amp;nbsp;convincing way to show what features the GFW uses for traffic analysis is to
  outline a minimal,
  reproducible set of conditions that trigger active probing.
  Accomplishing this is, unsurprisingly, the most challenging part of this work,
  as it requires us to isolate a small number of features that the GFW really uses,
  from countless possibilities.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;We are aided by two observations.
  First, the byte streams sent between Shadowsocks clients and servers are,
  by design, indistinguishable from random.
  This means that it may not be necessary to use a real client Shadowsocks implementation;
  we may be able trigger active probes by sending random data.
  Second, as described in &lt;a href=&#34;#sec:3.5-delay-of-replay-attacks&#34;
    title=&#34;3.5. Delay of Replay Attacks&#34;&gt;Section&amp;nbsp;3.5&lt;/a&gt;,
  replay probes may be sent as soon as 0.28&amp;nbsp;seconds after a legitimate data packet.
  The GFW could have seen only the very beginning
  of a client-to-server flow,
  before deciding that the traffic was suspicious.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;Guided by these two observations,
  we implemented a TCP client that connects to a TCP server
  and sends one data packet, with a specified length and Shannon entropy.
  We implemented a server with two operating modes:
  sink mode and responding mode.
  In sink mode,
  the server accepts TCP connections, but does not respond with any data, and closes connections after
  30&amp;nbsp;seconds.
  In responding mode,
  the server responds to probers—but not our own clients—with
  between 1&amp;nbsp;and 1000&amp;nbsp;bytes of random data.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;a href=&#34;#tbl:4-summary-of-random-data-experiments&#34; title=&#34;Table 4&#34;&gt;Table 4&lt;/a&gt;
  summarizes the design of the random-data experiments.
  &lt;a href=&#34;#tbl:1-experiment-timeline&#34;
    title=&#34;Table 1: Background on Shadowsocks and How China Detects and Blocks Shadowsocks&#34;&gt;Table 1&lt;/a&gt;
  shows the time span of the experiment.
  Clients ran on different VPSes within the same Tencent datacenter in Beijing.
  All servers ran in the same Digital Ocean datacenter in the&amp;nbsp;US.
  Client and server IP addresses were not reused across experiments.
&lt;/p&gt;

&lt;figure class=&#34;table&#34; id=&#34;tbl:4-summary-of-random-data-experiments&#34;&gt;
  &lt;div class=&#34;tabular&#34;&gt;
    &lt;table class=&#34;tabular&#34;&gt;
      &lt;tbody&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;Exp #&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;Length (bytes)&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;Entropy&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;Mode&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;1. a&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;[1, 1000]&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;&amp;gt; 7&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;sink&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;1. b&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;[1, 1000]&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;&amp;gt; 7&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;responding&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;2&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;[1, 1000]&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;&amp;lt; 2&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;sink&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;3&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;[1, 2000]&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&gt;&lt;div class=&#34; multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;[0,&amp;nbsp8]&lt;/span&gt;
  &lt;/div&gt;
  &lt;/td&gt;
  &lt;td class=&#34;td11&#34;&gt;
    &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;sink&lt;/span&gt;&lt;/div&gt;
  &lt;/td&gt;
  &lt;/tr&gt;
  &lt;/tbody&gt;
  &lt;/table&gt;
  &lt;/div&gt;
  &lt;figcaption&gt;
    &lt;a href=&#34;#tbl:4-summary-of-random-data-experiments&#34;&gt;&lt;b&gt;Table 4.&lt;/a&gt; Summary of random-data experiments. &#34;[x,&amp;nbspy]&#34;
    means
    the value is uniformly and randomly sampled from a range, independently for each connection. In Exp 1, the server
    was switched from sink mode to responding mode after 310 hours; we label the two subexperiments 1.&amp;nbspa and
    1.&amp;nbspb.
    &lt;/b&gt;
  &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;/p&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4-2&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:4.2-experiment-result-and-analysis&#34;
    href=&#34;#sec:4.2-experiment-result-and-analysis&#34;&gt;4.2 Experiment Results and Analysis&lt;/a&gt;&lt;/h3&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;Little traffic is required to trigger active probes.&lt;/b&gt; Our sink server, despite not being a
  real Shadowsocks server
  and never sending data,
  received many of the same types of probes
  as in the Shadowsocks server experiment of &lt;a href=&#34;#sec:3.1-shadowsocks-server-experiments&#34;
    title=&#34;3.1. Shadowsocks Server Experiment&#34;&gt;Section&amp;nbsp;3.1&lt;/a&gt;.
  After a TCP handshake, a single data packet from client to server suffices to trigger active probes.
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;Only certain lengths are replayed.&lt;/b&gt; Although our clients sent data packets with lengths of
  between 1&amp;nbsp;and
  2000&amp;nbsp;bytes,
  virtually all probes that were determined to be replays had a payload length of between 160&amp;nbsp;and
  700&amp;nbsp;bytes,
  with the maximum length being 999 bytes.
  &lt;a href=&#34;#fig:8-CDF-payload-length&#34; title=&#34;Figure 8&#34;&gt;Figure&amp;nbsp;8&lt;/a&gt;
  shows the distribution of probe lengths in Exp&amp;nbsp;1.&amp;nbsp;a.
  The distribution of lengths exhibits a stair-step pattern,
  reflecting the fact that certain lengths are more likely to be replayed.
  Namely, the lengths of replay probes tend to have certain remainders when divided by&amp;nbsp;16.
  Considering type&amp;nbsp;R1 probes (type&amp;nbsp;R2 is similar),
  of the 376 probes whose length is in the interval 168–263 bytes,
  72%&amp;nbsp;have a length whose remainder when divided by&amp;nbsp;16 is&amp;nbsp;9;
  of 1,558 in the interval 384–687,
  96%&amp;nbsp;have a length whose remainder is&amp;nbsp;2;
  and of 749 in the middle interval 264–383,
  there is a mix of remainders 9&amp;nbsp;(37%) and 2&amp;nbsp;(32%).
  The results suggest that the GFW considers packet lengths in classifying Shadowsocks traffic.
  Packet length is a reasonable feature to use,
  because Shadowsocks does not pad the contents of the tunnel,
  only incidentally changing the underlying packet length distribution by adding
  an address header prefix (see &lt;a href=&#34;#sec:2-background&#34; title=&#34;2. Background on Shadowsocks&#34;&gt;Section&amp;nbsp;2&lt;/a&gt;)
  and,
  with AEAD ciphers, length prefixes and tags.
  The payload length distribution of the Shadowsocks traffic therefore resembles
  that of the underlying traffic, which is often HTTP or&amp;nbsp;TLS.
&lt;/p&gt;

&lt;figure id=&#34;fig:8-CDF-payload-length&#34; class=&#34;float&#34;&gt;&lt;img src=&#34;../figures/cdf_payload_length_exp1a.png&#34;
    id=&#34;fig:8-CDF-payload-length&#34;&gt;
  &lt;figcaption&gt;&lt;a href=&#34;#fig:8-CDF-payload-length&#34;&gt;&lt;b&gt;Figure 8.&lt;/a&gt;
    CDF of the payload lengths of replay-based probes over
    the 310&amp;nbsp;hours of Exp&amp;nbsp;1.&amp;nbsp;a.
    The lengths of replay probes exhibit a stair-step pattern.&lt;/b&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;High-entropy packets are more likely to be replayed.&lt;/b&gt; Two pieces of evidence support this
  conclusion.
  First,
  &lt;a href=&#34;#fig:9-replayed-ratio&#34;
    title=&#34;Figure 9 ‣ Only certain lengths are replayed. ‣ 4.2. Experiment Results and Analysis ‣ 4. What Triggers Active Probing ‣ How China Detects and Blocks Shadowsocks&#34;&gt;&lt;span&gt;Figure&amp;nbsp;9&lt;/span&gt;&lt;/a&gt;
  shows that
  while packets of all entropies may be replayed,
  one with a high per-byte entropy of&amp;nbsp;7.2 is almost four times as likely
  to be replayed as one with a low entropy of&amp;nbsp;3.0.
  Second,
  Exp&amp;nbsp;1.a and Exp&amp;nbsp;2 differ only in the entropy of packets,
  and over the same period of time,
  the server in Exp&amp;nbsp;1.a received significantly more probes than the one in Exp&amp;nbsp;2.
&lt;/p&gt;

&lt;figure id=&#34;fig:9-replayed-ratio&#34;&gt;&lt;img src=&#34;../figures/replayed_ratio_exp3.png&#34; id=&#34;fig:9-replayed-ratio&#34;&gt;
  &lt;figcaption&gt;&lt;a href=&#34;#fig:9-replayed-ratio&#34;&gt;&lt;b&gt;Figure 9.&lt;/a&gt;
    Rate of replay-based probes per legitimate connection in Exp&amp;nbsp;3,
    according to per-byte entropy of the legitimate connection.&lt;/b&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;Probes of type&amp;nbsp;R3 and&amp;nbsp;R4 are not sent unless the
    server has previously responded to probes of type&amp;nbsp;R1 and&amp;nbsp;R2.&lt;/b&gt; The thousands of probes received in
  Exp&amp;nbsp;1.a, Exp&amp;nbsp;2, and Exp&amp;nbsp;3
  could all be classified as type&amp;nbsp;R1, R2, or&amp;nbsp;NR2.
  In other words,
  we were not able to trigger probes of types&amp;nbsp;R3, R4, R5 or NR1 in these experiments.
  This result reminded us of the fact that in the experiment of &lt;a href=&#34;#sec:3.1-shadowsocks-server-experiments&#34;
    title=&#34;3.1. Shadowsocks Server Experiment ‣ 3. Characterization of Probes and the Probing Infrastructure ‣ How China Detects and Blocks Shadowsocks&#34;&gt;Section&amp;nbsp;3.1&lt;/a&gt;,
  type&amp;nbsp;R3, R4 and&amp;nbsp;R5 probes
  were only ever received by OutlineVPN servers,
  and not by Shadowsocks-libev servers.
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;As will be expanded on in &lt;a href=&#34;#sec:5.3-intention-behind-replay-based-probes&#34;
    title=&#34;5.3. Intention Behind Replay-based Probes ‣ 5. Intention Behind the Probes ‣ How China Detects and Blocks Shadowsocks&#34;&gt;Section&amp;nbsp;5.3&lt;/a&gt;,
  one major difference between Shadowsocks-libev and the version of OutlineVPN we used is that Shadowsocks-libev has
  a filter to defend against replay attacks,
  and OutlineVPN does not. (At least in the version we used—OutlineVPN has since added replay protection [&lt;a
    href=&#34;#cite:JigsawOutlineV110&#34;&gt;26&lt;/a&gt;].)
  For this reason, Shadowsocks-libev servers do not respond to exact replays of earlier connections, while
  OutlineVPN servers do.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;
  We therefore hypothesize that the GFW does not send probes of type R3, R4, and R5 unless the server has already
  responded to probes of type R1 and R2. We switched the server in Exp 1.a to responding mode after 310 hours of
  operating in sink mode.
  Soon after the server started responding to type R1 and type R2 probes, it began to receive a large number of type
  R3 and type R4 probes.
  The server continued to receive type R1 and R2 probes as well. &lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;These results suggest that the active probing system operates in stages.
  It does not move on to the next stage until a certain condition is observed.
  This implementation detail suggests that the censor may have designed its active probing system with not only Shadowsocks in mind. Other, similarly behaving protocols may also be targeted. We do not know why type R5 and type NR1 probes did not appear in any of our four random-data experiments.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;New probe types observed.&lt;/b&gt; The sink/responding servers received probes that did not match
  the probe
  types seen in our earlier experiment with Shadowsocks-libev and OutlineVPN. In Exp 1.b, we saw 11 replay-based
  probes that
  had bytes from 16 to 32 changed. Weadditionally saw many non-replay probes across all four experiments. In total,
  there were 9 probes of 53 bytes, 5 probes of 56 bytes,
  3 probes of 169 bytes, 1 probe of 180 bytes, and 1 probe of 402 bytes.

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;The GFW does not distinguish traffic directionality.&lt;/b&gt; We set up a Shadowsocks server inside
  China and made connections to it from outside.
  The traffic proxied was generated by automatically browsing a subset of Alexa top 1 million websites.
  The server received a large amount of active probing.
  This result indicates that the GFW probes suspected servers
  regardless of whether the server is inside or outside China.
  This bidirectional triggering behavior differs from Winter and Lindskog’s&amp;nbsp;&lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Winter2012a&#34;&gt;56&lt;/a&gt;, §4.4&lt;/a&gt;]&lt;/span&gt; observation
  that outside-to-inside Tor connections did not trigger active probing.
  On the other hand,
  the GFW is known not to distinguish traffic directionality for many protocols,
  including DNS&amp;nbsp;&lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Anonymous2014&#34;&gt;1&lt;/a&gt;, §2]&lt;/span&gt;, HTTP&amp;nbsp;&lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Clayton2006&#34;&gt;11&lt;/a&gt;, §3]&lt;/span&gt; and TLS&amp;nbsp;&lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Chai2019&#34;&gt;9&lt;/a&gt;,
    §3.1]&lt;/span&gt;.
  The GFW’s sensitivity to directionality has even been known to change over time,
  as in the case of TLS ESNI blocking, which was bidirectional for two weeks
  before becoming unidirectional&amp;nbsp;[&lt;span class=&#34;cite&#34;&gt;&lt;a href=&#34;#cite:Bock2020&#34;&gt;6&lt;/a&gt;&lt;/span&gt;].
&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;5&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt;
  &lt;a id=&#34;sec:5-intention-behind-probes&#34; href=&#34;#sec:5-intention-behind-probes&#34;&gt;5 Intention Behind the Probes&lt;/a&gt;
&lt;/h2&gt;

&lt;p class=&#34;indent&#34;&gt;As discussed in &lt;a href=&#34;#sec:3.2-probe-types&#34; title=&#34;3.2. Probe Types&#34;&gt;&lt;span&gt;Section&amp;nbsp;3.2&lt;/span&gt;&lt;/a&gt;,
  we discovered seven distinct types of active probes to our Shadowsocks servers.
  A natural question is: what information can the GFW get from these probes?
  Unlike in previous work &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Ensafi2015&#34;&gt;14&lt;/a&gt;&lt;/span&gt;, &lt;span class=&#34;cite&#34;&gt;&lt;a
      href=&#34;#cite:Winter2012a&#34;&gt;56&lt;/a&gt;]&lt;/span&gt;,
  for us this question cannot be answered by a simple glance at the probes.
  We conjecture that if the probes elicit reactions from a Shadowsocks server
  that differ from the reactions of non-Shadowsocks servers,
  the GFW can be confident in classifying the server as Shadowsocks.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;Therefore, understanding the effects of those probes on Shadowsocks servers is key.
  We developed our own prober simulator
  to observe how Shadowsocks servers react to probes like those sent by the GFW.
  We further checked the source code of Shadowsocks implementations to understand their internal logic.
  Based on this analysis,
  we formed conjectures regarding what distinguishable server reactions
  may be exploited for classification.&lt;/p&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;5-1&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:5.1-prober-simulator-experiment&#34;
    href=&#34;#sec:5.1-prober-simulator-experiment&#34;&gt;5.1 Prober Simulator Experiment&lt;/a&gt;&lt;/h3&gt;

&lt;p class=&#34;indent&#34;&gt;We developed a prober simulator that can send all seven types of probes to Shadowsocks
  servers, and record their reactions.
  The prober simulator allows us to test a wide range of Shadowsocks implementations,
  with different configurations, efficiently and locally.
  In addition, the prober simulator lets us cover implementation corner cases
  and reveal some fingerprintable features that may have not been exploited by the GFW.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;Replay-based probes.&lt;/b&gt; To simulate replay-based probes,
  the simulator records the first data-carrying packet in a connection between a Shadowsocks client and
  server,
  then sends the data to the server in a separate connection.
  To send byte-changed probes,
  the simulator randomly changes certain bytes of the payload to different values.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;Non-replay probes.&lt;/b&gt; To simulate non-replay probes,
  the simulator simply sends a specific number of random bytes.
  The justification here is that the servers’ reactions to
  the GFW’s non-replay probes are no different from their reaction to random probes.
  For comprehensiveness,
  we let the simulator send random probes with lengths of between&amp;nbsp;1 and 99&amp;nbsp;bytes,
  as well as probes of 221&amp;nbsp;bytes.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;Choice of servers.&lt;/b&gt; We chose a set of Shadowsocks implementations that has significant
  coverage over the
  Shadowsocks circumvention ecosystem.
  Specifically,
  we tested the Shadowsocks implementations that met any of the following conditions:
  1)&amp;nbsp;is available in a repository of a major Linux distribution;
  2)&amp;nbsp;is available in the pip repository;
  3)&amp;nbsp;is the latest version;
  4)&amp;nbsp;is widely used by any popular one-click script;
  5)&amp;nbsp;has a recent fix to any distinguishable reactions as the result of a preliminary report on
  these attacks; or
  6)&amp;nbsp;was recommended to us by developers.
  Using this selection process,
  we chose Shadowsocks-libev (v3.0.8, v3.1.3, v3.2.5, v3.3.1, and v3.3.3) and OutlineVPN (v1.0.6,
  v1.0.7, and v1.0.8).&lt;/p&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;5-2&#34;&gt;
  &lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt;
  &lt;a id=&#34;sec:5.2-intention-behind-random-probes&#34; href=&#34;#sec:5.2-intention-behind-random-probes&#34;&gt;5.2 Intention Behind Random Probes&lt;/a&gt;
&lt;/h3&gt;

&lt;h3 class=&#34;subsubSectionHead&#34; id=&#34;5-2-1&#34;&gt;
  &lt;a id=&#34;sec:5.2.1-servers-reations-to-random-probes&#34; href=&#34;#sec:5.2.1-servers-reations-to-random-probes&#34;&gt;5.2.1 Servers’ reactions to random probes&lt;/a&gt;
&lt;/h3&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;a href=&#34;#fig:10-reactions-to-random-probes&#34; title=&#34;Figure 10&#34;&gt;Figure&amp;nbsp;10&lt;/span&gt;&lt;/a&gt;
  summarizes the reactions of different Shadowsocks implementations
  to random probes of various lengths.
  For each implementation,
  we group their available encryption methods
  first by stream ciphers versus AEAD ciphers,
  then by the size of their initialization vector (IV) or salt.
  For example, among the stream ciphers supported by Shadowsocks-libev are
  “aes-128-ctr” and “aes-256-cfb”.
  Both of these have a 16-byte IV,
  so we group them in the “16&amp;nbsp;bytes” row.
  Refer to &lt;a href=&#34;#sec:2-background&#34; title=&#34;2. Background on Shadowsocks&#34;&gt;&lt;span&gt;Section&amp;nbsp;2&lt;/span&gt;&lt;/a&gt;
  for the meaning of IV and salt in the context of Shadowsocks protocols.&lt;/p&gt;

&lt;figure id=&#34;fig:10-reactions-to-random-probes&#34; class=&#34;float&#34;&gt;
  &lt;div class=&#34;figure&#34;&gt;
    &lt;div class=&#34;subfigure&#34; id=&#34;fig:10a-stream-ciphers&#34;&gt;&lt;p&gt;
      &lt;img src=&#34;../figures/reaction_to_random_probes_stream_cipher.png&#34; alt=&#34;Stream ciphers&#34; style=&#34;width: 100%;&#34;&gt;
      &lt;figcaption style=&#34;text-align:center;&#34;&gt;&lt;b&gt;&lt;a href=&#34;#fig:10a-stream-ciphers&#34;&gt;(a) Stream ciphers&lt;/a&gt;&lt;/b&gt;&lt;/figcaption&gt;&lt;/p&gt;
    &lt;div class=&#34;subfigure&#34; id=&#34;fig:10b-AEAD-ciphers&#34;&gt;
      &lt;p&gt;&lt;img src=&#34;../figures/reaction_to_random_probes_aead_cipher.png&#34; alt=&#34;AEAD ciphers&#34; style=&#34;width: 100%;&#34;&gt;
      &lt;figcaption style=&#34;text-align:center;&#34;&gt;&lt;b&gt;&lt;a href=&#34;#fig:10b-AEAD-ciphers&#34;&gt;(b) AEAD ciphers&lt;/a&gt;&lt;/b&gt;&lt;/figcaption&gt;&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;figcaption&gt;&lt;span&gt;&lt;a href=&#34;#fig:10-reactions-to-random-probes&#34;&gt;&lt;b&gt;Figure 10&lt;/a&gt;&lt;/span&gt;. &lt;/span&gt;&lt;span&gt;
      Reactions of Shadowsocks servers to synthetic random probes with different lengths.
      (&lt;a href=&#34;#fig:10a-stream-ciphers&#34; title=&#34;(a) ‣ Figure 10&#34;&gt;&lt;span&gt;a&lt;/span&gt;&lt;/a&gt;)
      is for
      servers using the stream ciphers construction and
      (&lt;a href=&#34;#fig:10b-AEAD-ciphers&#34; title=&#34;(b)&#34;&gt;&lt;span&gt;b&lt;/span&gt;&lt;/a&gt;)
      is for the
      AEAD ciphers construction.
      Payload lengths that the GFW has been observed to send are marked in red.
      “TIMEOUT” means the server waits until the prober or itself times out.
      “RST” means the server sends an immediate TCP RST.
      “FIN/ACK” means the server will be the first to send a FIN/ACK to close the connection.
      &lt;/b&gt;&lt;/span&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p class=&#34;indent&#34;&gt;Server reactions in &lt;a href=&#34;#fig:10-reactions-to-random-probes&#34; title=&#34;Figure 10&#34;&gt;
    &lt;span&gt;Figure&amp;nbsp;10&lt;/span&gt;&lt;/a&gt;
  are represented by the codes “TIMEOUT”, “RST”, and “FIN/ACK”.
  TIMEOUT means that the server waits for more data, until either it or the prober reaches a timeout.
  The GFW usually times out in less than 10&amp;nbsp;seconds,
  while the default timeout value for many Shadowsocks implementations is 60&amp;nbsp;seconds.
  Therefore, TIMEOUT typically means that the prober, and not the server,
  is the first to send a FIN/ACK to close the connection.
  FIN/ACK and RST mean that the server sends either a FIN/ACK or a RST immediately.
  The choice of FIN/ACK or RST may depend on OS-level socket handling.
  Frolov et al. showed [&lt;span class=&#34;cite&#34;&gt;&lt;a href=&#34;#cite:Frolov2020&#34;&gt;19&lt;/a&gt;, §IV.C&lt;/span&gt;] that when closing a socket
  on Linux,
  a FIN/ACK will be sent if the application has read all the data from its kernel socket buffer;
  otherwise, a RST will be sent.
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;a href=&#34;#fig:10-reactions-to-random-probes&#34; title=&#34;Figure 10&#34;&gt;
    &lt;span&gt;Figure&amp;nbsp;10&lt;/span&gt;&lt;/a&gt;
  demonstrates that different implementations using different forms of encryption
  have fingerprintable reactions to probes of varying lengths.
  Below we discuss how the GFW may exploit these reactions
  in each Shadowsocks implementation.&lt;/p&gt;


&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;Shadowsocks-libev v3.0.8–v3.2.5 with stream ciphers.&lt;/b&gt; Take the first row in (&lt;a
    href=&#34;#fig:10a-stream-ciphers&#34; title=&#34;(a)&#34;&gt;a&lt;/a&gt;)
  as an example.
  Shadowsocks-libev v3.0.8–v3.2.5 servers with an 8-byte IV
  exhibit three reactions, depending on the length of the random probe.
  When the length of a probe is 1–8 bytes,
  the server always times out.
  This is because the server has only received a (partial) IV
  and is awaiting a target specification.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;When the length of a probe is 9–14 bytes,
  the server usually sends an immediate RST,
  because it has not received a complete target specification.
  The shortest random probe likely to decrypt to a meaningful specification is 15&amp;nbsp;bytes,
  which meets the minimal length requirement of a complete IPv4 specification (see &lt;a href=&#34;#sec:2-background&#34;
    title=&#34;2. Background on Shadowsocks&#34;&gt;&lt;span&gt;Section&amp;nbsp;2&lt;/span&gt;&lt;/a&gt;).
  A&amp;nbsp;hostname specification could be slightly shorter than 15&amp;nbsp;bytes,
  but only if the 1-byte hostname length field happens to decrypt to the value&amp;nbsp;1 or&amp;nbsp;2.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;When the length of a probe is 15 or more bytes, the server may have any of the three possible
  reactions:
  RST, TIMEOUT, or FIN/ACK. The reaction depends on whether the random payload decrypts to a meaningful target
  specification.
  The first requirement for a meaningful target specification is that the address type must be one of the values
  0x01, 0x03, or 0x04;
  any other value results in an immediate RST. Because the address type is a 1-byte field, we might expect to see an
  immediate RST
  in a \(1-\frac{3}{256}\) fraction of tests. What we actually see is a fraction closer to \(1-\frac{3}{16}\).
  The reason for this discrepancy is that Shadowsocks-libev masks out the upper 4 bits of the field (an artifact of
  the “one time auth” scheme mentioned in &lt;a href=&#34;#sec:2.1-historical-vulnerabilities&#34;
    title=&#34;2.1. Historical Vulnerabilities and Defenses&#34;&gt;Section 2.1&lt;/a&gt;).
  The probability of a RST reaction decreases with longer probes, because longer probes are more likely to contain a
  complete IPv6 address specification,
  or a hostname length that is consistent with the packet length.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;Upon receiving a complete target specification,
  the Shadowsocks server tries to connect to the given target.
  Specifically, when the address type field decrypts to 0x04,
  the server tries to resolve the hostname;
  when the address type is 0x01 or 0x03,
  the server sends a SYN packet to the target’s IP address and port.
  Since this behavior is a connection to an essentially random IP address or hostname,
  the connections almost always fail;
  and when that happens,
  the server sends a FIN/ACK to the client to close the connection.
  If the remote connection does not fail immediately
  (for instance, if the remote host does not respond and the Shadowsocks server
  spends time retransmitting SYN packets),
  the GFW’s probers will be the first to close the connection with a FIN/ACK.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;Shadowsocks-libev v3.0.8–v3.2.5 with AEAD ciphers.&lt;/b&gt; With AEAD ciphers, servers have a different set of fingerprintable reactions.
  The first row in (&lt;a href=&#34;#fig:10b-AEAD-ciphers&#34; title=&#34;(b)&#34;&gt;b&lt;/a&gt;)
  represents
  an AEAD cipher with a 16-byte salt.
  When the probe length is less than or equal to 50&amp;nbsp;bytes,
  the server times out waiting for more data.
  It wants there to be at least enough data for the salt (16&amp;nbsp;bytes),
  encrypted length prefix (2&amp;nbsp;bytes),
  encrypted length tag (16&amp;nbsp;bytes),
  and another tag (16&amp;nbsp;bytes) for the first encrypted data payload.
  Once 51&amp;nbsp;bytes or more are received,
  the server tries to decrypt the data received,
  which invariably fails with an authentication error.
  (Unlike with stream ciphers, where random data may by chance decrypt to something meaningful,
  with AEAD ciphers, the probability of that happening is negligible.)
  The server sends out an immediate RST because of the authentication error.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;Changes in Shadowsocks-libev v3.3.1–v3.3.3.&lt;/b&gt; The parsing logic for Shadowsocks-libev
  v3.3.1–v3.3.3 is very similar to what we just
  described above for Shadowsocks-libev v3.0.8–v3.2.5.
  The only difference, as shown in (&lt;a href=&#34;#fig:10b-AEAD-ciphers&#34; title=&#34;(b)&#34;&gt;b&lt;/a&gt;),
  is that the server always times out instead of sometimes sending an immediate RST &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:madeye2019&#34;&gt;32&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;OutlineVPN v1.0.6.&lt;/b&gt; OutlineVPN exclusively uses the AEAD cipher construction of Shadowsocks,
  and only with the “chacha20-ietf-poly1305” method, which has a 32-byte salt.
  In OutlineVPN v1.0.6,
  when the probe length is less than 50&amp;nbsp;bytes, the server times out.
  The server wants 50&amp;nbsp;bytes in order to parse the following structure:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;pre style=&#34;font-size: 15px;&#34;&gt;
  [32-byte salt][2-byte encrypted length][16-byte length tag]&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p class=&#34;indent&#34;&gt;Unlike Shadowsocks-libev,
  the OutlineVPN server does not additionally wait for enough data
  for there to be a second tag.
  More uniquely, the OutlineVPN server sends a FIN/ACK immediately
  when it receives a probe of exactly 50&amp;nbsp;bytes.
  When the probe length is greater than 50&amp;nbsp;bytes, the server sends an immediate RST due to an
  authentication failure.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;OutlineVPN v1.0.7–v1.0.8.&lt;/b&gt; Starting in OutlineVPN v1.0.7,
  the developers fixed the server’s distinguishable reactions &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Frolov2020&#34;&gt;19&lt;/a&gt;, &lt;a
      href=&#34;#cite:outline-timeout&#34;&gt;48&lt;/a&gt;]&lt;/span&gt;.
  Like the newer versions of Shadowsocks-libev using AEAD ciphers, the server always times out, regardless of probe
  length.
&lt;/p&gt;

&lt;h3 class=&#34;subsubSectionHead&#34;, id=&#34;5-2-2&#34;&gt;&lt;span&gt;&lt;/span&gt;&lt;a id=&#34;sec:5.2.2-attackers&#34; href=&#34;#sec:5.2.2-attackers&#34;&gt;5.2.2 How an attacker might use the information from
    random probes&lt;/a&gt;&lt;/h3&gt;

&lt;p class=&#34;indent&#34;&gt;We use the general term “attacker” instead of “GFW”
  in this section for two reasons.
  First, attacks may be performed not only by the GFW,
  but by any censor capable of observing Shadowsocks traffic.
  Second, due to the black-box nature of the GFW,
  we can only guess at its internal logic and cannot confirm our suspicions.
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;An attacker can identify a Shadowsocks server with high confidence
  using statistical analysis of its reactions to random probes.
  Specifically, an attacker can send a set of probes with varying lengths to the server and record its
  reactions.
  After collecting enough reactions,
  the attacker may perform a statistical analysis.
  A&amp;nbsp;server whose reactions fit into one row of &lt;a href=&#34;#fig:10-reactions-to-random-probes&#34;
    title=&#34;Figure 10&#34;&gt;&lt;span&gt;Figure&amp;nbsp;10&lt;/span&gt;&lt;/a&gt;
  is then very likely to be a Shadowsocks server.
  The fact that the GFW needs only a single probe to detect and block a Tor server &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Winter2012a&#34;&gt;56&lt;/a&gt;]&lt;/span&gt;,
  but a set of several probes before blocking a Shadowsocks server, suggests that the GFW does some statistical
  analysis of this kind to detect Shadowsocks.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;The attacker may even be able to infer the length of the IV
  in older Shadowsocks implementations.
  Furthermore, when the IV is inferred to be 12&amp;nbsp;bytes long,
  the attacker knows that the cipher used is “chacha20-ietf”,
  because that is the only supported cipher with a 12-byte IV &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:ShadowsocksWhitepaper&#34;&gt;46&lt;/a&gt;, §Stream
    Cipher&lt;/span&gt;].&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;By similar reasoning,
  an attacker may be able to infer which Shadowsocks implementation is in use,
  and its approximate version.
  For example, whether an authentication error results in a RST or a TIMEOUT can be used to determine
  if the server is running an older or newer implementation &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Frolov2020&#34;&gt;19&lt;/a&gt;]&lt;/span&gt;.
  Whether the probability of RST is around &lt;span id=&#34;S5.SS2.SSS2.p4.m1&#34; class=&#34;ltx_Math&#34;&gt;&lt;span class=&#34;mjpage&#34;&gt;&lt;span
        class=&#34;mjx-chtml&#34;&gt;&lt;span class=&#34;mjx-math&#34; aria-label=&#34;1-\frac{3}{256}&#34;&gt;&lt;span class=&#34;mjx-mrow&#34;
            aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;mjx-mn&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span
              class=&#34;mjx-mo MJXc-space2&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                style=&#34;padding-top: 0.298em; padding-bottom: 0.446em;&#34;&gt;−&lt;/span&gt;&lt;/span&gt;&lt;span
              class=&#34;mjx-mfrac MJXc-space2&#34;&gt;&lt;span class=&#34;mjx-box MJXc-stacked&#34;
                style=&#34;width: 1.202em; padding: 0px 0.12em;&#34;&gt;&lt;span class=&#34;mjx-numerator&#34;
                  style=&#34;font-size: 70.7%; width: 1.7em; top: -1.393em;&#34;&gt;&lt;span class=&#34;mjx-mn&#34; style=&#34;&#34;&gt;&lt;span
                      class=&#34;mjx-char MJXc-TeX-main-R&#34;
                      style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span
                  class=&#34;mjx-denominator&#34; style=&#34;font-size: 70.7%; width: 1.7em; bottom: -0.687em;&#34;&gt;&lt;span class=&#34;mjx-mn&#34;
                    style=&#34;&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                      style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;256&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span
                  style=&#34;border-bottom: 1.3px solid; top: -0.296em; width: 1.202em;&#34;
                  class=&#34;mjx-line&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;height: 1.471em; vertical-align: -0.486em;&#34;
                class=&#34;mjx-vsize&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; or &lt;span id=&#34;S5.SS2.SSS2.p4.m2&#34;
    class=&#34;ltx_Math&#34;&gt;&lt;span class=&#34;mjpage&#34;&gt;&lt;span class=&#34;mjx-chtml&#34;&gt;&lt;span class=&#34;mjx-math&#34;
          aria-label=&#34;1-\frac{3}{16}&#34;&gt;&lt;span class=&#34;mjx-mrow&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;mjx-mn&#34;&gt;&lt;span
                class=&#34;mjx-char MJXc-TeX-main-R&#34;
                style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span
              class=&#34;mjx-mo MJXc-space2&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                style=&#34;padding-top: 0.298em; padding-bottom: 0.446em;&#34;&gt;−&lt;/span&gt;&lt;/span&gt;&lt;span
              class=&#34;mjx-mfrac MJXc-space2&#34;&gt;&lt;span class=&#34;mjx-box MJXc-stacked&#34;
                style=&#34;width: 0.849em; padding: 0px 0.12em;&#34;&gt;&lt;span class=&#34;mjx-numerator&#34;
                  style=&#34;font-size: 70.7%; width: 1.2em; top: -1.393em;&#34;&gt;&lt;span class=&#34;mjx-mn&#34; style=&#34;&#34;&gt;&lt;span
                      class=&#34;mjx-char MJXc-TeX-main-R&#34;
                      style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span
                  class=&#34;mjx-denominator&#34; style=&#34;font-size: 70.7%; width: 1.2em; bottom: -0.687em;&#34;&gt;&lt;span class=&#34;mjx-mn&#34;
                    style=&#34;&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                      style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;16&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span
                  style=&#34;border-bottom: 1.3px solid; top: -0.296em; width: 0.849em;&#34;
                  class=&#34;mjx-line&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;height: 1.471em; vertical-align: -0.486em;&#34;
                class=&#34;mjx-vsize&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
  determines whether the Shadowsocks implementation applies a mask to the address type field.
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;In practice, the GFW is observed to send a set of type&amp;nbsp;NR1 and NR2 probes to the
  same server.
  Instead of sending the probes all at once,
  the GFW sends a few of them in each hour.
  We conjecture that the GFW does this in order to make the probes less noticeable and harder to
  fingerprint.
  A&amp;nbsp;design like this also allows the GFW to use resources in a more balanced and efficient way.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;The probe lengths that the GFW sends, marked in red in &lt;a href=&#34;#fig:10-reactions-to-random-probes&#34;
    title=&#34;Figure 10&#34;&gt;&lt;span&gt;Figure&amp;nbsp;10&lt;/span&gt;&lt;/a&gt;,
  coincide with thresholds at which reactions change in certain Shadowsocks implementations.
  For example, a server that uses ciphers with 8-byte IVs will time out 8-byte probes, and immediately
  RST 9-byte probes.
  The GFW covers this transition point by sending probes of length 7, 8, and 9&amp;nbsp;bytes.
  However it is worth noting that
  type&amp;nbsp;NR1 probes of length 32–34 bytes and 40–41 bytes, as well as type&amp;nbsp;NR2 probes of length
  221&amp;nbsp;bytes,
  do not coincide with any server thresholds.
  However, they may still be useful to identify Shadowsocks servers.
  Depending on implementation,
  these probes may be used to calculate the empirical probability for a server to send a RST.
  If the possibility is close to &lt;span id=&#34;S5.SS2.SSS2.p6.m1&#34; class=&#34;ltx_Math&#34;&gt;&lt;span class=&#34;mjpage&#34;&gt;&lt;span
        class=&#34;mjx-chtml&#34;&gt;&lt;span class=&#34;mjx-math&#34; aria-label=&#34;1-\frac{3}{256}&#34;&gt;&lt;span class=&#34;mjx-mrow&#34;
            aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;mjx-mn&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span
              class=&#34;mjx-mo MJXc-space2&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                style=&#34;padding-top: 0.298em; padding-bottom: 0.446em;&#34;&gt;−&lt;/span&gt;&lt;/span&gt;&lt;span
              class=&#34;mjx-mfrac MJXc-space2&#34;&gt;&lt;span class=&#34;mjx-box MJXc-stacked&#34;
                style=&#34;width: 1.202em; padding: 0px 0.12em;&#34;&gt;&lt;span class=&#34;mjx-numerator&#34;
                  style=&#34;font-size: 70.7%; width: 1.7em; top: -1.393em;&#34;&gt;&lt;span class=&#34;mjx-mn&#34; style=&#34;&#34;&gt;&lt;span
                      class=&#34;mjx-char MJXc-TeX-main-R&#34;
                      style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span
                  class=&#34;mjx-denominator&#34; style=&#34;font-size: 70.7%; width: 1.7em; bottom: -0.687em;&#34;&gt;&lt;span class=&#34;mjx-mn&#34;
                    style=&#34;&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                      style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;256&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span
                  style=&#34;border-bottom: 1.3px solid; top: -0.296em; width: 1.202em;&#34;
                  class=&#34;mjx-line&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;height: 1.471em; vertical-align: -0.486em;&#34;
                class=&#34;mjx-vsize&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; or &lt;span id=&#34;S5.SS2.SSS2.p6.m2&#34;
    class=&#34;ltx_Math&#34;&gt;&lt;span class=&#34;mjpage&#34;&gt;&lt;span class=&#34;mjx-chtml&#34;&gt;&lt;span class=&#34;mjx-math&#34;
          aria-label=&#34;1-\frac{3}{16}&#34;&gt;&lt;span class=&#34;mjx-mrow&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;mjx-mn&#34;&gt;&lt;span
                class=&#34;mjx-char MJXc-TeX-main-R&#34;
                style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span
              class=&#34;mjx-mo MJXc-space2&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                style=&#34;padding-top: 0.298em; padding-bottom: 0.446em;&#34;&gt;−&lt;/span&gt;&lt;/span&gt;&lt;span
              class=&#34;mjx-mfrac MJXc-space2&#34;&gt;&lt;span class=&#34;mjx-box MJXc-stacked&#34;
                style=&#34;width: 0.849em; padding: 0px 0.12em;&#34;&gt;&lt;span class=&#34;mjx-numerator&#34;
                  style=&#34;font-size: 70.7%; width: 1.2em; top: -1.393em;&#34;&gt;&lt;span class=&#34;mjx-mn&#34; style=&#34;&#34;&gt;&lt;span
                      class=&#34;mjx-char MJXc-TeX-main-R&#34;
                      style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span
                  class=&#34;mjx-denominator&#34; style=&#34;font-size: 70.7%; width: 1.2em; bottom: -0.687em;&#34;&gt;&lt;span class=&#34;mjx-mn&#34;
                    style=&#34;&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                      style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;16&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span
                  style=&#34;border-bottom: 1.3px solid; top: -0.296em; width: 0.849em;&#34;
                  class=&#34;mjx-line&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;height: 1.471em; vertical-align: -0.486em;&#34;
                class=&#34;mjx-vsize&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;,
  the attacker may infer that the Shadowsocks server uses stream ciphers.&lt;/p&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;5-3&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:5.3-intention-behind-replay-based-probes&#34;
    href=&#34;#sec:5.3-intention-behind-replay-based-probes&#34;&gt;5.3 Intention Behind Replay-based Probes&lt;/a&gt;&lt;/h3&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;Servers’ reactions to replay-based probes.&lt;/b&gt; &lt;a href=&#34;#tbl:5-servers-reactions&#34; title=&#34;Table 5&#34;&gt;
    &lt;spa&#34;&gt;Table&amp;nbsp;5&lt;/span&gt;
  &lt;/a&gt;
  summarizes various servers’ reactions to replay-based probes.
  This table only covers the case where replays are long enough to contain a complete target
  specification,
  because,
  in the absence of external traffic shaping,
  the genuine payloads on which the replays are based
  are always long enough to contain that information.&lt;/p&gt;

&lt;figure class=&#34;table&#34; id=&#34;tbl:5-servers-reactions&#34;&gt;
  &lt;div class=&#34;tabular&#34;&gt;
    &lt;table class=&#34;tabular&#34;&gt;
      &lt;tbody&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;Implementations&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;Encryption Mode&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;Identical Replay&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;Byte-changed Replay&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34; rowspan=&#34;2&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;Shadowsocks-libev v3.0.8–v3.2.5&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;Stream&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;R&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;R/T/F&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;AEAD&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;R&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;R&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34; rowspan=&#34;2&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;Shadowsocks-libev v3.3.1, v3.3.3&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;Stream&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;T&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;T/F&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;AEAD&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;T&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;T&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;OutlineVPN&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;AEAD&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;D&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;T&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
  &lt;figcaption&gt;
    &lt;span&gt;&lt;a href=&#34;#tbl:5-servers-reactions&#34;&gt;&lt;b&gt;Table 5&lt;/a&gt;&lt;/span&gt;. Servers’ reactions to identical replays
    (type&amp;nbsp;R1) and byte-changed replays (types&amp;nbsp;R2–R5) differ depending on replay detection and stream/AEAD
    ciphers. R:&amp;nbsp;Reset, T:&amp;nbsp;Timeout, F:&amp;nbsp;FIN/ACK, D:&amp;nbsp;Sending Data. Here
    we assume all replays are long enough to contain a complete IV and target specification.&lt;/b&gt;
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;Implementations without a replay defense mechanism.&lt;/b&gt; The reaction of a server to
  type&amp;nbsp;R1 identical replays depends on whether it has a
  replay defense mechanism or not.
  Servers without a replay defense mechanism, such as OutlineVPN v1.0.6–v1.0.8,
  respond to identical replay with a stream of data in one or many packets.
  As soon as a prober receives data,
  it ACKs the data and sends FIN/ACK to close the connection.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;An adversary might even guess what protocol is being proxied,
  by checking if the length of
  the server’s responses are always the same for a given replayed payload.
  Although the responses of the Shadowsocks servers are encrypted,
  a consistent response length may suggest that the underlying message
  is an HTTP response or TLS ServerHello, for example.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;A&amp;nbsp;key observation is that the offsets of the bytes that change in probe
  types&amp;nbsp;R2, R3 and&amp;nbsp;R5 contain the IV or salt.
  This means that a Shadowsocks server’s reactions to these probes are no different from the random
  probes discussed in &lt;a href=&#34;#sec:5.2-intention-behind-random-probes&#34;
    title=&#34;5.2. Intention Behind Random Probes&#34;&gt;&lt;span&gt;Section&amp;nbsp;5.2&lt;/span&gt;&lt;/a&gt;.
  Type&amp;nbsp;R4 probes may be a chosen ciphertext attack, targeting Shadowsocks servers that use stream
  ciphers with a 16-byte IV.
  Comparing to probes of type&amp;nbsp;R2, R3 and&amp;nbsp;R5,
  which are also essentially chosen cipher attacks,
  type&amp;nbsp;R4 is more fine-grained,
  because a censor can get the exact probability of each reaction by enumerating all 255 altered byte
  values.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;Implementations with a replay defense mechanism.&lt;/b&gt; Even with a replay defense mechanism, the
  behaviors of a Shadowsocks implementation may
  be distinguishable.
  For example, Shadowsocks-libev implements its replay defense using a Bloom filter
  that remembers what IVs and salts have already been received &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:riobard2017&#34;&gt;40&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;As shown in &lt;a href=&#34;#tbl:5-servers-reactions&#34; title=&#34;Table 5&#34;&gt;&lt;span&gt;Table&amp;nbsp;5&lt;/span&gt;&lt;/a&gt;,
  when AEAD ciphers are used,
  servers’ reactions to identical and byte-changed replays are consistent.
  However, when stream ciphers are used,
  the servers’ reactions to identical and byte-changed replays are inconsistent.
  For identical replays,
  Shadowsocks-libev v3.0.8–v3.2.5 is guaranteed to send a RST immediately;
  while the same server receiving byte-changed replays will have one of three different reactions:
  Reset, Timeout, or FIN/ACK.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;Furthermore, with stream ciphers,
  an attacker can detect whether a replay filter exists.
  For example, the attacker can send the same random probe to the server twice.
  If the first probe happens to cause an outgoing connection to some remote server,
  while the second probe is blocked by the replay filter,
  the difference in the timing of responses will tell the attacker
  that a replay filter is in place.
  Although we cannot confirm that this is the exact logic used by the GFW,
  we did observe that around 10% of type&amp;nbsp;NR2 probes were sent to the same server more than once.
&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34;, id=&#34;6&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:6-blocking-module&#34; href=&#34;#sec:6-blocking-module&#34;&gt;6
    GFW’s Blocking Module&lt;/a&gt;&lt;/h2&gt;

&lt;p class=&#34;indent&#34;&gt;Since July 2019, we have been running experiments on 63 vantage points in China, the US, the UK,
  the Netherlands, and Singapore. Each vantage point was used either as a server or a client. We used various
  Shadowsocks implementations &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:JigsawOutline&#34;&gt;25&lt;/a&gt;, &lt;a href=&#34;#cite:Shadowsocks&#34;&gt;44&lt;/a&gt;, &lt;a
      href=&#34;#cite:ShadowsocksLibev&#34;&gt;45&lt;/a&gt;, &lt;a href=&#34;#cite:shadowsocksr-csharp&#34;&gt;47&lt;/a&gt;]&lt;/span&gt;
  and settings. Interestingly,
  although many of our VPSes have been under intensive active probing, only three have been blocked. In this
  section, we analyze and speculate on the nature of the blocking and unblocking mechanism used by the GFW.
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt; &lt;b&gt;Block by port, or by IP address?&lt;/b&gt; The three blocked servers were not all blocked in the same
  way. Some were blocked by dropping all traffic from a specific server port (block by port),
  and some by dropping traffic from all ports (block by IP address).
  In either case, only the server-to-client direction was blocked.
  This method of unidirectional packet dropping, or null routing, is similar to the way GFW blocks Tor servers, as
  shown in previous work [&lt;span class=&#34;cite&#34;&gt;&lt;a href=&#34;#cite:Winter2012a&#34;&gt;56&lt;/a&gt;&lt;/span&gt;].
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;It may be reasonable, from the censor’s point of view, to block an entire IP address.
  The servers running Shadowsocks are usually dedicated solely to circumvention,
  and do not host other services that the censor cares to keep accessible,
  so there is little harm to the censor in blocking the server entirely.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;When to unblock?&lt;/b&gt; GFW is known to probe blocked Tor servers every 12 hours, and unblock them
  when Tor no longer appears to be running [&lt;span class=&#34;cite&#34;&gt;&lt;a href=&#34;#cite:Winter2012a&#34;&gt;56&lt;/a&gt;&lt;/span&gt;]. In
  contrast,
  in our experiments,
  we saw no regular checks to see whether blocked servers were still running Shadowsocks.
  One of our servers became unblocked more than a week after being blocked.
  The server had continued to run Shadowsocks even after being blocked,
  and we observed no probes to the server before the GFW unblocked it.
  This may be because,
  as explained in &lt;a href=&#34;#sec:5.2-intention-behind-random-probes&#34;
    title=&#34;5.2. Intention Behind Random Probes&#34;&gt;&lt;span&gt;Section&amp;nbsp;5.2&lt;/span&gt;&lt;/a&gt;,
  it takes more probes to confirm Shadowsocks than it does Tor,
  making post-block checks more expensive.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt; &lt;b&gt;Why were our servers rarely blocked?&lt;/b&gt; While the fact that active probing happens is clear,
  it is still unclear to us how active probing relates to the blocking of Shadowsocks servers.
  Few of the servers that received probes were blocked.
  One of the servers that was blocked had operated for only around 15&amp;nbsp;minutes,
  and had not received nearly as many probes as other servers that did not get blocked.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;We have two hypotheses attempting to explain this phenomenon.
  One is that the blocking of Shadowsocks is controlled by human factors.
  That is, the GFW may maintain a list of detected or suspected Shadowsocks servers,
  and it is up to a human decision whether the servers on the list should be blocked or not.
  This hypothesis would partially explain why more blocking has been reported during politically sensitive periods
  of time &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Fifield2019b&#34;&gt;17&lt;/a&gt;, &lt;a href=&#34;#cite:Ghost2017&#34;&gt;21&lt;/a&gt;]&lt;/span&gt;.
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;Another hypothesis is that active probing is ineffective against the particular Shadowsocks
  implementations and versions that we used in most of our experiments. Indeed, all three servers that got blocked
  were running ShadowsocksR &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:shadowsocksr-csharp&#34;&gt;47&lt;/a&gt;]&lt;/span&gt; or Shadowsocks-python
  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Shadowsocks&#34;&gt;44&lt;/a&gt;]&lt;/span&gt;, which differ from the
  Shadowsocks-libev &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:ShadowsocksLibev&#34;&gt;45&lt;/a&gt;]&lt;/span&gt; and OutlineVPN &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:JigsawOutline&#34;&gt;25&lt;/a&gt;]&lt;/span&gt; implementations
  we used in most of
  the experiments. However, numerous user reports suggest that Shadowsocks-libev and OutlineVPN are not immune to
  being
  blocked, in general.

&lt;h2 class=&#34;sectionHead&#34;, id=&#34;7&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:7-circumvention&#34; href=&#34;#sec:7-circumvention&#34;&gt;7
    Circumvention&lt;/a&gt;&lt;/h2&gt;

&lt;p class=&#34;indent&#34;&gt;The detection of Shadowsocks happens in two stages:
  1)&amp;nbsp;passive identification of suspected Shadowsocks connections, then
  2)&amp;nbsp;active probing of the server.
  Therefore, to avoid blocking, one can
  1)&amp;nbsp;evade the passive detector, or
  2)&amp;nbsp;respond to active probes in a way that does not result in blocking.
  Below, we introduce and discuss these two circumvention strategies.
  We have shared our findings and proposed defenses with the developers of Shadowsocks-libev and OutlineVPN,
  which has led to improvements to those tools (see&amp;nbsp;&lt;a href=&#34;#sec:disclosure&#34;
    title=&#34;Responsible Disclosure ‣ How China Detects and Blocks Shadowsocks&#34;&gt;&lt;span&gt;Responsible
      Disclosure&lt;/span&gt;&lt;/a&gt;).&lt;/p&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;7-1&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:7.1-defense-against-traffic-analysis&#34;
    href=&#34;#sec:7.1-defense-against-traffic-analysis&#34;&gt;7.1 Defense Against Traffic Analysis&lt;/a&gt;&lt;/h3&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;Changing payload lengths in the client-to-server stream is effective.&lt;/b&gt; In &lt;a
    href=&#34;#sec:4.2-experiment-result-and-analysis&#34;
    title=&#34;4.2. Experiment Results and Analysis&#34;&gt;&lt;span&gt;Section&amp;nbsp;4.2&lt;/span&gt;&lt;/a&gt;,
  we showed that the GFW considers the length of the first data packet in a connection to identify
  Shadowsocks traffic.
  This finding suggests that
  we can mitigate the GFW’s traffic analysis attack
  by altering packet lengths.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;Brdgrd &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:brdgrd&#34;&gt;54&lt;/a&gt;]&lt;/span&gt; (bridge guard) is software that can
  be run on a Shadowsocks
  server that causes the client to break its Shadowsocks handshake into several smaller packets. Brdgrd was
  originally intended to disrupt the detection of Tor bridges by forcing the GFW to do complicated TCP reassembly
  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Winter2012a&#34;&gt;56&lt;/a&gt;]&lt;/span&gt;, but here we take advantage of its ability to
  shape
  client packet sizes.
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;As a test, we set up a Shadowsocks server and let a Shadowsocks client make
  16&amp;nbsp;connections to it every 5&amp;nbsp;minutes.
  We enabled and disabled brdgrd at random times,
  and measured the rate of active probing under both conditions.
  &lt;a href=&#34;#tbl:1-experiment-timeline&#34; title=&#34;Table 1&#34;&gt;&lt;span&gt;Table&amp;nbsp;1&lt;/span&gt;&lt;/a&gt;
  summarizes the time span of the experiment.
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;a href=&#34;#fig:11-effectiveness-of-brdgrd&#34; title=&#34;Figure 11&#34;&gt;&lt;span&gt;Figure&amp;nbsp;11&lt;/span&gt;&lt;/a&gt;
  shows the number of probes received by the Shadowsocks server over time.
  It shows probing going to zero within a few hours of activating brdgrd.
  As soon as we disabled brdgrd again, active probing resumed.
  The second time we enabled brdgrd,
  probing completely stopped for around 40&amp;nbsp;hours, but later a few more probes arrived.
  Note that receiving a few active probes does not necessarily mean that changing packet sizes is
  ineffective,
  because the server still received a small number of probes
  even 50&amp;nbsp;hours after we deactivated the client.
  The reduction in probing while brdgrd was active is not just a coincidence,
  because no significant change in the number of active probes was observed in a control server
  that did not have brdgrd installed.&lt;/p&gt;

  &lt;figure id=&#34;fig:11-effectiveness-of-brdgrd&#34; class=&#34;figure&#34;&gt;&lt;img src=&#34;../figures/effectiveness_of_brdgrd.png&#34;
    id=&#34;fig:11-effectiveness-of-brdgrd&#34; alt=&#34;&#34;&gt;
  &lt;figcaption style=&#34;text-align: center;&#34;&gt;&lt;span&gt;&lt;span&gt;&lt;a href=&#34;#fig:11-effectiveness-of-brdgrd&#34;&gt;&lt;b&gt;Figure 11&lt;/a&gt;&lt;/span&gt;.
    &lt;/span&gt;&lt;span&gt;
      The intensity of active probing diminishes when brdgrd is active.&lt;/b&gt;
    &lt;/span&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p class=&#34;indent&#34;&gt;We also set up a server that had brdgrd enabled from the beginning,
  before any Shadowsocks client had connected to&amp;nbsp;it.
  Although the same number of connections were made to both servers,
  this server received even fewer probes than the server that had not enabled brdgrd until after
  starting.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;These observations further confirm that the traffic analysis module of the GFW
  considers the TCP segment size of traffic
  from client to server when detecting Shadowsocks traffic.
  Modifying packet sizes can significantly mitigate active probing by disrupting the first step in
  classification.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;Limitations on Brdgrd.&lt;/b&gt; While brdgrd can effectively reduce active probing for the time
  being,
  it cannot be regarded as a permanent solution to Shadowsocks blocking for the following reasons.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;First, to make brdgrd less fingerprintable, the TCP window size is designed to be
  randomly picked from a range. However, having inconsistent TCP window size announcements may itself be
  a fingerprintable feature. This issue may be mitigated by sticking to a fixed TCP window size for a
  certain amount of time.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;Second, brdgrd will have to announce a TCP window size that is uncommonly small,
  unlike that of any real TCP implementation.
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;Third, brdgrd can result in connection failure for some Shadowsocks implementations.
  As shown in &lt;a href=&#34;#fig:10-reactions-to-random-probes&#34; title=&#34;Figure 10&#34;&gt;&lt;/span&gt;Figure&amp;nbsp;10&lt;/span&gt;&lt;/a&gt;,
  some Shadowsocks implementations will immediately RST the connection
  when the first data-carrying packet is not long enough to contain a complete target specification.
  It is not rare for brdgrd to chop the packets into such small pieces, triggering an immediate RST.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;We conclude that a more thoughtful traffic shaping mechanism is required to defend
  against the traffic analysis while preserving usability and efficiency.&lt;/p&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;7-2&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:7.2-defense-against-active-probing&#34;
    href=&#34;#sec:7.2-defense-against-active-probing&#34;&gt;7.2 Defense Against Active Probing&lt;/a&gt;&lt;/h3&gt;

&lt;p class=&#34;indent&#34;&gt;Even with perfect traffic shaping—meaning
  the adversary cannot passively distinguish Shadowsocks circumvention traffic from legitimate traffic at
  all—it
  is important to defend against active probing.
  This is because a well-resourced adversary could skip the traffic analysis step and probe
  &lt;em&gt;all&lt;/em&gt; IP–port pairs that are observed to receive connections.
  Here we summarize and discuss strategies for defending against replay-based probes and random probes.
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;Proper authentication.&lt;/b&gt; As introduced in&amp;nbsp;&lt;a href=&#34;#sec:5-intention-behind-probes&#34;
    title=&#34;5. Intention Behind the Probes&#34;&gt;&lt;span&gt;Section&amp;nbsp;5&lt;/span&gt;&lt;/a&gt;,
  the lack of authentication in Shadowsocks stream ciphers
  permits probing attacks that exploit ciphertext malleability.
  This design flaw has been the cause of many vulnerabilities in Shadowsocks &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:BreakWa112015&#34;&gt;8&lt;/a&gt;, &lt;a href=&#34;#cite:Fifield2017&#34;&gt;15&lt;/a&gt;, &lt;a href=&#34;#cite:Fifield2019a&#34;&gt;16&lt;/a&gt;, &lt;a
      href=&#34;#cite:Peng2020&#34;&gt;36&lt;/a&gt;,
    &lt;a href=&#34;#cite:printempw2017&#34;&gt;37&lt;/a&gt;]&lt;/span&gt; as well as other circumvention tools like V2Ray &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Anonymous2020&#34;&gt;2&lt;/a&gt;, &lt;a href=&#34;#cite:p4gefau1t2020&#34;&gt;35&lt;/a&gt;]&lt;/span&gt;. We
  therefore suggest that users use
  AEAD ciphers exclusively, and encourage circumvention tool developers to deprecate unauthenticated cryptographic
  constructions entirely.
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;Replay filtering based on both nonces and timing.&lt;/b&gt; We have shown in&amp;nbsp;&lt;a
    href=&#34;#sec:3.5-delay-of-replay-attacks&#34; title=&#34;3.5. Delay of Replay Attacks&#34;&gt;&lt;span&gt;Section&amp;nbsp;3.5&lt;/span&gt;&lt;/a&gt;
  that a realistic adversary model of active probing should permit
  the censor to perform replay attacks after an arbitrarily long delay.
  Such a model reveals an asymmetry between attack and defense
  for purely nonce-based replay defense mechanism.
  While it does not cost much in terms of resources for the GFW to record &lt;em&gt;a
    few&lt;/em&gt; legitimate payloads and replay them after a fairly long
  delay,
  it is costly and complicated for Shadowsocks servers to remember the nonces of &lt;em&gt;all&lt;/em&gt; authenticated
  connections forever,
  or until the master password is changed.
  The Shadowsocks server must remember those nonces even after being restarted;
  otherwise, the replay filter will be ineffective against replays that span a restart.
  Fortunately, this unfair game can be inverted by the addition of a timing-based defense mechanism: the server
  only
  responds to authenticated connections that are not replays and whose timestamp is within an expiration time,
  similar to what VMess servers do &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Anonymous2020&#34;&gt;2&lt;/a&gt;]&lt;/span&gt;. This way, the
  server does not need to
  remember nonces forever, but only for a limited time.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;Being consistent in servers’ reactions.&lt;/b&gt; As discussed in&amp;nbsp;&lt;a
    href=&#34;#sec:5-intention-behind-probes&#34; title=&#34;5. Intention Behind the Probes&#34;&gt;&lt;span&gt;Section&amp;nbsp;5&lt;/span&gt;&lt;/a&gt;,
  circumvention protocols should react consistently not only in normal operation,
  but also when an error occurs.
  Censors may intentionally trigger protocol edge cases in an attempt to fingerprint servers.
  Using inconsistencies similar to what we found in Shadowsocks-libev and OutlineVPN, Frolov et al. &lt;span
    class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Frolov2020&#34;&gt;19&lt;/a&gt;]&lt;/span&gt; demonstrated that various proxy servers, including
  Shadowsocks-python and
  OutlineVPN, can be identified using TCP flags and timing metadata after the servers close a connection.
  They suggest that proxy servers should read forever when errors occur,
  rather than terminating the connection.
  Doing so not only avoids revealing a specific timeout value,
  but also lets the server close the connection with consistent TCP flags in the non-error case.
&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;8&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:8-related-work&#34; href=&#34;#sec:8-related-work&#34;&gt;8
    Related Work&lt;/a&gt;&lt;/h2&gt;
&lt;p class=&#34;indent&#34;&gt;
&lt;p&gt;There has been much work on the traffic analysis of Shadowsocks &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Baerts2015&#34;&gt;4&lt;/a&gt;,
    &lt;a href=&#34;#cite:Deng2017&#34;&gt;12&lt;/a&gt;, &lt;a href=&#34;#cite:Liu2019&#34;&gt;28&lt;/a&gt;, &lt;a href=&#34;#cite:Zeng2019&#34;&gt;57-59&lt;/a&gt;]&lt;/span&gt;. Some studies
  assume a more powerful adversary
  than what we observed in practice. For example, Zeng et al. &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Zeng2019&#34;&gt;57&lt;/a&gt;]&lt;/span&gt;
  assume that the adversary considers the DNS behavior
  of hosts when building its detection model. Many proof-of-concept tools to detect Shadowsocks traffic have been
  developed. Zhixin Wang proposed an attack based on the high entropy of the first few packets &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:isofew2017&#34;&gt;23&lt;/a&gt;]&lt;/span&gt;. Madeye used the
  distribution of packet lengths to identify Shadowsocks and ShadowsocksR traffic &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:madeye2017&#34;&gt;31&lt;/a&gt;]&lt;/span&gt;. In addition, Wang et al.
  demonstrated that entropy-based traffic analysis could accurately identify circumvention protocols like obfs3,
  obfs4, and FTE &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:LiangWang2015&#34;&gt;51&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;Many studies and reports empirically show that the GFW deploys active probing techniques to
  discover censorship
  circumvention tools. The known targeted protocols include Tor &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Dunna2018&#34;&gt;13&lt;/a&gt;,
    &lt;a href=&#34;#cite:TimWilde2012&#34;&gt;52&lt;/a&gt;, &lt;a href=&#34;#cite:Winter2012a&#34;&gt;56&lt;/a&gt;]&lt;/span&gt;, obfs2 &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Winter2013&#34;&gt;55&lt;/a&gt;]&lt;/span&gt;, VPN
  Gate &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:NoboriShinjo2014&#34;&gt;34&lt;/a&gt;]&lt;/span&gt;, and other VPN services &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Jacobs2015&#34;&gt;24&lt;/a&gt;]&lt;/span&gt;. Winter et
  al. &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Winter2012a&#34;&gt;56&lt;/a&gt;]&lt;/span&gt; studied how GFW discovered Tor relays by active
  probing as early as 2012. Dunna et al. &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Dunna2018&#34;&gt;13&lt;/a&gt;]&lt;/span&gt; revisited
  active
  probing against Tor in 2018. Ensafi et al. &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Ensafi2015&#34;&gt;14&lt;/a&gt;]&lt;/span&gt;
  fingerprinted the GFW’s probes targeting different protocols and
  inferred the underlying infrastructure of the probing machines. The developers of V2Ray reported that V2Ray
  servers have experienced replay attacks since as early as 2017 &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:projectv2ray2017&#34;&gt;39&lt;/a&gt;]&lt;/span&gt;. To the best of our knowledge, the earliest
  documentation of active probing being used against Shadowsocks was in June 2019 &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:bluesky2019&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;

&lt;p class=&#34;ident&#34;&gt;Many theoretical active-probing attacks and defenses have been proposed &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Anonymous2020&#34;&gt;2&lt;/a&gt;,
    &lt;a href=&#34;#cite:BreakWa112015&#34;&gt;8&lt;/a&gt;, &lt;a href=&#34;#cite:Cheng2020&#34;&gt;10&lt;/a&gt;, &lt;a href=&#34;#cite:Fifield2017&#34;&gt;15&lt;/a&gt;, &lt;a
      href=&#34;#cite:nametoolong2020&#34;&gt;33&lt;/a&gt;, &lt;a href=&#34;#cite:p4gefau1t2020&#34;&gt;35-37&lt;/a&gt;]&lt;/span&gt;. Most notably, Frolov et
  al. &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Frolov2020&#34;&gt;19&lt;/a&gt;]&lt;/span&gt; identified
  various proxy servers using TCP flags and timing information when a server closes a connection. Frolov and
  Wustrow &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:FrolovWustrow2020&#34;&gt;20&lt;/a&gt;]&lt;/span&gt;
  demonstrate a promising direction against active probing, namely hiding proxies behind popular applications. This
  concept, known as &lt;em&gt;application frontin&lt;/em&gt;, has been adopted in many popular circumvention tools &lt;span
    class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:klzgrad&#34;&gt;27&lt;/a&gt;,
    &lt;a href=&#34;#cite:FrolovForwardProxy&#34;&gt;43&lt;/a&gt;, &lt;a href=&#34;#cite:trojan&#34;&gt;49&lt;/a&gt;, &lt;a href=&#34;#cite:V2Ray&#34;&gt;50&lt;/a&gt;]&lt;/span&gt;.
&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;9&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:9-future-work&#34; href=&#34;#sec:9-future-work&#34;&gt;9
    Future Work&lt;/a&gt;&lt;/h2&gt;
&lt;p class=&#34;indent&#34;&gt;In this work, we focused on the GFW’s active probing against Shadowsocks specifically.
  However, several pieces of evidence from our observations suggest that the GFW targets active probing
  against other,
  unknown circumvention protocols. First, as introduced in &lt;a href=&#34;#sec:4.1-experiments&#34; title=&#34;Section 4.1&#34;&gt;Section
    4.1&lt;/a&gt;,
  we were able to trigger active probes using random data. Since other circumvention protocols, like VMess for
  example, also fully encrypt their traffic, they are likely to be detected, too. Second, as introduced in
  &lt;a href=&#34;#sec:4.2-experiment-result-and-analysis&#34; title=&#34;Section 4.2&#34;&gt;Section 4.2&lt;/a&gt;,
  we have discovered new types of probes that were not received by our Shadowsocks and OutlineVPN servers.
  If these probes are not directed towards Shadowsocks, what are they directed towards?
  Third, in June 2020, VMess was discovered to be vulnerable to active probing v2ray-replay-summary [&lt;span
    class=&#34;cite&#34;&gt;&lt;a href=&#34;#cite:Anonymous2020&#34;&gt;2&lt;/a&gt;&lt;/span&gt;, &lt;span class=&#34;cite&#34;&gt;&lt;a
      href=&#34;#cite:nametoolong2020&#34;&gt;33&lt;/a&gt;&lt;/span&gt;,
  &lt;span class=&#34;cite&#34;&gt;&lt;a href=&#34;#cite:p4gefau1t2020&#34;&gt;35&lt;/a&gt;&lt;/span&gt;].
  We want to test if this vulnerability has actually been exploited by the GFW.
&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34;, id=&#34;10&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:10-ethics&#34; href=&#34;#sec:10-ethics&#34;&gt;10 Ethics&lt;/a&gt;&lt;/h2&gt;
&lt;p class=&#34;indent&#34;&gt;Censorship measurement research carries an element of risk,
  which can range from having a sensitive request being logged, to legal repercussions.
  We took steps to minimize risk while conducting our measurement experiments.
  First,
  this work does not involve human subjects.
  All network traffic was generated automatically by programs under our control.
  Second, although it may be low risk to have sensitive queries observed by the censor,
  we tried to limit the number of these sensitive queries.
  Specifically,in only one of our experiments did we use a host in China as a Shadowsocks server.
  In that experiment, we initially had the server proxy the browsing traffic of a subset of Alexa top
  1&amp;nbsp;million websites.
  After running the experiment for 45&amp;nbsp;hours, we decided to remove censored websites from the browsing
  list,
  so that the host in China would not make connections to sensitive websites outside the firewall. Third,
  we minimized the potential collateral damage of blocking by using dedicated IP addresses for our
  circumvention servers.
  We rented our non-censoring network hosts from a VPS provider that permits Shadowsocks and OutlineVPN,
  and in fact even offers automatic installation of OutlineVPN.&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34;, id=&#34;11&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:11-conclusion&#34; href=&#34;#sec:11-conclusion&#34;&gt;11
    Conclusion&lt;/a&gt;&lt;/h2&gt;
&lt;p class=&#34;indent&#34;&gt;In this study, we revealed and systematically studied the GFW’s latest weapon against
  Shadowsocks.
  We found that the GFW detects potential Shadowsocks traffic using the size and entropy of the first data
  packet in each connection;
  it then sends active probes, in different stages,
  to the suspected servers.
  The active probes consist of replay-based probes and random probes with varied lengths.
  They are essentially different types of attacks that target vulnerabilities in different Shadowsocks
  implementations.
  We fingerprinted the probers and found differences relative to previous work on active probing.
  A network-level side channel reveals that the probes sent by thousands of IP addresses are very likely
  controlled by a set of centralized structures.&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;Finally, based on our gained understanding,
  we presented a temporary workaround that mitigates the GFW’s traffic analysis attack.
  We further discussed the essential strategies to defend against active probing.
  We closely collaborated with developers to make Shadowsocks and related tools more resistant to blocking.
&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;disclosure&#34;&gt;&lt;a id=&#34;sec:disclosure&#34; href=&#34;#sec:disclosure&#34;&gt;Responsible Disclosure&lt;/a&gt;&lt;/h2&gt;

&lt;p class=&#34;indent&#34;&gt;We shared our findings and suggestions to the Shadowsocks-libev and OutlineVPN developers.
  OutlineVPN released v1.1.0 in February 2020, providing an option to defend against replay of client data [&lt;a
    href=&#34;#cite:JigsawOutlineV110&#34;&gt;26&lt;/a&gt;].
  OutlineVPN further provided defense against replay of server data in September 2020.
  In July 2020, OutlineVPN developers merged the header and initial data into one packet,
  making the size of the first packet in each connection variable [&lt;span class=&#34;cite&#34;&gt;&lt;a
      href=&#34;#cite:Fortuna2020&#34;&gt;18&lt;/a&gt;&lt;/span&gt;].
  The OutlineVPN developers reported at the beginning of September 2020 that their servers had not been
  blocked since these changes were made,
  although they had still been intensively probed. We also shared our preliminary findings publicly [&lt;a
    href=&#34;#cite:Anonymous2019&#34;&gt;3&lt;/a&gt;&lt;/span&gt;],
  which potentially led to the replay defense feature in Shadowsocks-rust v1.8.5 [&lt;span class=&#34;cite&#34;&gt;&lt;/span&gt;&lt;a
    href=&#34;#cite:shadowsocks-rust-v1.8.5&#34;&gt;60&lt;/a&gt;&lt;/span&gt;].&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;acknowledgements&#34;&gt;&lt;a id=&#34;sec:acknowledgements&#34;
    href=&#34;#sec:acknowledgements&#34;&gt;Acknowledgements&lt;/a&gt;&lt;/h2&gt;
&lt;p class=&#34;indent&#34;&gt;The authors express their thanks to Shadowsocks-libev developers;
  Vinicius Fortuna and other OutlineVPN developers at Jigsaw; and Eric Wustrow and other researchers at the
  University of Colorado.
  They are also thankful to Dave Levin for serving as the shepherd of this paper. The work was supported in
  part by the
  &lt;a href=&#34;https://www.nsf.gov/awardsearch/showAward?AWD_ID=1553301&#34;&gt;NSF CAREER grant CNS-1553301&lt;/a&gt;.
&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;availability&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:availability&#34;
    href=&#34;#sec:availability&#34;&gt;Availability&lt;/a&gt;&lt;/h2&gt;
&lt;p class=&#34;indent&#34;&gt;To maintain reproducibility and stimulate future work,
  we have released our data and source code
  to the maximum extent that does not harm our anonymity:
  &lt;a href=&#34;https://gfw.report/publications/imc20/en&#34;&#34;&gt;https://gfw.report/publications/imc20/en&lt;/a&gt;.
&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34;, id=&#34;references&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:references&#34; href=&#34;#sec:references&#34;&gt;References&lt;/a&gt;
&lt;/h2&gt;
&lt;div class=&#34;bibliography&#34;&gt;
  &lt;ol class=&#34;citation-numbering&#34;&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Anonymous2014&#34;&gt;&lt;/a&gt; Anonymous. Towards a Comprehensive Picture of the Great Firewall&#39;s DNS Censorship.
      In&lt;em&gt;Free and Open Communications on the Internet&lt;/em&gt;,
      USENIX, 2014.
      &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci14/foci14-anonymous.pdf&#34;&gt;
        https://www.usenix.org/system/files/conference/foci14/foci14-anonymous.pdf.&lt;/a&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Anonymous2020&#34;&gt;&lt;/a&gt;Anonymous. 2020. &lt;em&gt;Summary on Recently Discovered V2Ray Weaknesses.&lt;/em&gt;
      Retrieved
      September
      2020 from &lt;a class=&#34;url&#34;
        href=&#34;https://gfw.report/blog/v2ray_weaknesses/en/&#34;&gt;https://gfw.report/blog/v2ray_weaknesses/en/&lt;/a&gt;.
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Anonymous2019&#34;&gt;&lt;/a&gt;Anonymous, Anonymous, Anonymous, David Fifield, and Amir Houmansadr. 2019.
      &lt;em&gt;How
        China Detects and Blocks Shadowsocks.&lt;/em&gt; Retrieved September 2020 from &lt;a class=&#34;url&#34;
        href=&#34;https://gfw.report/blog/gfw_shadowsocks&#34;&gt;https://gfw.report/blog/gfw_shadowsocks&lt;/a&gt;.
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Baerts2015&#34;&gt;&lt;/a&gt;Matthieu Baerts and Quentin De Coninck. 2015. &lt;em&gt;Multipath TCP with real Smartphone
        applications.
        Master’s thesis.&lt;/em&gt; Université catholique de Louvain. &lt;a class=&#34;url&#34;
        href=&#34;https://dial.uclouvain.be/memoire/ucl/object/thesis:366&#34;&gt;https://dial.uclouvain.be/memoire/ucl/object/thesis:366&lt;/a&gt;.
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:bluesky2019&#34;&gt;&lt;/a&gt;bluesky. 2019. &lt;em&gt;6.4期间翻墙观察.&lt;/em&gt; Retrieved February 2020 from &lt;a class=&#34;url&#34;
        href=&#34;https://pincong.rocks/article/2019&#34;&gt;https://pincong.rocks/article/2019&lt;/a&gt;.
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Bock2020&#34;&gt;&lt;/a&gt;Kevin Bock, iyouport, Anonymous, Louis-Henri Merino, David Fifield, Amir Houmansadr, and Dave
      Levin. 2020. &lt;em&gt;Exposing and Circumventing China’s Censorship of ESNI.&lt;/em&gt; Retrieved September 2020 from &lt;a
        class=&#34;url&#34;
        href=&#34;https://github.com/net4people/bbs/issues/43#issuecomment-673322409&#34;&gt;https://github.com/net4people/bbs/issues/43#issuecomment-673322409&lt;/a&gt;.
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Borman2014&#34;&gt;&lt;/a&gt;David Borman, Bob Braden, Van Jacobson, and Richard Scheffenegger. 2014. &lt;em&gt;TCP Extensions
        for
        High Performance.&lt;/em&gt; RFC 7323. RFC Editor. &lt;a class=&#34;url&#34;
        href=&#34;https://tools.ietf.org/html/rfc7323&#34;&gt;https://tools.ietf.org/html/rfc7323&lt;/a&gt;.
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:BreakWa112015&#34;&gt;&lt;/a&gt;BreakWa11. 2015. &lt;em&gt;Shadowsocks协议的弱点分析和改进.&lt;/em&gt; Retrieved August 2019 from &lt;a
        class=&#34;url&#34;
        href=&#34;https://web.archive.org/web/20160829052958/https://github.com/breakwa11/shadowsocks-rss/issues/38&#34;&gt;https://web.archive.org/web/20160829052958/https://github.com/breakwa11/shadowsocks-rss/issues/38&lt;/a&gt;.
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Chai2019&#34;&gt;&lt;/a&gt;Zimo Chai, Amirhossein Ghafari, and Amir Houmansadr. 2019. On the Importance of Encrypted-SNI
      (ESNI) to Censorship Circumvention. In &lt;em&gt;Free and Open Communications on the Internet.&lt;/em&gt; USENIX. &lt;a
        class=&#34;url&#34;
        href=&#34;https://www.usenix.org/system/files/foci19-paper_chai_update.pdf&#34;&gt;https://www.usenix.org/system/files/foci19-paper_chai_update.pdf&lt;/a&gt;.
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Cheng2020&#34;&gt;&lt;/a&gt;Jiaxing Cheng, Ying Li, Cheng Huang, Ailing Yu, and Tao Zhang. 2020. ACER: detecting
      Shadowsocks
      server based on active probe technology. &lt;em&gt;Journal of Computer Virology and Hacking Techniques 16,&lt;/em&gt; 3
      (2020),
      217–227. &lt;a class=&#34;url&#34;
        href=&#34;https://link.springer.com/article/10.1007/s11416-020-00353-z&#34;&gt;https://link.springer.com/article/10.1007/s11416-020-00353-z&lt;/a&gt;.
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Clayton2006&#34;&gt;&lt;/a&gt;Richard Clayton, Steven J. Murdoch, and Robert N. M. Watson. 2006. Ignoring the Great
      Firewall
      of China. In &lt;em&gt;Privacy Enhancing Technologies.&lt;/em&gt; Springer, 20–35. &lt;a class=&#34;url&#34;
        href=&#34;https://www.cl.cam.ac.uk/~rnc1/ignoring.pdf&#34;&gt;https://www.cl.cam.ac.uk/~rnc1/ignoring.pdf&lt;/a&gt;.
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Deng2017&#34;&gt;&lt;/a&gt;Ziye Deng, Zihan Liu, Zhouguo Chen, and Yubin Guo. 2017. The Random Forest based Detection of
      Shadowsock’s Traffic. In Intelligent Human-Machine Systems and Cybernetics. &lt;em&gt;IEEE.&lt;/em&gt; &lt;a class=&#34;url&#34;
        href=&#34;https://www.directory-root.com/wp-content/uploads/2018/02/Shadowsocks-Sniffing.pdf&#34;&gt;https://www.directory-root.com/wp-content/uploads/2018/02/Shadowsocks-Sniffing.pdf&lt;/a&gt;.
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Dunna2018&#34;&gt;&lt;/a&gt;Arun Dunna, Ciarán O’Brien, and Phillipa Gill. 2018. Analyzing China’s Blocking of
      Unpublished
      Tor Bridges. In &lt;em&gt;Free and Open Communications on the Internet.&lt;/em&gt; USENIX. &lt;a class=&#34;url&#34;
        href=&#34;https://www.usenix.org/system/files/conference/foci18/foci18-paperdunna.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci18/foci18-paperdunna.pdf&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Ensafi2015&#34;&gt;&lt;/a&gt;Roya Ensafi, David Fifield, Philipp Winter, Nick Feamster, Nicholas Weaver, and Vern
      Paxson.
      2015. Examining How the Great Firewall Discovers Hidden Circumvention Servers. In &lt;em&gt;Internet Measurement
        Conference.&lt;/em&gt; ACM. &lt;a class=&#34;url&#34;
        href=&#34;http://conferences2.sigcomm.org/imc/2015/papers/p445.pdf&#34;&gt;http://conferences2.sigcomm.org/imc/2015/papers/p445.pdf&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Fifield2017&#34;&gt;&lt;/a&gt;David Fifield. 2017. &lt;em&gt;Shadowsocks active-probing attacks and defenses.&lt;/em&gt; Retrieved
      February 2020
      from &lt;a class=&#34;url&#34;
        href=&#34;https://groups.google.com/d/msg/traffic-obf/CWO0peBJLGc/Py-clLSTBwAJ&#34;&gt;https://groups.google.com/d/msg/traffic-obf/CWO0peBJLGc/Py-clLSTBwAJ&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Fifield2019a&#34;&gt;&lt;/a&gt;David Fifield. 2019. &lt;em&gt;Decryption vulnerability in Shadowsocks stream ciphers.&lt;/em&gt;
      Retrieved June
      2020 from &lt;a class=&#34;url&#34;
        href=&#34;https://github.com/net4people/bbs/issues/24&#34;&gt;https://github.com/net4people/bbs/issues/24&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Fifield2019b&#34;&gt;&lt;/a&gt;David Fifield. 2019. &lt;em&gt;Intensive Shadowsocks blocking in China since
        mid-September.&lt;/em&gt;
      Retrieved
      February 2020 from &lt;a class=&#34;url&#34;
        href=&#34;https://github.com/net4people/bbs/issues/16&#34;&gt;https://github.com/net4people/bbs/issues/16&lt;/a&gt;&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Fortuna2020&#34;&gt;&lt;/a&gt;Vinicius Fortuna. 2020. &lt;em&gt;Outline changes since the prelinimary report.&lt;/em&gt; Retrieved
      September 2020
      from &lt;a class=&#34;url&#34;
        href=&#34;https://github.com/net4people/bbs/issues/22#issuecomment-670781627&#34;&gt;https://github.com/net4people/bbs/issues/22#issuecomment-670781627&lt;/a&gt;&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Frolov2020&#34;&gt;&lt;/a&gt;Sergey Frolov, Jack Wampler, and Eric Wustrow. 2020. Detecting Probe-resistant Proxies. In
      &lt;em&gt;Network and Distributed System Security.&lt;/em&gt; The Internet Society. &lt;a class=&#34;url&#34;
        href=&#34;https://www.ndss-symposium.org/wp-content/uploads/2020/02/23087.pdf&#34;&gt;https://www.ndss-symposium.org/wp-content/uploads/2020/02/23087.pdf&lt;/a&gt;&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:FrolovWustrow2020&#34;&gt;&lt;/a&gt;Sergey Frolov and Eric Wustrow. 2020. HTTPT: A Probe-Resistant Proxy. In &lt;em&gt;Free
        and
        Open
        Communications on the Internet.&lt;/em&gt; USENIX. &lt;a class=&#34;url&#34;
        href=&#34;https://www.usenix.org/system/files/foci20-paper-frolov.pdf&#34;&gt;https://www.usenix.org/system/files/foci20-paper-frolov.pdf&lt;/a&gt;&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Ghost2017&#34;&gt;&lt;/a&gt;ghost (unnamed user). 2017. &lt;em&gt;How did GFW block circumvention tools during the 19th
        people’s
        congress?&lt;/em&gt; Retrieved February 2020 from &lt;a class=&#34;url&#34;
        href=&#34;https://github.com/net4people/bbs/issues/1&#34;&gt;https://github.com/net4people/bbs/issues/1&lt;/a&gt;&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;#cite:goShadowsocks2&#34;&gt;&lt;/a&gt;go Shadowsocks2 developers. [n.d.]. &lt;em&gt;go-Shadowsocks2.&lt;/em&gt; &lt;a class=&#34;url&#34;
        href=&#34;https://github.com/shadowsocks/go-shadowsocks2&#34;&gt;https://github.com/shadowsocks/go-shadowsocks2&lt;/a&gt;&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:isofew2017&#34;&gt;&lt;/a&gt;isofew. 2017. &lt;em&gt;sssniff.&lt;/em&gt; &lt;a class=&#34;url&#34;
        href=&#34;https://github.com/isofew/sssniff&#34;&gt;https://github.com/isofew/sssniff&lt;/a&gt;&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Jacobs2015&#34;&gt;&lt;/a&gt; Andrew Jacobs. 2015. &lt;em&gt;China further tightens grip on the Internet.&lt;/em&gt; The New York
      Times
      (Jan. 2015). Retrieved February 2020 from &lt;a class=&#34;url&#34;
        href=&#34;https://www.nytimes.com/2015/01/30/world/asia/china-clamps-down-still-harder-on-internet-access.html&#34;&gt;https://www.nytimes.com/2015/01/30/world/asia/china-clamps-down-still-harder-on-internet-access.html&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:JigsawOutline&#34;&gt;&lt;/a&gt; Jigsaw. [n.d.]. &lt;em&gt;Outline.&lt;/em&gt; &lt;a class=&#34;url&#34;
        href=&#34;https://getoutline.org/&#34;&gt;https://getoutline.org/&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:JigsawOutlineV110&#34;&gt;&lt;/a&gt; Jigsaw. [n.d.]. &lt;em&gt;Outline v1.1.0.&lt;/em&gt; &lt;a class=&#34;url&#34;
        href=&#34;https://github.com/Jigsaw-Code/outline-ss-server/releases/tag/v1.1.0&#34;&gt;https://github.com/Jigsaw-Code/outline-ss-server/releases/tag/v1.1.0&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:klzgrad&#34;&gt;&lt;/a&gt; klzgrad. [n.d.]. &lt;em&gt;NaïveProxy.&lt;/em&gt; &lt;a class=&#34;url&#34;
        href=&#34;https://github.com/klzgrad/naiveproxy&#34;&gt;https://github.com/klzgrad/naiveproxy&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Liu2019&#34;&gt;&lt;/a&gt; Xiaolei Liu, Zhongliu Zhuo, Xiaojiang Du, Xiaosong Zhang, Qingxin Zhu, and Mohsen Guizani.
      2019. Adversarial attacks against profile HMM website fingerprinting detection model. &lt;em&gt;Cognitive Systems
        Research
        54&lt;/em&gt; (2019), 83–89. &lt;a class=&#34;url&#34;
        href=&#34;https://doi.org/10.1016/j.cogsys.2018.12.005&#34;&gt;https://doi.org/10.1016/j.cogsys.2018.12.005&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Lu2017&#34;&gt;&lt;/a&gt; Zhen Lu, Zhenhua Li, Jian Yang, Tianyin Xu, Ennan Zhai, Yao Liu, and Christo Wilson. 2017.
      Accessing Google Scholar under Extreme Internet Censorship: A Legal Avenue. In &lt;em&gt;Middleware.&lt;/em&gt; ACM. &lt;a
        class=&#34;url&#34; href=&#34;https://censorbib.nymity.ch/pdf/Lu2017a.pdf&#34;&gt;https://censorbib.nymity.ch/pdf/Lu2017a.pdf&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:madeye2016&#34;&gt;&lt;/a&gt; madeye. 2016. &lt;em&gt;Changes between shadowsocks-libev v2.5.4 and v2.5.5.&lt;/em&gt; &lt;a class=&#34;url&#34;
        href=&#34;https://github.com/shadowsocks/shadowsocks-libev/compare/v2.5.4...v2.5.5&#34;&gt;https://github.com/shadowsocks/shadowsocks-libev/compare/v2.5.4...v2.5.5&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:madeye2017&#34;&gt;&lt;/a&gt; madeye. 2017. &lt;em&gt;sssniff.&lt;/em&gt; &lt;a class=&#34;url&#34;
        href=&#34;https://github.com/madeye/sssniff&#34;&gt;https://github.com/madeye/sssniff&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:madeye2019&#34;&gt;&lt;/a&gt; madeye. 2019. &lt;em&gt;Simplify the server auto blocking mechanism.&lt;/em&gt; Retrieved
      September 2020
      from &lt;a class=&#34;url&#34;
        href=&#34;https://github.com/shadowsocks/shadowsocks-libev/commit/a99c39c7dd314939082348d96d06727570b514a8&#34;&gt;https://github.com/shadowsocks/shadowsocks-libev/commit/a99c39c7dd314939082348d96d06727570b514a8&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:nametoolong2020&#34;&gt;&lt;/a&gt; nametoolong. 2020. &lt;em&gt;Some extra ways of active probing.&lt;/em&gt; Retrieved
      September 2020
      from &lt;a class=&#34;url&#34;
        href=&#34;https://github.com/v2ray/v2ray-core/issues/2539&#34;&gt;https://github.com/v2ray/v2ray-core/issues/2539&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:NoboriShinjo2014&#34;&gt;&lt;/a&gt; Daiyuu Nobori and Yasushi Shinjo. 2014. VPN Gate: A Volunteer-Organized Public
      VPN Relay System with Blocking Resistance for Bypassing Government Censorship Firewalls. In &lt;em&gt;Networked Systems
        Design and Implementation. USENIX.&lt;/em&gt; &lt;a class=&#34;url&#34;
        href=&#34;https://www.usenix.org/system/files/conference/nsdi14/nsdi14-papernobori.pdf&#34;&gt;https://www.usenix.org/system/files/conference/nsdi14/nsdi14-papernobori.pdf&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:p4gefau1t2020&#34;&gt;&lt;/a&gt;p4gefau1t, studentmain, et al. 2020.
      &lt;em&gt;vmess协议设计和实现缺陷可导致服务器遭到主动探测特征识别(附PoC).&lt;/em&gt; Retrieved September 2020 from &lt;a class=&#34;url&#34;
        href=&#34;https://github.com/v2ray/v2ray-core/issues/2523&#34;&gt;https://github.com/v2ray/v2ray-core/issues/2523&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Peng2020&#34;&gt;&lt;/a&gt;Zhiniang Peng. 2020. &lt;em&gt;Redirect attack on Shadowsocks stream ciphers.&lt;/em&gt;
      Retrieved
      June 2020 from &lt;a class=&#34;url&#34;
        href=&#34;https://github.com/edwardz246003/shadowsocks&#34;&gt;https://github.com/edwardz246003/shadowsocks&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:printempw2017&#34;&gt;&lt;/a&gt;printempw. 2017. &lt;em&gt;为何shadowsocks 要弃用一次性验证(OTA).&lt;/em&gt; Retrieved February 2020 from &lt;a
        class=&#34;url&#34;
        href=&#34;https://web.archive.org/web/20191002190325/https://printempw.github.io/why-do-shadowsocks-deprecate-ota/&#34;&gt;https://web.archive.org/web/20191002190325/https://printempw.github.io/why-do-shadowsocks-deprecate-ota/&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:ProgramThink2017&#34;&gt;&lt;/a&gt;ProgramThink. 2017. &lt;em&gt;2017年10月翻墙快报(兼谈用I2P突破封锁).&lt;/em&gt; Retrieved February 2019 from
      &lt;a class=&#34;url&#34;
        href=&#34;https://program-think.blogspot.com/2017/10/gfw-news.html&#34;&gt;https://program-think.blogspot.com/2017/10/gfw-news.html&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:projectv2ray2017&#34;&gt;&lt;/a&gt;projectv2ray. 2017. &lt;em&gt;Replay attack monitored by V2Ray.&lt;/em&gt; Retrieved February
      2020
      from &lt;a class=&#34;url&#34;
        href=&#34;https://github.com/shadowsocks/shadowsocks-org/issues/44#issuecomment-282525358&#34;&gt;https://github.com/shadowsocks/shadowsocks-org/issues/44#issuecomment-282525358&lt;/a&gt;
      (originally from &lt;a class=&#34;url&#34;
        href=&#34;https://twitter.com/projectv2ray/status/833959357423448064&#34;&gt;https://twitter.com/projectv2ray/status/833959357423448064&lt;/a&gt;).&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:riobard2017&#34;&gt;&lt;/a&gt;riobard, madeye, Mygod, et al. 2017. &lt;em&gt;Defend against replay attack.&lt;/em&gt;
      Retrieved February 2020 from &lt;a class=&#34;url&#34;
        href=&#34;https://github.com/shadowsocks/shadowsocks-org/issues/44&#34;&gt;https://github.com/shadowsocks/shadowsocks-org/issues/44&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:ShadowsocksRustDevelopers&#34;&gt;&lt;/a&gt;Shadowsocks rust developers. [n.d.]. &lt;em&gt;Shadowsocks-rust.&lt;/em&gt; &lt;a
        class=&#34;url&#34;
        href=&#34;https://github.com/shadowsocks/shadowsocks-rust&#34;&gt;https://github.com/shadowsocks/shadowsocks-rust&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Scott2017&#34;&gt;&lt;/a&gt;Will Scott. 2017. Reports of China disrupting shadowsocks. Retrieved February 2019 from
      &lt;a class=&#34;url&#34;
        href=&#34;https://groups.google.com/d/msg/traffic-obf/dqw6CQLR944/1Icd4691AQAJ&#34;&gt;https://groups.google.com/d/msg/traffic-obf/dqw6CQLR944/1Icd4691AQAJ&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:FrolovForwardProxy&#34;&gt;&lt;/a&gt;Sergey Frolov and others. [n.d.]. &lt;em&gt;forwardproxy.&lt;/em&gt; &lt;a class=&#34;url&#34;
        href=&#34;https://github.com/caddyserver/forwardproxy&#34;&gt;https://github.com/caddyserver/forwardproxy&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Shadowsocks&#34;&gt;&lt;/a&gt;Shadowsocks developers. [n.d.]. &lt;em&gt;Shadowsocks.&lt;/em&gt; &lt;a class=&#34;url&#34;
        href=&#34;https://github.com/shadowsocks/shadowsocks/tree/master&#34;&gt;https://github.com/shadowsocks/shadowsocks/tree/master&lt;/a&gt;.&lt;/a&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:ShadowsocksLibev&#34;&gt;&lt;/a&gt;Shadowsocks developers. [n.d.]. &lt;em&gt;Shadowsocks-libev.&lt;/em&gt; &lt;a class=&#34;url&#34;
        href=&#34;https://github.com/shadowsocks/shadowsocks-libev&#34;&gt;https://github.com/shadowsocks/shadowsocks-libev&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:ShadowsocksWhitepaper&#34;&gt;&lt;/a&gt;Shadowsocks developers. 2019. &lt;em&gt;Shadowsocks whitepaper.&lt;/em&gt; &lt;a class=&#34;url&#34;
        href=&#34;https://github.com/shadowsocks/shadowsocks-org/blob/master/whitepaper/whitepaper.md&#34;&gt;https://github.com/shadowsocks/shadowsocks-org/blob/master/whitepaper/whitepaper.md&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:shadowsocksr-csharp&#34;&gt;&lt;/a&gt;shadowsocksr-csharp developers. [n.d.]. &lt;em&gt;shadowsocksr-csharp.&lt;/em&gt; &lt;a
        class=&#34;url&#34;
        href=&#34;https://github.com/shadowsocksrr/shadowsocksr-csharp&#34;&gt;https://github.com/shadowsocksrr/shadowsocksr-csharp&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:outline-timeout&#34;&gt;&lt;/a&gt;tatianab, alalamav, et al. 2019. &lt;em&gt;Probing resistance via timeout.&lt;/em&gt; Retrieved
      September 2020 from &lt;a class=&#34;url&#34;
        href=&#34;https://github.com/Jigsaw-Code/outline-ss-server/commit/c70d512e78525eba36bb1e6ad7a0868593166cf9&#34;&gt;https://github.com/Jigsaw-Code/outline-ss-server/commit/c70d512e78525eba36bb1e6ad7a0868593166cf9&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:trojan&#34;&gt;&lt;/a&gt;trojan developers. [n.d.]. &lt;em&gt;trojan.&lt;/em&gt; &lt;a class=&#34;url&#34;
        href=&#34;https://github.com/trojan-gfw/trojan&#34;&gt;https://github.com/trojan-gfw/trojan&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:V2Ray&#34;&gt;&lt;/a&gt;V2Ray developers. [n.d.]. &lt;em&gt;V2Ray.&lt;/em&gt; &lt;a class=&#34;url&#34;
        href=&#34;https://github.com/v2fly/v2ray-core&#34;&gt;https://github.com/v2fly/v2ray-core&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:LiangWang2015&#34;&gt;&lt;/a&gt;Liang Wang, Kevin P. Dyer, Aditya Akella, Thomas Ristenpart, and Thomas Shrimpton. 2015.
      Seeing through Network-Protocol Obfuscation. In &lt;em&gt;Computer and Communications Security&lt;/em&gt;. ACM. &lt;a class=&#34;url&#34;
        href=&#34;http://pages.cs.wisc.edu/~liangw/pub/ccsfp653wangA.pdf&#34;&gt;http://pages.cs.wisc.edu/~liangw/pub/ccsfp653wangA.pdf&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:TimWilde2012&#34;&gt;&lt;/a&gt;Tim Wilde. 2012. &lt;em&gt;GFW actively probes obfs2 bridges.&lt;/em&gt; Retrieved February 2020 from
      &lt;a class=&#34;url&#34;
        href=&#34;https://blog.torproject.org/blog/knock-knock-knockin-bridges-doors&#34;&gt;https://blog.torproject.org/blog/knock-knock-knockin-bridges-doors&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:BrandonWiley2017&#34;&gt;&lt;/a&gt;Brandon Wiley. 2017. &lt;em&gt;Re: Reports of China disrupting shadowsocks.&lt;/em&gt; Retrieved
      July
      2019 from &lt;a class=&#34;url&#34;
        href=&#34;https://groups.google.com/d/msg/traffic-obf/dqw6CQLR944/V5_61SVTBAAJ&#34;&gt;https://groups.google.com/d/msg/traffic-obf/dqw6CQLR944/V5_61SVTBAAJ&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:brdgrd&#34;&gt;&lt;/a&gt;Philipp Winter. 2010. &lt;em&gt;brdgrd.&lt;/em&gt; &lt;a class=&#34;url&#34;
        href=&#34;https://github.com/NullHypothesis/brdgrd&#34;&gt;https://github.com/NullHypothesis/brdgrd&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Winter2013&#34;&gt;&lt;/a&gt;Philipp Winter. 2013. &lt;em&gt;GFW actively probes obfs2 bridges.&lt;/em&gt; Retrieved February 2020
      from
      &lt;a class=&#34;url&#34; href=&#34;https://bugs.torproject.org/8591&#34;&gt;https://bugs.torproject.org/8591&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Winter2012a&#34;&gt;&lt;/a&gt;Philipp Winter and Stefan Lindskog. How the Great Firewall of China is Blocking Tor.
      In
      &lt;em&gt;Free and Open Communications on the Internet&lt;/em&gt;, USENIX 2012. &lt;a class=&#34;url&#34;
        href=&#34;https://www.usenix.org/system/files/conference/foci12/foci12-final2.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci12/foci12-final2.pdf&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Zeng2019&#34;&gt;&lt;/a&gt;Xuemei Zeng, Xingshu Chen, Guolin Shao, Tao He, Zhenhui Han, Yi Wen, and Qixu Wang. 2019.
      Flow Context and Host Behavior Based Shadowsocks&#39;s Traffic Identification. &lt;em&gt;IEEE Access 7&lt;/em&gt;(2019),
      41017–41032. &lt;a class=&#34;url&#34;
        href=&#34;https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;arnumber=8676111&#34;&gt;https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;arnumber=8676111&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Zhao2018&#34;&gt;&lt;/a&gt;Yankang Zhao, Xiaobo Ma, Jianfeng Li, Shui Yu, and Wei Li. 2018. Revisiting Website
      Fingerprinting Attacks in Real-World Scenarios: A Case Study of Shadowsocks. In &lt;em&gt;International Conference on
        Network and System Security. Springer&lt;/em&gt;, 319–336.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:Zhuo2018&#34;&gt;&lt;/a&gt;Zhongliu Zhuo, Yang Zhang, Zhi li Zhang, Xiaosong Zhang, and Jingzhong Zhang. 2018.
      Website
      Fingerprinting Attack on Anonymity Networks Based on Profile Hidden Markov Model. &lt;em&gt;IEEE Transactions on
        Information Forensics and Security&lt;/em&gt; 13, 5 (May 2018), 1081–1095. &lt;a class=&#34;url&#34;
        href=&#34;https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;arnumber=8067534&#34;&gt;https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;arnumber=8067534&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=&#34;bibitem&#34;&gt;
      &lt;a id=&#34;cite:shadowsocks-rust-v1.8.5&#34;&gt;&lt;/a&gt;zonyitoo. [n.d.]. Shadowsocks-rust v1.8.5. &lt;a class=&#34;url&#34;
        href=&#34;https://github.com/shadowsocks/shadowsocks-rust/releases/tag/v1.8.5&#34;&gt;https://github.com/shadowsocks/shadowsocks-rust/releases/tag/v1.8.5&lt;/a&gt;.&lt;/a&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>Shadowsocks是如何被检测和封锁的</title>
        <link>https://gfw.report/publications/imc20/zh/</link>
        <pubDate>Wed, 07 Oct 2020 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/publications/imc20/zh/</guid>
        
        <description>&lt;!-- use CSS file --&gt;

&lt;!-- Used to render latex syntax --&gt;
&lt;script type=&#34;text/javascript&#34; async
  src=&#34;https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML&#34;&gt;
&lt;/script&gt;

&lt;!-- Used to render Table of Content --&gt;
&lt;link href=&#34;./css/tocbot.css&#34; rel=&#39;stylesheet&#39; type=&#39;text/css&#39; /&gt;
&lt;script src=&#34;./js/tocbot.min.js&#34;&gt;&lt;/script&gt;
&lt;script&gt;
    document.addEventListener(&#39;DOMContentLoaded&#39;, function() {
    tocbot.init({
        tocSelector: &#39;.js-toc&#39;,
        contentSelector: &#39;.js-toc-content&#39;,
        headingSelector: &#39;h2, h3&#39;,
        collapseDepth: 3,
        activeLinkClass: &#39;&#39;
    });
    });
&lt;/script&gt;


&lt;h1 class=&#34;titleHead&#34;&gt;Shadowsocks是如何被检测和封锁的&lt;/h1&gt;


&lt;div class=&#34;authors&#34;&gt;
  &lt;div class=&#34;author&#34;&gt;
    &lt;p class=&#34;author-name&#34;&gt;Alice&lt;/p&gt;
    &lt;p class=&#34;author-affiliation&#34;&gt;GFW Report&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&#34;author&#34;&gt;
    &lt;p class=&#34;author-name&#34;&gt;Bob&lt;/p&gt;
    &lt;p class=&#34;author-affiliation&#34;&gt;GFW Report&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&#34;author&#34;&gt;
    &lt;p class=&#34;author-name&#34;&gt;Carol&lt;/p&gt;
    &lt;p class=&#34;author-affiliation&#34;&gt;GFW Report&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&#34;author&#34;&gt;
    &lt;p class=&#34;author-name&#34;&gt;Jan Beznazwy&lt;/p&gt;
    &lt;p class=&#34;author-affiliation&#34;&gt;Independent consultant&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&#34;author&#34;&gt;
    &lt;p class=&#34;author-name&#34;&gt;Amir Houmansadr&lt;/p&gt;
    &lt;p class=&#34;author-affiliation&#34;&gt;University of Massachusetts Amherst&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;!-- Table of Contents place holder --&gt;
&lt;div class=&#34;js-toc&#34;&gt;&lt;/div&gt;


&lt;h2 class=&#34;sectionHead&#34; id=&#34;abstract&#34;&gt;&lt;a id=&#34;sec:abstract&#34; href=&#34;#sec:abstract&#34;&gt;摘要&lt;/a&gt;&lt;/h2&gt;
&lt;p class=&#34;indent&#34;&gt;
  Shadowsocks是中国最流行的“翻墙”工具之一。自2019年5月以来，出现了许多关于封锁Shadowsocks导致用户无法使用这款工具的轶事。在这项研究中，我们揭示了中国的防火长城（GFW）是如何检测并封锁Shadowsocks及其变种的。通过网络测量实验，我们发现GFW会根据每个连接中的第一个数据包的长度和熵来识别Shadowsocks流量；然后再向被怀疑是Shadowsocks的服务器分阶段地发送7种不同的主动探测，来验证其怀疑。
&lt;/p&gt;
&lt;p&gt;
  我们开发了一个主动探测模拟器，并用它来分析不同的主动探测对不同版本的Shadowsocks的作用，从而猜出不同种的主动探测分别利用了Shadowsocks的哪些弱点。我们还分析了GFW主动探测的指纹，并与之前关于GFW主动探测的研究所发现的指纹比较了异同。分析TCP层的旁道信息，我们还发现：来自上千个不同IP地址的主动探测，其实很有可能是受一小撮中心化结构的集中控制。
&lt;/p&gt;
&lt;p&gt;根据我们从实验中获得的理解，我们展示了一个成功缓解流量分析的方法。我们还讨论了对抗主动探测所必要的策略。我们向Shadowsocks开发者们负责任地披露了我们的发现和建议，从而已经让Shadowsocks变得更加地难以封锁。&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;1&#34;&gt;&lt;a id=&#34;sec:1-intro&#34; href=&#34;#sec:1-intro&#34;&gt;1 引言&lt;/a&gt;&lt;/h2&gt;
&lt;p class=&#34;indent&#34;&gt;Shadowsocks是一种规避互联网审查的协议，在中国特别常见。根据2015年7月的一项调查，
  在清华大学371名教职员工和学生中，21% 的人使用 Shadowsocks 绕过中国的审查制度 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Lu2017&#34;&gt;29&lt;/a&gt;,
    §4.1]&lt;/span&gt;。Shadowsocks的流行源于它简单易用的特性。其轻量级设计将代理流量的开销降至最低，并且使其易于在各种平台上实施。较大的盈利型代理服务器经销市场，以及海量的使用教程和一键安装脚本，降低了安装和使用Shadowsocks的难度，甚至在非技术用户中也很受欢迎。早在2017年10月，已有中国用户报告他们使用的Shadowsocks服务器变得不可靠，或被防火墙
  (GFW)封锁，特别是在政治敏感期 &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Ghost2017&#34;&gt;21&lt;/a&gt;]&lt;/span&gt;。最近的一次此类事件发生在2019年9月中旬，当时Shadowsocks中国用户报告称，封锁力度突然增强 &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Fifield2019b&#34;&gt;17&lt;/a&gt;]&lt;/span&gt;。&lt;a href=&#34;#sec:2.2-past-blocking&#34;
    class=&#34;section-ref&#34;&gt;第2.2节&lt;/a&gt;总结了过去的封锁事件。尽管有轶事证据表明GFW能够检测和封锁Shadowsocks服务器，但关于GFW实际如何做到这一点，人们对此知之甚少。Shadowsocks在规避审查方面的重要作用，以及GFW的神秘行为，促使我们探索和理解其检测和拦截的内在机制。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;我们通过系统研究发现，GFW已经开始结合使用&lt;em&gt;被动流量分析&lt;/em&gt; 和&lt;em&gt;主动探测&lt;/em&gt; 来识别Shadowsocks服务器。&lt;a
    href=&#34;#fig:1-active-probing&#34;&gt;图1&lt;/a&gt;阐明了一般概念：GFW首先通过每个连接中第一个数据包的大小和熵等特征检测到可疑的Shadowsocks流量。一旦服务器受到怀疑，GFW在不同的阶段，发送主动探测确认服务器是否真的是Shadowsocks。探测可能是对过去合法连接的重放，也可能是字节长度不一的随机探测。我们怀疑，这些探测旨在攻击不同Shadowsocks实施中的检测漏洞。据我们所知，自2011年以来，GFW对各种“翻墙”工具使用主动探测
  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Ensafi2015&#34;&gt;14&lt;/a&gt;]&lt;/span&gt;，但是现在针对Shadowsocks采用的是新技术并且比之前报告的更加复杂。
&lt;/p&gt;

&lt;figure class=&#34;float&#34; id=&#34;fig:1-active-probing&#34;&gt;&lt;/a&gt;
  &lt;img src=&#34;../figures/active_probing.png&#34; alt=&#34;How active probing works.&#34;&gt;
  &lt;figcaption&gt;&lt;a
      href=&#34;#fig:1-active-probing&#34;&gt;&lt;b&gt;图1：&lt;/a&gt;主动探测的工作原理。正版Shadowsocks客户端连接到Shadowsocks服务器；一旦GFW被动地判断此连接&lt;em&gt;可能&lt;/em&gt;
    是Shadowsocks，它会指示主动探测器来确认这个猜测。&lt;/b&gt;
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p class=&#34;indent&#34;&gt;总之，
  我们的工作做出了以下贡献：&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;通过系统研究揭示了GFW用于封锁Shadowsocks的最新秘密武器。
    &lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;通过指纹读取识别了不同类型的主动探测，然后推断其背后的可能意图。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;推导了一个更现实的重放攻击对手模型。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;针对检测引入了一种临时但有效的缓解措施，并提供了防御主动探测的建议。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;与不同Shadowsocks实施的开发人员合作，增强Shadowsocks抵抗主动检测攻击的能力。&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;2&#34;&gt;&lt;a id=&#34;sec:2-background&#34; href=&#34;#sec:2-background&#34;&gt;2 Shadowsocks背景简介&lt;/a&gt;&lt;/h2&gt;
&lt;div&gt;
  &lt;p class=&#34;indent&#34;&gt;
    Shadowsocks是一种加密代理协议。它试图规避监测，但不是通过模仿其他协议，而是通过加密显示为均匀随机的字节流。它有两个组件：客户端与服务器。服务器通常安装在不由审查员控制的某个网络上。客户端将加密的目标规范发送到服务器。然后服务器连接到目标并开始为客户端代理流量。客户端与服务器之间的所有流量均已加密。
  &lt;/p&gt;

  &lt;p class=&#34;indent&#34;&gt;为了理解&lt;a
      href=&#34;#sec:3.2-probe-types&#34;&gt;&lt;span&gt;第3.2节&lt;/span&gt;&lt;/a&gt;中描述的探测构造，了解Shadowsocks加密工作原理的一些详细信息至关重要。Shadowsocks指定了两类主要的加密结构，在协议的上下文中称为“流加密”和“AEAD加密”
    &lt;span class=&#34;cite&#34;&gt;[&lt;a
        href=&#34;#cite:ShadowsocksWhitepaper&#34;&gt;46&lt;/a&gt;]&lt;/span&gt;。流加密结构从密码学角度而言很弱，它只提供机密性，不提供完整性或身份验证，并因此遭到弃用。AEAD加密结构（相关数据经过身份验证加密）开发用于修复流加密结构的缺陷，而且提供机密性、完整性和身份验证。两种结构都由客户端与服务器共享的主密码键控，并且都要求客户端证明其了解共享密码然后才能使用代理服务器（尽管正如我们看到的，对于流加密，要求比较宽松）。
  &lt;/p&gt;

  &lt;p class=&#34;indent&#34;&gt;如果使用流加密，则两个方向的网络流是一个长密文，它前面则是一个随机初始化向量：&lt;/p&gt;
  &lt;blockquote&gt;
    &lt;pre style=&#34;font-size: 15px;&#34;&gt;
  [长度可变 IV][已加密负载...]&lt;/pre&gt;
  &lt;/blockquote&gt;

  &lt;p class=&#34;indent&#34;&gt;客户端与服务器使用相同的加密密钥，但使用不同的初始化向量。初始化向量的长度可能是8、12或16字节，具体取决于配置的密码。&lt;/p&gt;

  &lt;p class=&#34;indent&#34;&gt;如果使用AEAD加密，则网络流是一系列以长度为前缀的块，每个块都使用AEAD标记进行加密和身份验证。为避免引入任何明文供审查员匹配，长度前缀本身会经过加密和标记处理。&lt;/p&gt;
  &lt;blockquote&gt;
    &lt;pre style=&#34;font-size: 15px;&#34;&gt;
  [长度可变加密盐]
  [2字节已加密长度][16 字节长度标记][已加密负载][16 字节负载标记]
  [2 字节已加密长度][16 字节长度标记][已加密负载][16 字节负载标记]...&lt;/pre&gt;
  &lt;/blockquote&gt;
  &lt;p class=&#34;indent&#34;&gt;整个流前面有一个加密盐，与共享的秘密密码搭配使用可为每个方向生成一个会话密钥。加密盐可能是16、24或32字节。&lt;/p&gt;

  &lt;p class=&#34;indent&#34;&gt;在两种结构中，客户端通过隧道发送的第一条数据是host:port目标规范，其结构借鉴了SOCKS代理协议。第一个字节是地址类型，指示后面字节的格式。三种地址类型是：&lt;/p&gt;
  &lt;blockquote&gt;
    &lt;pre style=&#34;font-size: 15px;&#34;&gt;
  [0x01][4 字节 IPv4 地址][2 字节端口]
  [0x03][1 字节长度][主机名][2 字节端口]
  [0x04][16 字节 IPv6 地址][2 字节端口]&lt;/pre&gt;
  &lt;/blockquote&gt;

  &lt;p class=&#34;indent&#34;&gt;Shadowsocks有多种实施
    &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;##cite:goShadowsocks2&#34;&gt;22&lt;/a&gt;&lt;/span&gt;,
    &lt;span class=&#34;cite&#34;&gt;&lt;a href=&#34;#cite:JigsawOutline&#34;&gt;25&lt;/a&gt;&lt;/span&gt;,
    &lt;span class=&#34;cite&#34;&gt;&lt;a href=&#34;#cite:ShadowsocksRustDevelopers&#34;&gt;41&lt;/a&gt;&lt;/span&gt;,
    &lt;span class=&#34;cite&#34;&gt;&lt;a href=&#34;#cite:Shadowsocks&#34;&gt;44&lt;/a&gt;&lt;/span&gt;,
    &lt;span class=&#34;cite&#34;&gt;&lt;a href=&#34;#cite:ShadowsocksLibev&#34;&gt;45&lt;/a&gt;&lt;/span&gt;,
    &lt;span class=&#34;cite&#34;&gt;&lt;a href=&#34;#cite:shadowsocksr-csharp&#34;&gt;47&lt;/a&gt;]&lt;/span&gt;，它们支持的功能各不相同。并非每种实施都支持所有可能的加密构造；例如，OutlineVPN
    &lt;span class=&#34;cite&#34;&gt;[&lt;a
        href=&#34;#cite:JigsawOutline&#34;&gt;25&lt;/a&gt;]&lt;/span&gt;仅支持AEAD加密，不支持流加密。一些实施采取措施来减轻重放攻击，而另一些实施则不会。这意味着，探测对手时可能会遇到不同的探测反应，具体取决于所采用的Shadowsocks实施。在本次研究中，我们主要侧重于两种更常见的实施，Shadowsocks-libev
    &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:ShadowsocksLibev&#34;&gt;45&lt;/a&gt;]&lt;/span&gt;和OutlineVPN
    &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:JigsawOutline&#34;&gt;25&lt;/a&gt;]&lt;/span&gt;，但是，我们描述的漏洞也可能适用于其他实施。
  &lt;/p&gt;

  &lt;h3 class=&#34;subsectionHead&#34; id=&#34;2-1&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:2.1-historical-vulnerabilities&#34;
      href=&#34;#sec:2.1-historical-vulnerabilities&#34;&gt;2.1 历史漏洞与防御措施&lt;/a&gt;&lt;/h3&gt;

  &lt;p class=&#34;indent&#34;&gt;2015年8月，BreakWa11发现Shadowsocks流加密因缺乏完整性保护而导致的一个主动探测漏洞 &lt;span class=&#34;cite&#34;&gt;[&lt;a
        href=&#34;#cite:BreakWa112015&#34;&gt;8&lt;/a&gt;, &lt;a
        href=&#34;#cite:Fifield2017&#34;&gt;15&lt;/a&gt;]&lt;/span&gt;。攻击者可以与可疑的Shadowsocks服务器建立许多连接，并利用密文的延展性尝试使用与目标规范中的地址类型相对应的字节的每个可能值。因为只有0x01、0x03和0x04是有效的地址类型，已知部分的连接与其他连接的超时不同。Shadowsocks开发人员通过让服务器在目标规范包含未知地址类型时不立即终止连接来缓解该漏洞
    &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:madeye2016&#34;&gt;30&lt;/a&gt;]&lt;/span&gt;。
  &lt;/p&gt;

  &lt;p class=&#34;indent&#34;&gt;Shadowsocks开发人员还尝试通过引入“一次性验证”模式来进一步缓解该问题，其中每个数据块都将携带自己的身份验证程序。但是，由于块长度前缀缺乏完整性保护，导致出现了另一个主动探测漏洞
    &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Fifield2017&#34;&gt;15&lt;/a&gt;, &lt;a
        href=&#34;#cite:printempw2017&#34;&gt;37&lt;/a&gt;]&lt;/span&gt;。2017年2月，AEAD加密成为协议规范的一部分，这个身份验证问题得以修复。
  &lt;/p&gt;

  &lt;p class=&#34;indent&#34;&gt;2020年2月，彭峙酿披露了Shadowsocks流加密中一个极具破坏力的漏洞 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Fifield2019a&#34;&gt;16&lt;/a&gt;, &lt;a
        href=&#34;#cite:Peng2020&#34;&gt;36&lt;/a&gt;]&lt;/span&gt;。使用Shadowsocks服务器作为解密预言库，攻击者即使是在不知道共享主密码的情况下，也可以完全解密记录的Shadowsocks连接。
  &lt;/p&gt;

  &lt;h3 class=&#34;subsectionHead&#34; id=&#34;2-2&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:2.2-past-blocking&#34;
      href=&#34;#sec:2.2-past-blocking&#34;&gt;2.2
      &lt;/span&gt;过去的Shadowsocks封锁事件&lt;/a&gt;&lt;/h3&gt;
  &lt;p class=&#34;indent&#34;&gt;早在2017年10月，已有中国互联网用户报告Shadowsocks服务器遭到端口或IP地址封锁 &lt;span class=&#34;cite&#34;&gt;[&lt;a
        href=&#34;#cite:Ghost2017&#34;&gt;21&lt;/a&gt;, &lt;a href=&#34;#cite:ProgramThink2017&#34;&gt;38&lt;/a&gt;,
      &lt;a href=&#34;#cite:Scott2017&#34;&gt;42&lt;/a&gt;]&lt;/span&gt;。值得注意的封锁事件发生在2017年10月和2018年1月，适逢两场重要的政治性会议在中国召开 &lt;span class=&#34;cite&#34;&gt;[&lt;a
        href=&#34;#cite:Ghost2017&#34;&gt;21&lt;/a&gt;]&lt;/span&gt;。这两场会议结束后，许多用户报告称，他们的服务器已解除封锁。Wiley等人则列出了相反的证据，在那段时间里，他们每天都在世界各地的不同地点测试Shadowsocks的连接情况，但却表示没有看到Shadowsocks在任何地方遭到封锁的证据
    &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:BrandonWiley2017&#34;&gt;53&lt;/a&gt;]&lt;/span&gt;。
  &lt;/p&gt;

  &lt;p class=&#34;indent&#34;&gt;报告的大规模封锁事件通常发生在政治敏感期，包括1989年天安门事件30周年、中华人民共和国成立70周年以及中国共产党第十九届四中全会。最近的多起封锁报告开始于2019年9月16日前后 &lt;span
      class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Fifield2019b&#34;&gt;17&lt;/a&gt;]&lt;/span&gt;。
  &lt;/p&gt;

  &lt;h2 class=&#34;sectionHead&#34; id=&#34;3&#34;&gt;&lt;a id=&#34;sec:3-characterization&#34; href=&#34;#sec:3-characterization&#34;&gt;3
      &lt;/span&gt;探测表征描述与探测基础设施&lt;/a&gt;&lt;/h2&gt;

  &lt;p class=&#34;indent&#34;&gt;本节介绍了为收集和了解GFW的主动探测机制而进行的实验。基于在多组实验中观察到的51837次主动探测的一堆数据，我们回答了以下问题：&lt;/p&gt;
  &lt;div&gt;
    &lt;ul&gt;
      &lt;li&gt;
        &lt;div&gt;
          &lt;p&gt;观察到哪些类型的探测，以及探测的条件？&lt;/p&gt;
        &lt;/div&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;div&gt;
          &lt;p&gt;探测来源于哪里？&lt;/p&gt;
        &lt;/div&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;div&gt;
          &lt;p&gt;探测是否有任何“指纹”，可用于揭示有关底层探测基础设施的信息？&lt;/p&gt;
        &lt;/div&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;div&gt;
          &lt;p&gt;探测是否有任何“指纹”，可用于揭示有关底层探测基础设施的信息？合法连接与对其做出反应的探测之间存在多长的时间延迟？&lt;/p&gt;
        &lt;/div&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/div&gt;

  &lt;h3 class=&#34;subsectionHead&#34; id=&#34;3-1&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:3.1-shadowsocks-server-experiments&#34;
      href=&#34;#sec:3.1-shadowsocks-server-experiments&#34;&gt;3.1
      Shadowsocks服务器实验&lt;/a&gt;&lt;/h3&gt;
  &lt;p class=&#34;indent&#34;&gt;
    我们设置了自己的Shadowsocks服务器，并试图引诱GFW对这些服务器进行探测。为此，我们使用Shadowsocks客户端连接服务器，并以Web浏览器和curl作为自动化驱动程序，通过加密代理隧道发送HTTP和HTTPS流量。我们在两端捕获数据包进行分析。全部实验均使用未经修改的客户端和服务器，未创建任何特定防火墙规则，未安装任何混淆插件。如&lt;a
      href=&#34;#tbl:1-experiment-timeline&#34;
      title=&#34;Table 1: 2. Background on Shadowsocks – How China Detects and Blocks Shadowsocks&#34;&gt;表1&lt;/a&gt;中所述，实验为期4个月，从2019年9月29日到2020年1月21日。
  &lt;/p&gt;

  &lt;div class=&#34;tabular&#34;&gt;
    &lt;figure class=&#34;table&#34;&gt;
      &lt;table class=&#34;tabular&#34; id=&#34;tbl:1-experiment-timeline&#34;&gt;
        &lt;tbody&gt;
          &lt;tr&gt;
            &lt;td class=&#34;td11&#34; style=&#34;text-align:center; white-space:nowrap;&#34;&gt;
              &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                  class=&#34;ptmr8t-x-x-90&#34;&gt;实验&lt;/span&gt;&lt;/div&gt;
            &lt;/td&gt;
            &lt;td class=&#34;td11&#34; style=&#34;text-align:center; white-space:nowrap;&#34;&gt;
              &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                  class=&#34;ptmr8t-x-x-90&#34;&gt;时间跨度&lt;/span&gt;&lt;/div&gt;
            &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td class=&#34;td11&#34; style=&#34;text-align:center; white-space:nowrap;&#34;&gt;
              &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                  class=&#34;ptmr8t-x-x-90&#34;&gt;Shadowsocks&lt;/span&gt;&lt;/div&gt;
            &lt;/td&gt;
            &lt;td class=&#34;td11&#34; style=&#34;text-align:center; white-space:nowrap;&#34;&gt;
              &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                  class=&#34;ptmr8t-x-x-90&#34;&gt;Shadowsocks 2019年9月29日至2020年1月21日（4个月）&lt;/span&gt;&lt;/div&gt;
            &lt;/td&gt;
          &lt;/tr&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center; white-space:nowrap;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;Sink&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center; white-space:nowrap;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;Sink
                2020年5月16日至5月31日（2周）&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td style=&#34;text-align:center; white-space:nowrap;&#34;&gt;
              &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                  class=&#34;ptmr8t-x-x-90&#34;&gt;Brdgrd&lt;/span&gt;&lt;/div&gt;
            &lt;/td&gt;
            &lt;td style=&#34;text-align:center; white-space:nowrap;&#34;&gt;
              &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;Brdgrd
                  2019年11月2日至11月19日（403个小时）&lt;/span&gt;&lt;/div&gt;
            &lt;/td&gt;
          &lt;/tr&gt;
        &lt;/tbody&gt;
      &lt;/table&gt;
  &lt;/div&gt;
  &lt;figcaption class=&#34;caption&#34;&gt;&lt;span&gt;&lt;a id=&#34;tbl:1-experiment-timeline&#34;
        href=&#34;#tbl:1-experiment-timeline&#34;&gt;&lt;b&gt;表1：&lt;/a&gt;&lt;/span&gt;所有实验时间表。三组实验持续了数周和数月。Shadowsocks、Sink和Brdgrd分别参考了&lt;a
      href=&#34;#sec:3.1-shadowsocks-server-experiments&#34;&gt;第3.1节&lt;/a&gt;、
    &lt;a href=&#34;#sec:4.1-experiments&#34;&gt;4.1节&lt;/a&gt;和&lt;a href=&#34;#sec:7.1-defense-against-traffic-analysis&#34;&gt;7.1节&lt;/a&gt;中的实验。&lt;/b&gt;&lt;/span&gt;
  &lt;/figcaption&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p class=&#34;indent&#34;&gt;
  因为无法预知GFW可能使用哪些特征来识别Shadowsocks，我们通过两种途径尽可能地扩大实验覆盖范围：一是采用不同的Shadowsocks实施和版本，二是选用不同的加密算法。所用的两种实施分别是Shadowsocks-libev
  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:ShadowsocksLibev&#34;&gt;45&lt;/a&gt;]&lt;/span&gt;和
  OutlineVPN &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:JigsawOutline&#34;&gt;25&lt;/a&gt;]。&lt;/span&gt;
&lt;/p&gt;


&lt;p class=&#34;indent&#34;&gt;
  &lt;b&gt;Shadowsocks-libev。&lt;/b&gt;在腾讯云北京数据中心的五个虚拟专用服务器(VPS)上，我们安装了Shadowsocks-libev客户端，并在DigitalOcean英国数据中心的五个VPS上安装了Shadowsocks-libev服务器。每个客户端均配置为仅与其中一个服务器连接。其中，两组客户端和服务器使用Shadowsocks-libev
  v3.1.3，另三组使用v3.3.1。作为实验对照，在同一英国数据中心另设置了一个VPS，并且该VPS未与任何客户端连接，仅捕获所有传入流量。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;使用curl生成客户端流量，我们通过Shadowsocks代理，以既定频率持续获取其中一个网站的数据：
  &lt;a href=&#34;https://www.wikipedia.org&#34;&gt;https://www.wikipedia.org&lt;/a&gt;、&lt;a href=&#34;http://example.com&#34;&gt;http://example.com&lt;/a&gt;
  以及&lt;a href=&#34;https://gfw.report.&#34;&gt;https://gfw.report&lt;/a&gt;。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;OutlineVPN。&lt;/b&gt;在一所美国大学网络中，我们安装了OutlineVPN v1.0.7服务器。
  使用2019年10月的最新版OutlineVPN客户端，并该客户端位于中国居民网络中。客户端流量由Firefox实例提供，配置为自动浏览在中国受到审查的Alexa前100万个网站的子集。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;局限性。&lt;/b&gt;由于实验地点不够多样化，我们不太可能在探测系统中观察到，因地理位置引起的任何潜在不一致。&lt;/p&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3-2&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:3.2-probe-types&#34;
    href=&#34;#sec:3.2-probe-types&#34;&gt;3.2
    探测类型&lt;/a&gt;&lt;/h3&gt;
&lt;p class=&#34;indent&#34;&gt;
  对运行Shadowsocks的服务器端口的所有连接进行分析并使用对照主机接收的流量，用以验证观察到的探测均由我们自己的连接触发，而不是互联网“背景辐射”扫描的结果。在所有实验中观察到总计51837次主动探测。我们将探测分为两种类别：基于重放与貌似随机；并进一步区分这两种类别下的探测类型。第一类基于重放的探测包含一个负载，源自某些先前记录的合法连接的第一个数据传输包。我们将这一类探测的名称指定为以“R”（表示“重放”）开头：
&lt;/p&gt;

&lt;div&gt;
  &lt;ul&gt;
    &lt;li&gt;
      &lt;p&gt;&lt;b&gt;R1型：&lt;/b&gt;相同的重放。&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;p&gt;&lt;b&gt;R2型：&lt;/b&gt;重放，字节0已更改。&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;p&gt;&lt;b&gt;R3型：&lt;/b&gt;重放，字节0-7和62-63已更改。&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;p&gt;&lt;b&gt;R4型：&lt;/b&gt;重放，字节16已更改。&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;p&gt;&lt;b&gt;R5型：&lt;/b&gt;重放，字节6和16已更改。&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;p class=&#34;indent&#34;&gt;R3、R4和R5型探测，仅在OutlineVPN实验中出现，但在Shadowsocks-libev实验中未出现。R5型探测在实验中仅出现两次。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;另一类貌似随机的探测，具备不同的长度。其内容在任何方面都不同于之前我们可识别的合法连接。我们将这一类探测的名称指定为以“NR”（表示“非重放”）开头：&lt;/p&gt;

&lt;div&gt;
  &lt;ul&gt;
    &lt;li&gt;
      &lt;p&gt;&lt;b&gt;NR1型：&lt;/b&gt;探测长度为7-9、11-13、15-17、21-23、32-24、40-42或48-50字节。&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;p&gt;&lt;b&gt;NR2型：&lt;/b&gt;探测长度恰好为221字节。&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href=&#34;#fig:2-random-probe-length-distribution&#34; title=&#34;Figure 2&#34;&gt;&lt;span&gt;图2&lt;/span&gt;&lt;/a&gt;展现了NR1型和NR2型探测的分布。
  NR1型探测的长度呈三重奏式分布，集中于8、12、16、22、33、41和49字节。有关这种分布的更多说明，请参阅&lt;a href=&#34;#sec:5.2-intention-behind-random-probes&#34;
    title=&#34;5.2. Intention Behind Random ProbesP&#34;&gt;&lt;span&gt;第5.2节&lt;/span&gt;&lt;/a&gt;。
&lt;/p&gt;

&lt;figure class=&#34;float&#34; id=&#34;fig:2-random-probe-length-distribution&#34;&gt;&lt;img
    src=&#34;../figures/random-probe-length-distribution.png&#34; id=&#34;random-probe-length-distributio&#34;&gt;
  &lt;figcaption&gt;&lt;span&gt;&lt;span&gt;&lt;a
          href=&#34;#fig:2-random-probe-length-distribution&#34;&gt;&lt;b&gt;图2：&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;随机探测（NR1型与NR2型）的出现次数（按长度统计）。请注意查看两个垂直轴不同。NR1型探测的长度以三重奏&lt;/b&gt;
      &lt;span id=&#34;S3.F2.m3&#34; class=&#34;ltx_Math&#34;&gt;&lt;span class=&#34;mjpage&#34;&gt;&lt;span class=&#34;mjx-chtml&#34;&gt;&lt;span class=&#34;mjx-math&#34;
              aria-label=&#34;(n-1,n,n+1)&#34;&gt;&lt;span class=&#34;mjx-mrow&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;mjx-mo&#34;&gt;&lt;span
                    class=&#34;mjx-char MJXc-TeX-main-R&#34;
                    style=&#34;padding-top: 0.446em; padding-bottom: 0.593em;&#34;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mjx-mi&#34;&gt;&lt;span
                    class=&#34;mjx-char MJXc-TeX-math-I&#34;
                    style=&#34;padding-top: 0.225em; padding-bottom: 0.298em;&#34;&gt;n&lt;/span&gt;&lt;/span&gt;&lt;span
                  class=&#34;mjx-mo MJXc-space2&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                    style=&#34;padding-top: 0.298em; padding-bottom: 0.446em;&#34;&gt;−&lt;/span&gt;&lt;/span&gt;&lt;span
                  class=&#34;mjx-mn MJXc-space2&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                    style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mjx-mo&#34;&gt;&lt;span
                    class=&#34;mjx-char MJXc-TeX-main-R&#34;
                    style=&#34;margin-top: -0.144em; padding-bottom: 0.519em;&#34;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span
                  class=&#34;mjx-mi MJXc-space1&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-math-I&#34;
                    style=&#34;padding-top: 0.225em; padding-bottom: 0.298em;&#34;&gt;n&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mjx-mo&#34;&gt;&lt;span
                    class=&#34;mjx-char MJXc-TeX-main-R&#34;
                    style=&#34;margin-top: -0.144em; padding-bottom: 0.519em;&#34;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span
                  class=&#34;mjx-mi MJXc-space1&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-math-I&#34;
                    style=&#34;padding-top: 0.225em; padding-bottom: 0.298em;&#34;&gt;n&lt;/span&gt;&lt;/span&gt;&lt;span
                  class=&#34;mjx-mo MJXc-space2&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                    style=&#34;padding-top: 0.298em; padding-bottom: 0.446em;&#34;&gt;+&lt;/span&gt;&lt;/span&gt;&lt;span
                  class=&#34;mjx-mn MJXc-space2&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                    style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mjx-mo&#34;&gt;&lt;span
                    class=&#34;mjx-char MJXc-TeX-main-R&#34;
                    style=&#34;padding-top: 0.446em; padding-bottom: 0.593em;&#34;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;b&gt;的方式均匀分布，其中&lt;/b&gt; &lt;span id=&#34;S3.F2.m4&#34; class=&#34;ltx_Math&#34;&gt;&lt;span class=&#34;mjpage&#34;&gt;&lt;span class=&#34;mjx-chtml&#34;&gt;&lt;span
              class=&#34;mjx-math&#34; aria-label=&#34;n=8,12,16,22,33,41,49&#34;&gt;&lt;span class=&#34;mjx-mrow&#34; aria-hidden=&#34;true&#34;&gt;&lt;span
                  class=&#34;mjx-mi&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-math-I&#34;
                    style=&#34;padding-top: 0.225em; padding-bottom: 0.298em;&#34;&gt;n&lt;/span&gt;&lt;/span&gt;&lt;span
                  class=&#34;mjx-mo MJXc-space3&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                    style=&#34;padding-top: 0.077em; padding-bottom: 0.298em;&#34;&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span
                  class=&#34;mjx-mn MJXc-space3&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                    style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;8&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mjx-mo&#34;&gt;&lt;span
                    class=&#34;mjx-char MJXc-TeX-main-R&#34;
                    style=&#34;margin-top: -0.144em; padding-bottom: 0.519em;&#34;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span
                  class=&#34;mjx-mn MJXc-space1&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                    style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;12&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mjx-mo&#34;&gt;&lt;span
                    class=&#34;mjx-char MJXc-TeX-main-R&#34;
                    style=&#34;margin-top: -0.144em; padding-bottom: 0.519em;&#34;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span
                  class=&#34;mjx-mn MJXc-space1&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                    style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;16&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mjx-mo&#34;&gt;&lt;span
                    class=&#34;mjx-char MJXc-TeX-main-R&#34;
                    style=&#34;margin-top: -0.144em; padding-bottom: 0.519em;&#34;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span
                  class=&#34;mjx-mn MJXc-space1&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                    style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;22&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mjx-mo&#34;&gt;&lt;span
                    class=&#34;mjx-char MJXc-TeX-main-R&#34;
                    style=&#34;margin-top: -0.144em; padding-bottom: 0.519em;&#34;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span
                  class=&#34;mjx-mn MJXc-space1&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                    style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;33&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mjx-mo&#34;&gt;&lt;span
                    class=&#34;mjx-char MJXc-TeX-main-R&#34;
                    style=&#34;margin-top: -0.144em; padding-bottom: 0.519em;&#34;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span
                  class=&#34;mjx-mn MJXc-space1&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                    style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;41&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mjx-mo&#34;&gt;&lt;span
                    class=&#34;mjx-char MJXc-TeX-main-R&#34;
                    style=&#34;margin-top: -0.144em; padding-bottom: 0.519em;&#34;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span
                  class=&#34;mjx-mn MJXc-space1&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                    style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;49&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;。&lt;b&gt;NR2型探测的长度为221个字节，并且大约是所有NR1型探测总和的三倍。&lt;/b&gt;
    &lt;/span&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3-3&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:3.3-origin-of-the-probes&#34;
    href=&#34;#sec:3.3-origin-of-the-probes&#34;&gt;3.3 探测器来源&lt;/a&gt;&lt;/h3&gt;

&lt;p class=&#34;indent&#34;&gt;对于主动探测，一种简单的防御策略，就是发现并禁止探测器的IP地址。我们接下来将介绍，实施这样的防御可能是一件极具挑战性的事，因为GFW从大量不同的IP地址池中进行探测，并且周转率较高。&lt;/p&gt;

&lt;figure class=&#34;float&#34; id=&#34;fig:3-cumulative-number-of-probes&#34;&gt;&lt;img src=&#34;../figures/cdf_ip_occurrences.png&#34;
    id=&#34;cumulative number of probes&#34; alt=&#34;&#34;&gt;
  &lt;figcaption style=&#34;text-align: center;&#34;&gt;&lt;span&gt;&lt;span&gt;&lt;a
          href=&#34;#fig:3-cumulative-number-of-probes&#34;&gt;&lt;b&gt;图3：&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;每个探测器IP地址的累计探测次数。&lt;/b&gt;
    &lt;/span&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;/span&gt;&lt;b&gt;IP地址。&lt;/b&gt;51837次主动探测发自12300个独立来源IP地址，这些IP地址均位于中国。&lt;a href=&#34;#fig:3-cumulative-number-of-probes&#34;
    title=&#34;Figure 3&gt;&lt;span&#34;&gt;图3&lt;/span&gt;&lt;/a&gt;显示了每个独立IP地址发送的探测数量的分布。以前的研究发现“95%的地址只出现一次” &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Ensafi2015&#34;&gt;14&lt;/a&gt;,
    §5.3]&lt;/span&gt;，与此形成对比的是，我们的测试发现，75%的地址发送一次以上的探测。&lt;a href=&#34;#tbl:2-IP-addresses&#34;
    title=&#34;Table 2&#34;&gt;&lt;span&gt;表2&lt;/span&gt;&lt;/a&gt;列出了最常见的探测器IP地址。
&lt;/p&gt;

&lt;figure class=&#34;table&#34; id=&#34;tbl:2-IP-addresses&#34;&gt;
  &lt;div class=&#34;tabular&#34;&gt;
    &lt;table class=&#34;tabular&#34;&gt;
      &lt;tbody&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;探测器IP地址&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;计数&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;175.42.1.21&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;44&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
              &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;223.166.74.207&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
              &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;38&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
              &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;124.235.138.113&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
              &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;36&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
              &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;113.128.105.20&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;
              &lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;36&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;221.213.75.88&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;33&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;112.80.138.231&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;32&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;116.252.2.39&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;32&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;124.235.138.231&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;32&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;221.213.75.126&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;32&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;223.166.74.110&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;31&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
  &lt;figcaption style=&#34;text-align: center;&#34;&gt;&lt;span&gt;&lt;a href=&#34;#tbl:2-IP-addresses&#34;&gt;&lt;b&gt;表2：&lt;/a&gt;&lt;/span&gt;最常见的探测器IP地址及其出现次数。&lt;/b&gt;
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p class=&#34;indent&#34;&gt;将我们的探测器IP地址列表，分别与下述地址进行了比较：Dunna等人在2018年观察到的向Tor服务器发送主动探测的934个地址
  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Dunna2018&#34;&gt;13&lt;/a&gt;]&lt;/span&gt;，以及Ensafi等人在2010年至2015年期间观察到的发送各种类型主动探测的22000个地址 &lt;span
    class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Ensafi2015&#34;&gt;14&lt;/a&gt;]&lt;/span&gt;。&lt;a href=&#34;#fig:4-comparison-with-other-probe-source&#34;
    title=&#34;Figure 4: IP addresses.&#34;&gt;图4&lt;/a&gt;表明，这三组地址仅略有重叠。我们注意到，在以前的实验中负责发送大量探测的IP地址202.108.181.70 &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Ensafi2015&#34;&gt;14&lt;/a&gt;, §5.3]&lt;/span&gt;，并未出现在我们的观察数据中。鉴于以前的研究中观察到探测器IP地址周转率较高，这种仅有小部分重叠的结果实属意料之中。
&lt;/p&gt;

&lt;figure class=&#34;float&#34; id=&#34;fig:4-comparison-with-other-probe-source&#34;&gt;&lt;img
    src=&#34;../figures/comparison_with_other_probe_source_datasets.png&#34; alt=&#34;&#34;&gt;
  &lt;figcaption style=&#34;text-align: center;&#34;&gt;&lt;span&gt;&lt;span&gt;&lt;a
          href=&#34;#fig:4-comparison-with-other-probe-source&#34;&gt;&lt;b&gt;图4：&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;独立收集的不同数据集之间探测器来源IP地址的重叠。&lt;/b&gt;
    &lt;/span&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;自治系统。&lt;/b&gt;探测器自治系统(AS)分布如&lt;a
    href=&#34;#tbl:3-counts-of-unique-prober-IP-addresses&#34;&gt;&lt;span&gt;表3&lt;/span&gt;&lt;/a&gt;。大部分Shadowsocks探测来自AS4837(CHINA169-BACKBONE
  CNCGROUP China169 Backbone)和AS4134(CHINANET-BACKBONENo.31, Jin-rong Street)这两个AS。二者在以前的研究
  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Ensafi2015&#34;&gt;14&lt;/a&gt;&lt;/span&gt;,
  &lt;span class=&#34;cite&#34;&gt;&lt;a href=&#34;#cite:Winter2012a&#34;&gt;56&lt;/a&gt;]&lt;/span&gt;
  中也是最常见的。与以前的研究重叠的其他AS还包括AS17816、AS9808、AS56046、AS17638、AS56047和AS17622。AS17622(CNCGROUP-GZ China Unicom Guangzhou
  network)发送探测所占比例比之前的研究高出不少
  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Ensafi2015&#34;&gt;14,&lt;/a&gt; Figure 7]&lt;/span&gt;。其他以前观察到的AS未出现在我们的数据中，包括AS7497 (CSTNET-AS-AP
  Computer Network Information Center)，这是Ensafi等人观察到的第三常见的探测来源 &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Ensafi2015&#34;&gt;14&lt;/a&gt;]&lt;/span&gt;。数据集中还有一些AS，以前未曾作为主动探测来源留下记录。
&lt;/p&gt;

&lt;figure class=&#34;table&#34; id=&#34;tbl:3-counts-of-unique-prober-IP-addresses&#34;&gt;
  &lt;div class=&#34;tabular&#34;&gt;
    &lt;table class=&#34;tabular&#34;&gt;
      &lt;tr&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS4837&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;6262&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS58563&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;44&lt;/div&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS4134&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;5188&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS17638&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;17&lt;/div&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS17622&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;315&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS9808&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;2&lt;/div&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS17621&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;263&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS4812&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;1&lt;/div&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS17816&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;104&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS24400&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;1&lt;/div&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS4847&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;101&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS56046&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;1&lt;/div&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;AS56047&lt;/span&gt;&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;
          &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;1&lt;/div&gt;
        &lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;&lt;/td&gt;
        &lt;td class=&#34;td11&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
  &lt;/div&gt;
  &lt;figcaption style=&#34;text-align: center;&#34;&gt;&lt;span&gt;&lt;span&gt;&lt;a
          href=&#34;#tbl:3-counts-of-unique-prober-IP-addresses&#34;&gt;&lt;b&gt;表3：&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;覆盖所有实验，每个自治系统独立探测器IP地址的计数。&lt;/b&gt;
    &lt;/span&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3-4&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:3.4-fingerprinting&#34;
    href=&#34;#sec:3.4-fingerprinting&#34;&gt;3.4 对探测进行指纹读取&lt;/a&gt;&lt;/h3&gt;
&lt;p class=&#34;indent&#34;&gt;与以前的研究一样，我们对主动探测的数据包层的特征进行了指纹读取。在IP层，我们检查了ID和TTL字段。在TCP层，我们查看了源端口和时间戳。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;IP、ID和TT。&lt;/b&gt;我们对探测器发送的PSH/ACK数据包的IP、ID和TTL进行了指纹读取。与Ensafi等人 &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Ensafi2015&#34;&gt;14&lt;/a&gt;,
    §5.5]&lt;/span&gt;的实验结果一样，我们在IP ID序列中未找到明显的模式，而且TTL保持在46–50秒内。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;TCP源端口。&lt;/b&gt;约90%的探测源端口属于32768–60999。&lt;a
    href=&#34;#fig:5-CDF-source-port&#34;&gt;图5&lt;/a&gt;中着重指出的这个范围，其恰好是许多Linux内核的默认源端口范围。探测从未使用低于1024的源端口（我们在一项实验中看到的精确最低值是1212）&lt;span
    class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Ensafi2015&#34;&gt;14&lt;/a&gt;,
    §5.5]&lt;/span&gt;。这些结果与以前的研究不同，当时观察的结果是：探测使用所有端口，并且某个端口范围并未比其他更常见。
&lt;/p&gt;

&lt;figure class=&#34;float&#34; id=&#34;fig:5-CDF-source-port&#34;&gt;&lt;img src=&#34;../figures/cdf_source_port_lon15.png&#34;
    id=&#34;fig:5-CDF-source-port&#34;&gt;
  &lt;figcaption style=&#34;text-align: center;&#34;&gt;&lt;span&gt;&lt;span&gt;&lt;a
          href=&#34;#fig:5-CDF-source-port&#34;&gt;&lt;b&gt;图5：&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;一次实验中探测TCP源端口号的累积分布函数，包括1,576 次探测。&lt;/b&gt;&lt;/span&gt;
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;TCP时间戳(TSval)。&lt;/b&gt;TCP时间戳是以固定速率增加的32位计数器，附加到每个非RST TCP段 &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Borman2014&#34;&gt;7&lt;/a&gt;, §3]&lt;/span&gt;。时间戳并不是一个绝对值，但与计数器的初始化方式和时间有关，而且其增长率因操作系统而异。&lt;a
    href=&#34;#fig:6-tsval-lon&#34;&gt;图6&lt;/a&gt;显示每次探测SYN段附带的时间戳值。该图显示，虽然探测器使用了成千上万个源IP地址，但是这些地址无法完全独立，因为它们共享少量的TCP时间戳序列。在这种情况下，至少有七个不同的物理系统或进程，绝大多数的探测类型，属于这七个类型其中的一种。之所以说“至少”七个，是因为我们无法区分TSval序列非常接近的两个进程（例如，如果两个进程几乎同时重新启动，可能发生这种情况）。
  &lt;/a&gt;我们测量得出的线性序列斜率几乎正好是250Hz，除了22个间距较近的点，它们组成了一个小集群，其斜率接近1000Hz。有两种情况，序列达到最大值\(2^{32} -
  1\)并重置为0。将&lt;a href=&#34;#fig:6-tsval-lon&#34;&gt;图6&lt;/a&gt;与Ensafi等人提供的图11(c)进行比较 &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Ensafi2015&#34;&gt;14&lt;/a&gt;]&lt;/span&gt;，后者也显示了250Hz和1000Hz序列。

&lt;figure class=&#34;float&#34; id=&#34;fig:6-tsval-lon&#34;&gt;&lt;img src=&#34;../figures/tsval_lon8.png&#34; id=&#34;Figure 6&#34;&gt;
  &lt;figcaption&gt;&lt;span&gt;&lt;span&gt;&lt;a
          href=&#34;#fig:6-tsval-lon&#34;&gt;&lt;b&gt;图6：&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;常见TCP时间戳序列揭示了非独立进程。带标签的标记线斜率恰好是250Hz和1000Hz。1000Hz线上的22次非重放探测小集群局部斜率达到1009Hz，但此处的测量并非确凿无疑，因为它们仅持续了约3.5秒。即使连接到左侧零星分布的某个非重放数据点，1000Hz线条也不会变成250Hz。&lt;/b&gt;&lt;/span&gt;
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3-5&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:3.5-delay-of-replay-attacks&#34;
    href=&#34;#sec:3.5-delay-of-replay-attacks&#34;&gt;3.5 重放攻击的延迟&lt;/a&gt;&lt;/h3&gt;

&lt;p class=&#34;indent&#34;&gt;GFW可能记录真正的客户端连接的第一个数据传输包，然后稍作修改，将其作为主动探测进行重放。&lt;a
    href=&#34;#fig:7-delay-of-replay&#34;&gt;图7&lt;/a&gt;显示了从建立合法连接到GFW发送源于该连接基于重放的探测，二者之间的延迟变化。因为可能会多次重放探测负载（在一种情况下，最多达47次），我们展示了两种分布，一种包含重复负载，一种不含重复负载。橙色线代表每个重放探测负载&lt;em&gt;首次&lt;/em&gt;
  发生的延迟，而蓝色线代表&lt;em&gt;全部&lt;/em&gt; 重放探测的延迟，包括重复负载。探测总计：首次发生有3269次，全部发生有11137次。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;
  超过20%的探测首次重放在一秒内到达；超过50%的探测首次重放在一分钟内到达；超过75%的探测首次重放在15分钟内到达。基于重放的探测可能会立即发送，也可能会存储很长时间然后再发送。我们观察到的最短延迟时长为0.28秒，最长延迟时长为570小时。
&lt;/p&gt;

&lt;figure class=&#34;float&#34; id=&#34;fig:7-delay-of-replay&#34;&gt;&lt;img src=&#34;../figures/delay_of_replays_in_all_experiments.png&#34;
    id=&#34;Figure 7&#34;&gt;
  &lt;figcaption style=&#34;text-align: center;&#34;&gt;&lt;span&gt;&lt;span&gt;&lt;a
          href=&#34;#fig:7-delay-of-replay&#34;&gt;&lt;b&gt;图7：&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;基于重放的探测延迟累积分布函数。注意查看对数&lt;span&gt;&lt;span
          class=&#34;mjpage&#34;&gt;&lt;span class=&#34;mjx-chtml&#34;&gt;&lt;span class=&#34;mjx-math&#34; aria-label=&#34;x&#34;&gt;&lt;span class=&#34;mjx-mrow&#34;
                aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;mjx-mi&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-math-I&#34;
                    style=&#34;padding-top: 0.225em; padding-bottom: 0.298em;&#34;&gt;x&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;轴。&lt;/b&gt;
    &lt;/span&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;4&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:4-delay-of-replay-attacks&#34;
    href=&#34;#sec:4-delay-of-replay-attacks&#34;&gt;4 触发主动探测的条件&lt;/a&gt;&lt;/h2&gt;

&lt;p class=&#34;indent&#34;&gt;关于GFW如何发现Shadowsocks服务器，存在着对立的假设。一种假设是大规模的&lt;em&gt;主动&lt;/em&gt; 端口扫描；
  另一种假设是由合法连接触发&lt;em&gt;被动&lt;/em&gt; 探测。但是，基于&lt;a href=&#34;#sec:3-characterization&#34;
    title=&#34;3. Characterization of Probes and the Probing Infrastructure&#34;&gt;上一节&lt;/a&gt;中未使用的对照主机没有收到任何主动探测这一事实，我们抛弃了主动扫描这种假设。相反，我们提出这样一种假设：仅当探测系统发现可疑的Shadowsocks连接时才会发送探测。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;那么，从GFW的角度来看，什么内容构成可疑的Shadowsocks连接？在本节中，我们主要探讨以下这些问题：&lt;/p&gt;
&lt;div&gt;
  &lt;ul&gt;
    &lt;li&gt;
      &lt;p&gt;触发主动探测需要多少流量？&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;p&gt;为什么R3型、R4型和R5型探测仅发送到OutlineVPN服务器，而未发送到Shadowsocks-libev服务器？&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;p&gt;GFW是否考虑数据包长度？&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;p&gt;GFW是否考虑数据包负载的熵？&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;p&gt;外部到内部连接（客户端在中国境外，服务器在中国境内）是否引起与内部到外部连接一样多的主动探测？&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4-1&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:4.1-experiments&#34;
    href=&#34;#sec:4.1-experiments&#34;&gt;4.1
    实验&lt;/a&gt;&lt;/h3&gt;
&lt;p class=&#34;indent&#34;&gt;
  为展示GFW使用何种特征进行流量分析，最令人信服的做法是提出触发主动探测的最低且可复现的一组条件。毫无疑问，完成这项工作是本次研究最具挑战性的任务，因为这要求我们从无数的可能性中找到GFW真正使用的少数特征。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;
  两种观察结果有助于我们的分析。第一，根据设计，Shadowsocks客户端与服务器之间发送的字节流与随机字节流无法区分。这意味着，我们不必使用真正的客户端Shadowsocks实施；可通过发送随机数据来触发主动探测。第二，如&lt;a
    href=&#34;#sec:3.5-delay-of-replay-attacks&#34;
    title=&#34;3.5. Delay of Replay Attacks&#34;&gt;第3.5节&lt;/a&gt;中所述，发送合法数据包后，重播探测最快可在0.28秒后发送。GFW在确定流量可疑之前，可能只看到了客户端到服务器流最开始的部分。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;
  在这两个观察结果的启发下，我们实施了一个TCP客户端，将其连接到TCP服务器并发送一个具有指定长度和香农熵的数据包。我们实施了具有两种运行模式的服务器：接收模式和响应模式。在接收模式下，服务器接受TCP连接但不响应任何数据，并在30秒后关闭连接。在响应模式下，服务器以1到1000字节的随机数据响应探测器——但不响应我们实施的客户端。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;a href=&#34;#tbl:4-summary-of-random-data-experiments&#34; title=&#34;Table 4&#34;&gt;表4&lt;/a&gt;总结了随机数据实验的设计。&lt;a
    href=&#34;#tbl:1-experiment-timeline&#34;
    title=&#34;Table 1: Background on Shadowsocks and How China Detects and Blocks Shadowsocks&#34;&gt;表1&lt;/a&gt;显示了实验的时间跨度。客户端在北京同一腾讯数据中心内的不同
  VPS 上运行。所有服务器都在美国同一Digital Ocean数据中心运行。各组实验中未重复使用客户端与服务器 IP 地址。
&lt;/p&gt;

&lt;figure class=&#34;table&#34; id=&#34;tbl:4-summary-of-random-data-experiments&#34;&gt;
  &lt;div class=&#34;tabular&#34;&gt;
    &lt;table class=&#34;tabular&#34;&gt;
      &lt;tbody&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;实验#&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;长度（字节）&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;熵&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;模式&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;1.a&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;[1, 1000]&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;&amp;gt; 7&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;接收&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;1.b&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;[1, 1000]&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;&amp;gt; 7&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;响应&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;2&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;[1, 1000]&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;&amp;lt; 2&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;接收&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;3&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;[1, 2000]&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&gt;&lt;div class=&#34; multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span
              class=&#34;ptmr8t-x-x-90&#34;&gt;[0,&amp;nbsp8]&lt;/span&gt;
  &lt;/div&gt;
  &lt;/td&gt;
  &lt;td class=&#34;td11&#34;&gt;
    &lt;div class=&#34;multicolumn&#34; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;接收&lt;/span&gt;&lt;/div&gt;
  &lt;/td&gt;
  &lt;/tr&gt;
  &lt;/tbody&gt;
  &lt;/table&gt;
  &lt;/div&gt;
  &lt;figcaption&gt;
    &lt;a
      href=&#34;#tbl:4-summary-of-random-data-experiments&#34;&gt;&lt;b&gt;表4：&lt;/a&gt;随机数据实验总结。&#34;[x,&amp;nbspy]&#34;表示每个连接各自从一个范围内均匀随机采样的值。在实验1中，服务器在310小时后从接收模式切换到响应模式；我们将这两个阶段分别标记为实验1.
    a和实验1.b。&lt;/b&gt;
  &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;/p&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4-2&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:4.2-experiment-result-and-analysis&#34;
    href=&#34;#sec:4.2-experiment-result-and-analysis&#34;&gt;4.2 实验结果与分析&lt;/a&gt;&lt;/h3&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;触发主动探测所需的流量极少。&lt;/b&gt;我们的接收服务器，尽管不是真正的Shadowsocks服务器并且从不发送数据，但接收了许多与&lt;a
    href=&#34;#sec:3.1-shadowsocks-server-experiments&#34;
    title=&#34;3.1. Shadowsocks Server Experiment&#34;&gt;第3.1节&lt;/a&gt;中描述的Shadowsocks服务器实验相同类型的探测。在完成TCP握手之后，单个从客户端到服务器的数据包足以触发主动探测。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;仅某些长度被重放。&lt;/b&gt;虽然客户端发送的数据包长度介于1至2000字节之间，但是几乎所有被判断为重放的探测，其负载长度都介于160至700字节之间，最大长度为999字节。&lt;a
    href=&#34;#fig:8-CDF-payload-length&#34;
    title=&#34;Figure 8&#34;&gt;图8&lt;/a&gt;显示了实验1.a中探测长度的分布。长度分布呈阶梯状，反映了某些长度更有可能重放的事实。也就是说，重放探测长度除以16后的余数往往是特定值。对于R1型探测（R2型类似），在长度介于168-263字节区间的376次探测中，72%的长度除以16后余数是9；在长度介于384-687字节区间的1558次探测中，96%的长度除以16后余数是2；在长度介于264-383字节区间的749次探测中，余数可能是9(37%)或2(32%)。这些结果表明，GFW在对Shadowsocks流量进行归类时会考虑数据包长度。数据包长度是一个可利用的合理特性，因为Shadowsocks不填充隧道的内容，只是通过添加地址头前缀（请参阅&lt;a
    href=&#34;#sec:2-background&#34;
    title=&#34;2. Background on Shadowsocks&#34;&gt;第2节&lt;/a&gt;）以及使用AEAD加密、长度前缀和标签来附带地更改底层数据包长度分布。因此，Shadowsocks流量的负载长度分布类似于底层流量，通常为HTTP或TLS。
&lt;/p&gt;

&lt;figure id=&#34;fig:8-CDF-payload-length&#34; class=&#34;float&#34;&gt;&lt;img src=&#34;../figures/cdf_payload_length_exp1a.png&#34;
    id=&#34;fig:8-CDF-payload-length&#34;&gt;
  &lt;figcaption style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;#fig:8-CDF-payload-length&#34;&gt;&lt;b&gt;图8：&lt;/a&gt;实验1.
    a中310小时内重放探测负载长度的累积分布函数。重放探测长度呈阶梯状分布。&lt;/b&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;高熵的数据包更可能被重放。&lt;/b&gt;有两个证据支持这一结论。第一，&lt;a href=&#34;#fig:9-replayed-ratio&#34;
    title=&#34;Figure 9&#34;&gt;&lt;span&gt;图9&lt;/span&gt;&lt;/a&gt;显示，虽然各种熵的数据包都可能被重放，但是每字节高熵值为7.2的数据包被重放的可能性，几乎是低熵值为3.0的数据包的四倍。第二，实验1.a和实验2仅在数据包的熵上有所不同，在同一时间段内，实验1.a中服务器接收的探测显著多于实验2中服务器。
&lt;/p&gt;

&lt;figure id=&#34;fig:9-replayed-ratio&#34;&gt;&lt;img src=&#34;../figures/replayed_ratio_exp3.png&#34; id=&#34;fig:9-replayed-ratio&#34;&gt;
  &lt;figcaption style=&#34;text-align: center;&#34;&gt;&lt;a href=&#34;#fig:9-replayed-ratio&#34;&gt;&lt;b&gt;图9：&lt;/a&gt;根据合法连接的每字节熵，实验3中重放探测与合法连接的比率。&lt;/b&gt;
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p class=&#34;indent&#34;&gt;
  &lt;b&gt;除非服务器之前已响应R1型和R2型探测，否则不会发送R3型和R4型探测。&lt;/b&gt;实验1.a、实验2和实验3中收到的数千次探测均可归类为R1型、R2型或NR2型。换言之，在这些实验中，我们无法触发R3型、R4型、R5型或NR1型探测。这个结果提醒我们，在&lt;a
    href=&#34;#sec:3.1-shadowsocks-server-experiments&#34;
    title=&#34;3.1. Shadowsocks Server Experiment&#34;&gt;第3.1节&lt;/a&gt;的实验中，只有OutlineVPN服务器接收到R3型、R4型和R5型探测，而Shadowsocks-libev服务器没有接收到。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;如&lt;a href=&#34;#sec:5.3-intention-behind-replay-based-probes&#34;
    title=&#34;5.3. Intention Behind Replay-based Probes&#34;&gt;第5.3节&lt;/a&gt;中的详细阐述，我们使用的Shadowsocks-libev与OutlineVPN版本之间的一个主要区别是Shadowsocks-libev具有防御重放的过滤器，而OutlineVPN没有。（至少在我们使用的版本中没有，此后OutlineVPN添加了重放防护
  [&lt;a href=&#34;#cite:JigsawOutlineV110&#34;&gt;26&lt;/a&gt;]。）因此，Shadowsocks-libev服务器不响应早期连接的精确重放，而OutlineVPN服务器响应。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;
  因而我们提出假设：除非服务器已经响应R1型和R2型探测，否则GFW不会发送R3型、R4型和R5型探测。在接收模式下运行310个小时后，我们将实验1.a中的服务器切换到响应模式。服务器开始响应R1型和R2型探测之后，随即开始接收大量R3型和R4型探测。服务器同时继续接收R1型和R2型探测。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;
  这些结果表明，主动探测系统分阶段运行。在观察到特定条件之前，它不会进入下一个阶段。这一实施的详细信息表明，审查员在设计主动探测系统时可能不仅仅考虑了Shadowsocks，其他具有类似行为的协议也可能是探测目标。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;在四个随机数据实验中未出现R5型和NR1型探测，我们不知其原因。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;
  &lt;b&gt;观察到新探测类型。&lt;/b&gt;接收/响应服务器收到的探测与之前在Shadowsocks-libev和OutlineVPN的实验中看到的探测类型不匹配。在实验1.b中，我们看到11个基于重放的探测，其中字节16到32已更改。在所有四个实验中，还出现许多非重放探测。总体而言，有9个长度为53字节的探测、5个长度为56字节的探测、3个长度为169字节的探测、1个长度为180字节的探测以及1个长度为402字节的探测。
&lt;/p&gt;
&lt;p class=&#34;indent&#34;&gt;
  &lt;b&gt;GWF不区分流量方向。&lt;/b&gt;我们在中国设置了一个Shadowsocks服务器，并从境外连接自动浏览Alexa排名前100万网站的子集，由此生成代理流量。服务器收到大量主动探测。这个结果表明，无论服务器是在中国境内还是境外，GFW都会对可疑服务器进行探测。这种双向触发探测的行为，与Winter和Lindskog的观察不同，他们在研究中发现外部到内部的Tor连接不会触发主动探测
  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Winter2012a&#34;&gt;56&lt;/a&gt;, §4.4&lt;/a&gt;]&lt;/span&gt; 。另一方面，对于许多协议，GFW已知不作流量方向的区分，其中包括DNS &lt;span
    class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Anonymous2014&#34;&gt;1&lt;/a&gt;, §2]&lt;/span&gt;，HTTP &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Clayton2006&#34;&gt;11&lt;/a&gt;, §3]&lt;/span&gt;和TLS &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Chai2019&#34;&gt;9&lt;/a&gt;,
    §3.1]&lt;/span&gt;。甚至已知，GFW对方向的敏感度会随着时间而变化，如TLS ESNI的封锁案例，其中有两周是双向然后变成单向 [&lt;span class=&#34;cite&#34;&gt;&lt;a
      href=&#34;#cite:Bock2020&#34;&gt;6&lt;/a&gt;&lt;/span&gt;]。
&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34;, id=&#34;5&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:5-intention-behind-probes&#34;
    href=&#34;#sec:5-intention-behind-probes&#34;&gt;5
    探测背后的意图&lt;/a&gt;&lt;/h2&gt;

&lt;p class=&#34;indent&#34;&gt;如&lt;a href=&#34;#sec:3.2-probe-types&#34;
    title=&#34;3.2. Probe Types&#34;&gt;&lt;span&gt;第3.2节&lt;/span&gt;&lt;/a&gt;中所述，针对Shadowsocks服务器，我们发现了七种不同类型的主动探测。本能的疑问就是：GFW可以从这些探测中获得什么信息？与以前的研究不同
  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Ensafi2015&#34;&gt;14&lt;/a&gt;&lt;/span&gt;, &lt;span class=&#34;cite&#34;&gt;&lt;a
      href=&#34;#cite:Winter2012a&#34;&gt;56&lt;/a&gt;]&lt;/span&gt;，在我们看来，简单地观察探测无法回答这个问题。我们推测，如果探测引发的Shadowsocks服务器反应与非Shadowsocks服务器不同，GFW可肯定地将服务器归类为Shadowsocks。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;
  因此，关键在于理解这些探测对Shadowsocks服务器的影响。我们开发了一个探测模拟器，用于观察Shadowsocks服务器如何对诸如GFW之类的探测进行反应。我们进一步查看Shadowsocks实施的源代码，以了解其内在逻辑。基于这一分析，我们进行推测：何种可辨识的服务器反应可用于归类。
&lt;/p&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;5-1&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:5.1-prober-simulator-experiment&#34;
    href=&#34;#sec:5.1-prober-simulator-experiment&#34;&gt;5.1 探测模拟器实验&lt;/a&gt;&lt;/h3&gt;

&lt;p class=&#34;indent&#34;&gt;
  我们开发了一个探测模拟器，可向Shadowsocks服务器发送全部七种类型的探测，并记录各自的反应。借助探测模拟器，可在本地高效测试各种不同配置的Shadowsocks实施。此外，探测模拟器可令实验涵盖实施的临界情况，并发现一些可能尚未被GFW利用的可识别指纹特征。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;
  &lt;b&gt;基于重放的探测。&lt;/b&gt;为模拟基于重放的探测，模拟器记录Shadowsocks客户端与服务器连接中的第一个数据携带包，然后通过单独的连接发送数据到服务器。为发送字节已更改的探测，模拟器随机将负载的某些字节更改为不同的值。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;非重放探测。&lt;/b&gt;为模拟非重放探测，模拟器只发送特定数量的随机字节。这是因为对于GFW非重放探测与随机探测，服务区反应并无不同。为确保全面性，模拟器发送随机探测的长度为1到99字节以及221字节。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;
  &lt;b&gt;服务器的选择。&lt;/b&gt;我们选用了一组Shadowsocks实施，涵盖大多数Shadowsocks规避生态系统。确切地说，我们测试了满足以下任一条件的Shadowsocks实施：1)可在主要Linux发行版的存储库中获取；2)可在pip存储库中获取；3)是最新版本；4)在任何流行的一键安装脚本中广泛使用；5)基于这些攻击的初步报告，最近对任何可辨识反应进行了修复；或者6)由开发人员向我们推荐。按照这个筛选流程，我们选择了Shadowsocks-libev（v3.0.8、v3.1.3、v3.2.5、v3.3.1和v3.3.3）以及OutlineVPN（v1.0.6、v1.0.7和v1.0.8）。
&lt;/p&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;5-2&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:5.2-intention-behind-random-probes&#34;
    href=&#34;#sec:5.2-intention-behind-random-probes&#34;&gt;5.2 随机探测背后的意图&lt;/a&gt;&lt;/h3&gt;

&lt;h3 class=&#34;subsubSectionHead&#34; id=&#34;5-2-1&#34;&gt;
  &lt;a id=&#34;sec:5.2.1-servers-reations-to-random-probes&#34; href=&#34;#sec:5.2.1-servers-reations-to-random-probes&#34;&gt;5.2.1 服务器对于随机探测的反应&lt;/a&gt;
&lt;/h3&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;a href=&#34;#fig:10-reactions-to-random-probes&#34;
    title=&#34;Figure 10&#34;&gt;图10&lt;/span&gt;&lt;/a&gt;概述了不同Shadowsocks实施对不同长度的随机探测的反应。对于每一实施，我们对其可用加密方法进行划分首先是流加密与AEAD加密，其次是初始化向量(IV)或加密盐的尺寸。例如，Shadowsocks-libev支持的流加密包括“aes-128-ctr”和“aes-256-cfb”。二者的初始化向量都是16字节，因此将其划分到“16字节”行。有关在Shadowsocks协议上下文中，初始化向量和加密盐的含义，请参阅&lt;a
    href=&#34;#sec:2-background&#34; title=&#34;2. Background on Shadowsocks&#34;&gt;&lt;span&gt;第2节&lt;/span&gt;&lt;/a&gt;。&lt;/p&gt;

&lt;figure id=&#34;fig:10-reactions-to-random-probes&#34; class=&#34;float&#34;&gt;
  &lt;div class=&#34;figure&#34;&gt;
    &lt;div class=&#34;subfigure&#34; id=&#34;fig:10a-stream-ciphers&#34;&gt;
      &lt;p&gt;
        &lt;img src=&#34;../figures/reaction_to_random_probes_stream_cipher.png&#34; alt=&#34;Stream ciphers&#34; style=&#34;width: 100%;&#34;&gt;
      &lt;figcaption style=&#34;text-align:center;&#34;&gt;&lt;b&gt;&lt;a href=&#34;#fig:10a-stream-ciphers&#34;&gt;(a) 流加密&lt;/a&gt;&lt;/b&gt;
      &lt;/figcaption&gt;
      &lt;/p&gt;
      &lt;div class=&#34;subfigure&#34; id=&#34;fig:10b-AEAD-ciphers&#34;&gt;
        &lt;p&gt;&lt;img src=&#34;../figures/reaction_to_random_probes_aead_cipher.png&#34; alt=&#34;AEAD ciphers&#34; style=&#34;width: 100%;&#34;&gt;
        &lt;figcaption style=&#34;text-align:center;&#34;&gt;&lt;b&gt;&lt;a href=&#34;#fig:10b-AEAD-ciphers&#34;&gt;(b) AEAD加密&lt;/a&gt;&lt;/b&gt;&lt;/figcaption&gt;
        &lt;/p&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;figcaption&gt;&lt;span&gt;&lt;a
          href=&#34;#fig:10-reactions-to-random-probes&#34;&gt;&lt;b&gt;图10：&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Shadowsocks服务器对不同长度人工随机探测的反应。(&lt;a
          href=&#34;#fig:10a-stream-ciphers&#34; title=&#34;(a) ‣ Figure 10&#34;&gt;&lt;span&gt;a&lt;/span&gt;&lt;/a&gt;)是使用流加密结构的服务器，(&lt;a
          href=&#34;#fig:10b-AEAD-ciphers&#34; title=&#34;(b)&#34;&gt;&lt;span&gt;b&lt;/span&gt;&lt;/a&gt;)是AEAD加密结构。已观察到的 GFW 发送的探测负载长度标记为红色。
        “TIMEOUT”指服务器等待，直至探测器或服务器自身超时。
        “RST”指服务器立即发送 TCP RST。
        “FIN/ACK”指服务器率先发送 FIN/ACK 以关闭连接。&lt;/b&gt;&lt;/span&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;a href=&#34;#fig:10-reactions-to-random-probes&#34; title=&#34;Figure 10&#34;&gt;
    &lt;span&gt;图10&lt;/span&gt;&lt;/a&gt;中的服务器反应由“TIMEOUT”、“RST”和“FIN/ACK”代码表示。TIMEOUT是指服务器等待接收更多数据，直至服务器本身或探测器超时。GFW通常在不到10秒内超时，许多Shadowsocks实施的默认超时值为60秒。因此，TIMEOUT通常表示探测器而非服务器，首先发送FIN/ACK以关闭连接。FIN/ACK和RST表示服务器立即发送FIN/ACK或RST。选择FIN/ACK或RST，取决于操作系统层的套接字处理。Frolov等人指出
  [&lt;span class=&#34;cite&#34;&gt;&lt;a href=&#34;#cite:Frolov2020&#34;&gt;19&lt;/a&gt;,
    §IV.C&lt;/span&gt;]在Linux上关闭套接字时，如果应用程序已从其内核套接字缓冲区读取所有数据，将发送FIN/ACK；否则发送RST。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;a href=&#34;#fig:10-reactions-to-random-probes&#34; title=&#34;Figure 10&#34;&gt;
    &lt;span&gt;图10&lt;/span&gt;&lt;/a&gt;显示，使用不同加密方式的不同实施对长度各异的探测做出了可识别指纹的反应。接下来将论述GFW如何在每一种Shadowsocks实施中利用这些反应。&lt;/p&gt;


&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;使用流加密的Shadowsocks-libev v3.0.8--v3.2.5。&lt;/b&gt;以图10(&lt;a href=&#34;#fig:10a-stream-ciphers&#34;
    title=&#34;(a)&#34;&gt;a&lt;/a&gt;)中的第一行为例，根据随机探测的长度，Shadowsocks-libev
  v3.0.8--v3.2.5服务器（具有8字节的初始化向量）展现了三种反应。当探测长度为1-8字节时，服务器总是超时。这是因为服务器只收到（部分）初始化向量并且仍在等待接收目标规范。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;当探测长度为9-14字节时，服务器通常会立即发送RST，因为服务器未收到完整的目标规范。随机探测可解密为有意义规范最短长度是15字节，该长度满足完整IPv4规范的最低要求（请参阅&lt;a
    href=&#34;#sec:2-background&#34;
    title=&#34;2. Background on Shadowsocks&#34;&gt;&lt;span&gt;第2节&lt;/span&gt;&lt;/a&gt;）。仅当1字节主机名长度字段恰好解密为值1或2时，主机名规范可能略短于15字节。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;
  当探测长度不低于15字节时，服务器可能出现以下三种反应之一：RST、TIMEOUT或FIN/ACK。反应取决于随机负载是否解密为有意义的目标规范。有意义的目标规范首先要求地址类型必须是值0x01、0x03或0x04；
  任何其他值将导致立即发送RST。因为地址类型是1字节字段，我们可能预期在\(1-\frac{3}{256}\)。实际看到的比率更接近于\(1-\frac{3}{16}\)。这是因为Shadowsocks-libev屏蔽了该字段的前4字节（请参阅&lt;a
    href=&#34;#sec:2.1-historical-vulnerabilities&#34;
    title=&#34;2.1. Historical Vulnerabilities and Defenses&#34;&gt;第2.1节&lt;/a&gt;）。探测越长，RST反应的概率越低，因为较长的探测更可能包含完整的IPv6地址规范或与包长一致的主机名长度。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;
  一旦收到完整的目标规范，Shadowsocks服务器将尝试连接到指定目标。确切地说，当地址类型字段解密为0x04时，服务器将尝试解析主机名；当地址类型字段值为0x01或0x03时，服务器将向目标IP地址和端口发送SYN数据包。该行为连接到本质随机的IP地址或主机名，因此连接几乎总是失败；当出现这种情况时，服务器向客户端发送FIN/ACK以关闭连接。如果该远程连接没有立即失败（例如，如果远程主机不响应，Shadowsocks服务器花时间重新传输SYN数据包），那么GFW的探测器会率先发送FIN/ACK以关闭连接。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;使用AEAD加密的Shadowsocks-libev v3.0.8--v3.2.5。&lt;/b&gt;使用AEAD加密，服务器有一组不同的可指纹识别反应。图10(&lt;a
    href=&#34;#fig:10b-AEAD-ciphers&#34;
    title=&#34;(b)&#34;&gt;b&lt;/a&gt;)中的第一行表示具有16字节加密盐的AEAD加密。当探测长度不超过50字节时，服务器等待更多数据时超时。服务器期望的数据至少足以用于加密盐（16字节）、加密长度前缀（2字节）、加密长度标记（16字节）以及另一个标记（16字节，用于首个加密数据负载）。一旦收到不低于51字节的数据，服务器将尝试解密收到的数据，但总是会因身份验证错误而失败。服务器因身份验证错误将立即发出RST。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;Shadowsocks-libev v3.3.1--v3.3.3的变化。&lt;/b&gt;Shadowsocks-libev v3.3.1--v3.3.3的解析逻辑与上述Shadowsocks-libev
  v3.0.8--v3.2.5非常相似。如图10(&lt;a href=&#34;#fig:10b-AEAD-ciphers&#34; title=&#34;(b)&#34;&gt;b&lt;/a&gt;)所示，唯一的区别是服务器总是超时，而不是服务器有时立即发送RST的情况 &lt;span
    class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:madeye2019&#34;&gt;32&lt;/a&gt;]&lt;/span&gt;。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;OutlineVPN
    v1.0.6。&lt;/b&gt;OutlineVPN仅使用Shadowsocks的AEAD加密结构，且仅使用“chacha20-ietf-poly1305”方法，它包含32字节加密盐。在OutlineVPN
  v1.0.6中，如果探测长度少于50字节，服务器将超时。服务器需要50字节来解析以下结构：&lt;/p&gt;
&lt;blockquote&gt;
  &lt;pre style=&#34;font-size: 15px;&#34;&gt;
  [32 字节加密盐][2 字节已加密长度][16 字节长度标记]&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p class=&#34;indent&#34;&gt;
  不同于Shadowsocks-libev，OutlineVPN服务器不会额外等待足够的数据来产生第二个标记。更独特的是，当OutlineVPN接收到正好50字节的探测时，服务器会立即发送FIN/ACK。当探测长度超过50字节时，服务器因身份验证失败而立即发送RST。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;OutlineVPN v1.0.7–v1.0.8。&lt;/b&gt;从OutlineVPN v1.0.7开始，开发人员修复了服务器的可识别反应 &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Frolov2020&#34;&gt;19&lt;/a&gt;, &lt;a
      href=&#34;#cite:outline-timeout&#34;&gt;48&lt;/a&gt;]&lt;/span&gt;。与使用AEAD加密的较新版Shadowsocks-libev一样，无论探测长度如何，服务器总是超时。
&lt;/p&gt;

&lt;h3 class=&#34;subsubSectionHead&#34;, id=&#34;5-2-2&#34;&gt;
  &lt;a id=&#34;sec:5.2.2-attackers&#34; href=&#34;#sec:5.2.2-attackers&#34;&gt;5.2.2 攻击者如何使用来自随机探测的信息&lt;/a&gt;
&lt;/h3&gt;

&lt;p class=&#34;indent&#34;&gt;
  本节使用通用术语“攻击者”而不是“GFW”。原因有二：首先，攻击的执行不仅可能来自GFW，而且可能来自任何具备观察Shadowsocks流量能力的审查员。其次，由于GFW的黑盒特性，我们只能猜测其内在逻辑且无法证实我们的猜想。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;
  通过对随机探测反应进行统计分析，攻击者可高可信度地识别Shadowsocks服务器。确切地说，攻击者可以向服务器发送一组不同长度的探测并记录其反应。在收集足够的反应数据后，攻击者可进行统计分析。如果服务器反应符合&lt;a
    href=&#34;#fig:10-reactions-to-random-probes&#34;
    title=&#34;Figure 10&#34;&gt;&lt;span&gt;图10&lt;/span&gt;&lt;/a&gt;的一行，它很可能就是Shadowsocks服务器。GFW只需一次探测即可检测并封锁Tor服务器 &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Winter2012a&#34;&gt;56&lt;/a&gt;]&lt;/span&gt;，而需一组多次探测方可封锁Shadowsocks服务器，这一事实意味着，GFW进行此类统计分析来检测Shadowsocks。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;
  攻击者甚至能够推断在较早的Shadowsocks实施中初始化向量的长度。而且，当初始化向量长度被推断为12字节时，攻击者即可获知所用加密为“chacha20-ietf”，因为这是12字节初始化向量的加密唯一支持的方式 &lt;span
    class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:ShadowsocksWhitepaper&#34;&gt;46&lt;/a&gt;, §Stream
    Cipher&lt;/span&gt;]。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;
  通过类似的推理，攻击者也许能够推断正在使用何种Shadowsocks实施及其大致版本。例如，根据身份验证错误导致导致立即发送RST或TIMEOUT，可推断服务器正在运行较旧或较新的Shadowsocks实施 &lt;span
    class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Frolov2020&#34;&gt;19&lt;/a&gt;]&lt;/span&gt;。RST概率接近&lt;span id=&#34;S5.SS2.SSS2.p4.m1&#34; class=&#34;ltx_Math&#34;&gt;&lt;span
      class=&#34;mjpage&#34;&gt;&lt;span class=&#34;mjx-chtml&#34;&gt;&lt;span class=&#34;mjx-math&#34; aria-label=&#34;1-\frac{3}{256}&#34;&gt;&lt;span class=&#34;mjx-mrow&#34;
            aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;mjx-mn&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span
              class=&#34;mjx-mo MJXc-space2&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                style=&#34;padding-top: 0.298em; padding-bottom: 0.446em;&#34;&gt;−&lt;/span&gt;&lt;/span&gt;&lt;span
              class=&#34;mjx-mfrac MJXc-space2&#34;&gt;&lt;span class=&#34;mjx-box MJXc-stacked&#34;
                style=&#34;width: 1.202em; padding: 0px 0.12em;&#34;&gt;&lt;span class=&#34;mjx-numerator&#34;
                  style=&#34;font-size: 70.7%; width: 1.7em; top: -1.393em;&#34;&gt;&lt;span class=&#34;mjx-mn&#34; style=&#34;&#34;&gt;&lt;span
                      class=&#34;mjx-char MJXc-TeX-main-R&#34;
                      style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span
                  class=&#34;mjx-denominator&#34; style=&#34;font-size: 70.7%; width: 1.7em; bottom: -0.687em;&#34;&gt;&lt;span class=&#34;mjx-mn&#34;
                    style=&#34;&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                      style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;256&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span
                  style=&#34;border-bottom: 1.3px solid; top: -0.296em; width: 1.202em;&#34;
                  class=&#34;mjx-line&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;height: 1.471em; vertical-align: -0.486em;&#34;
                class=&#34;mjx-vsize&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;或&lt;span id=&#34;S5.SS2.SSS2.p4.m2&#34;
    class=&#34;ltx_Math&#34;&gt;&lt;span class=&#34;mjpage&#34;&gt;&lt;span class=&#34;mjx-chtml&#34;&gt;&lt;span class=&#34;mjx-math&#34;
          aria-label=&#34;1-\frac{3}{16}&#34;&gt;&lt;span class=&#34;mjx-mrow&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;mjx-mn&#34;&gt;&lt;span
                class=&#34;mjx-char MJXc-TeX-main-R&#34;
                style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span
              class=&#34;mjx-mo MJXc-space2&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                style=&#34;padding-top: 0.298em; padding-bottom: 0.446em;&#34;&gt;−&lt;/span&gt;&lt;/span&gt;&lt;span
              class=&#34;mjx-mfrac MJXc-space2&#34;&gt;&lt;span class=&#34;mjx-box MJXc-stacked&#34;
                style=&#34;width: 0.849em; padding: 0px 0.12em;&#34;&gt;&lt;span class=&#34;mjx-numerator&#34;
                  style=&#34;font-size: 70.7%; width: 1.2em; top: -1.393em;&#34;&gt;&lt;span class=&#34;mjx-mn&#34; style=&#34;&#34;&gt;&lt;span
                      class=&#34;mjx-char MJXc-TeX-main-R&#34;
                      style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span
                  class=&#34;mjx-denominator&#34; style=&#34;font-size: 70.7%; width: 1.2em; bottom: -0.687em;&#34;&gt;&lt;span class=&#34;mjx-mn&#34;
                    style=&#34;&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                      style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;16&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span
                  style=&#34;border-bottom: 1.3px solid; top: -0.296em; width: 0.849em;&#34;
                  class=&#34;mjx-line&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;height: 1.471em; vertical-align: -0.486em;&#34;
                class=&#34;mjx-vsize&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
  决定Shadowsocks实施是否对地址类型字段应用掩码。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;
  在实际研究中，我们观察到GFW向同一服务器发送一组NR1型和NR2型探测。而且GFW每小时发送一些探测，而不是一次性发送所有探测。我们推测，GFW这样做是为了使探测不那么引人注目，同时增加通过指纹识别探测的难度。这样的设计同时令GFW能够更为平衡与高效地利用资源。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;a href=&#34;#fig:10-reactions-to-random-probes&#34;
    title=&#34;Figure 10&#34;&gt;&lt;span&gt;图10&lt;/span&gt;&lt;/a&gt;中红色标记的GFW探测长度，与某些Shadowsocks实施中反应变化所处的阈值一致。例如，使用8字节初始化向量加密的服务器，将对8字节探测超时，并立即RST9字节探测。通过发送长度为7、8和9字节的探测，GFW覆盖了该转换点。不过，值得注意的是，32-34和40-41字节的NR1型探测，以及221字节的NR2型探测，与任何服务器阈值均不一致。但是，这些信息可能仍然有助于识别Shadowsocks服务器。根据实施，这些探测可用于计算服务器发送RST的实验概率。如果这个概率接近于&lt;span
    id=&#34;S5.SS2.SSS2.p6.m1&#34; class=&#34;ltx_Math&#34;&gt;&lt;span class=&#34;mjpage&#34;&gt;&lt;span class=&#34;mjx-chtml&#34;&gt;&lt;span class=&#34;mjx-math&#34;
          aria-label=&#34;1-\frac{3}{256}&#34;&gt;&lt;span class=&#34;mjx-mrow&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;mjx-mn&#34;&gt;&lt;span
                class=&#34;mjx-char MJXc-TeX-main-R&#34;
                style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span
              class=&#34;mjx-mo MJXc-space2&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                style=&#34;padding-top: 0.298em; padding-bottom: 0.446em;&#34;&gt;−&lt;/span&gt;&lt;/span&gt;&lt;span
              class=&#34;mjx-mfrac MJXc-space2&#34;&gt;&lt;span class=&#34;mjx-box MJXc-stacked&#34;
                style=&#34;width: 1.202em; padding: 0px 0.12em;&#34;&gt;&lt;span class=&#34;mjx-numerator&#34;
                  style=&#34;font-size: 70.7%; width: 1.7em; top: -1.393em;&#34;&gt;&lt;span class=&#34;mjx-mn&#34; style=&#34;&#34;&gt;&lt;span
                      class=&#34;mjx-char MJXc-TeX-main-R&#34;
                      style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span
                  class=&#34;mjx-denominator&#34; style=&#34;font-size: 70.7%; width: 1.7em; bottom: -0.687em;&#34;&gt;&lt;span class=&#34;mjx-mn&#34;
                    style=&#34;&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                      style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;256&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span
                  style=&#34;border-bottom: 1.3px solid; top: -0.296em; width: 1.202em;&#34;
                  class=&#34;mjx-line&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;height: 1.471em; vertical-align: -0.486em;&#34;
                class=&#34;mjx-vsize&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; or &lt;span id=&#34;S5.SS2.SSS2.p6.m2&#34;
    class=&#34;ltx_Math&#34;&gt;&lt;span class=&#34;mjpage&#34;&gt;&lt;span class=&#34;mjx-chtml&#34;&gt;&lt;span class=&#34;mjx-math&#34;
          aria-label=&#34;1-\frac{3}{16}&#34;&gt;&lt;span class=&#34;mjx-mrow&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;mjx-mn&#34;&gt;&lt;span
                class=&#34;mjx-char MJXc-TeX-main-R&#34;
                style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span
              class=&#34;mjx-mo MJXc-space2&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                style=&#34;padding-top: 0.298em; padding-bottom: 0.446em;&#34;&gt;−&lt;/span&gt;&lt;/span&gt;&lt;span
              class=&#34;mjx-mfrac MJXc-space2&#34;&gt;&lt;span class=&#34;mjx-box MJXc-stacked&#34;
                style=&#34;width: 0.849em; padding: 0px 0.12em;&#34;&gt;&lt;span class=&#34;mjx-numerator&#34;
                  style=&#34;font-size: 70.7%; width: 1.2em; top: -1.393em;&#34;&gt;&lt;span class=&#34;mjx-mn&#34; style=&#34;&#34;&gt;&lt;span
                      class=&#34;mjx-char MJXc-TeX-main-R&#34;
                      style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span
                  class=&#34;mjx-denominator&#34; style=&#34;font-size: 70.7%; width: 1.2em; bottom: -0.687em;&#34;&gt;&lt;span class=&#34;mjx-mn&#34;
                    style=&#34;&#34;&gt;&lt;span class=&#34;mjx-char MJXc-TeX-main-R&#34;
                      style=&#34;padding-top: 0.372em; padding-bottom: 0.372em;&#34;&gt;16&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span
                  style=&#34;border-bottom: 1.3px solid; top: -0.296em; width: 0.849em;&#34;
                  class=&#34;mjx-line&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;height: 1.471em; vertical-align: -0.486em;&#34;
                class=&#34;mjx-vsize&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;，攻击者可能推断Shadowsocks服务器使用流加密。&lt;/p&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;5-3&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt;&lt;a id=&#34;sec:5.3-intention-behind-replay-based-probes&#34;
    href=&#34;#sec:5.3-intention-behind-replay-based-probes&#34;&gt;5.3 重放探测背后的意图&lt;/a&gt;&lt;/h3&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;重放探测的服务器反应。&lt;/b&gt;&lt;a href=&#34;#tbl:5-servers-reactions&#34;
    title=&#34;Table 5&#34;&gt;&lt;span&gt;表5&lt;/span&gt;&lt;/a&gt;概述了重放探测的各种服务器反应。此表仅涵盖重放长度足以包含完整目标规范的情况。因为在没有外部流量调整的情况下，重放所依据的真实负载其长度足以包含该信息。&lt;/p&gt;

&lt;figure class=&#34;table&#34; id=&#34;tbl:5-servers-reactions&#34;&gt;
  &lt;div class=&#34;tabular&#34;&gt;
    &lt;table class=&#34;tabular&#34;&gt;
      &lt;tbody&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;实施&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;加密模式&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;相同重放&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;字节更改重放&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34; rowspan=&#34;2&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;Shadowsocks-libev v3.0.8–v3.2.5&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;流&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;R&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;R/T/F&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;AEAD&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;R&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;R&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34; rowspan=&#34;2&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;Shadowsocks-libev v3.3.1, v3.3.3&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;流&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;T&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;T/F&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;AEAD&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;T&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;T&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;OutlineVPN&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span
                class=&#34;ptmr8t-x-x-90&#34;&gt;AEAD&lt;/span&gt;&lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;D&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
          &lt;td class=&#34;td11&#34; style=&#34;text-align:center;&#34;&gt;
            &lt;div class=&#34;multicolumn&#34; style=&#34;white-space:nowrap; text-align:center;&#34;&gt;&lt;span class=&#34;ptmr8t-x-x-90&#34;&gt;T&lt;/span&gt;
            &lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
  &lt;figcaption&gt;
    &lt;span&gt;&lt;a href=&#34;#tbl:5-servers-reactions&#34;&gt;&lt;b&gt;表5：&lt;/a&gt;&lt;/span&gt;服务器对相同重放（R1 型）的反应，与对字节更改的重放（R2--R5
    型）的反应不同，具体取决于重放检测和流/AEAD加密。R：重置、T：超时、F：FIN/ACK、D：正在发送数据。此处我们假设，所有重放长度足以包含完整的初始化向量和目标规范。&lt;/b&gt;
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;不含重放防御机制的实施。&lt;/b&gt;服务器对R1型相同重放的反应，取决于它是否含有重放防御机制。不含重放防御机制的服务器，例如OutlineVPN
  v1.0.6--v1.0.8，通过一个或多个数据包的数据流响应相同重放。一旦接收到数据，探测器回复ACK并发送FIN/ACK以关闭连接。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;通过检查给定重放负载的服务器响应时长是否始终相同，攻击者甚至可以猜测到代理的是什么协议。虽然Shadowsocks服务器的响应是加密的，但一致的响应时长可能表明，例如，底层消息是HTTP响应或TLS
  ServerHello。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;一个关键的观察结果是，在R2型、R3型和R5型探测中发生变化的字节偏移量包含初始化向量或加密盐。这表示，Shadowsocks服务器对这些探测的反应与&lt;a
    href=&#34;#sec:5.2-intention-behind-random-probes&#34;
    title=&#34;5.2. Intention Behind Random Probes&#34;&gt;&lt;span&gt;第5.2节&lt;/span&gt;&lt;/a&gt;中所述的随机探测没有不同。R4型探测可能是挑选的密文攻击，目标是具有16字节初始化向量的流加密Shadowsocks服务器。与R2型、R3型和R5型探测对比，这三者本质上也是挑选的密码攻击，但R4型探测更加精细化，因为通过列举全部255个更改的字节值，审查员可获取每个反应的确切概率。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;
  &lt;b&gt;具有重放防御机制的实施。&lt;/b&gt;即使具有重放防御机制，Shadowsocks实施的行为可能也是可辨识的。例如，Shadowsocks-libev通过Bloom过滤器来记住已接收何种初始化向量和加密盐，由此实施重放探测防御机制
  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:riobard2017&#34;&gt;40&lt;/a&gt;]&lt;/span&gt;。
&lt;/p&gt;

&lt;p class=&#34;indent&#34; 如&lt;a href=&#34;#tbl:5-servers-reactions&#34; title=&#34;Table 5&#34;&gt;
  &lt;span&gt;表5&lt;/span&gt;&lt;/a&gt;中所示，使用AEAD加密时，服务器对相同重放与字节更改重放的反应一致。然而，使用流加密时，服务器对相同重放与字节更改重放的反应不一致。对于相同重放，Shadowsocks-libev
  v3.0.8--v3.2.5保证立即发送RST；而接收字节更改重放的同一服务器，将作出以下三种不同反应之一：RST、TIMEOUT或FIN/ACK。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;
  此外，使用流加密时，攻击者可以检测是否存在重放过滤器。例如，攻击者可以向服务器发送两次相同的随机探测。如果第一次探测碰巧导致传出连接至某个远程服务器，而第二次探测被重放过滤器拦截，那么通过这种响应时间的差异，攻击者可以判断是否部署了重放过滤器。虽然无法确认这就是GFW使用的确切逻辑，但我们确实观察到，大约10%的NR2型探测被多次发送到同一台服务器。
&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34;, id=&#34;6&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:6-blocking-module&#34; href=&#34;#sec:6-blocking-module&#34;&gt;6
    GFW的封锁模块&lt;/a&gt;&lt;/h2&gt;

&lt;p class=&#34;indent&#34;&gt;自2019年7月以来，我们在中国、美国、英国、荷兰和新加坡的63个观测点展开实验。每个地点被用作服务器或客户端。我们使用了不同的Shadowsocks实施
  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:JigsawOutline&#34;&gt;25&lt;/a&gt;, &lt;a href=&#34;#cite:Shadowsocks&#34;&gt;44&lt;/a&gt;, &lt;a
      href=&#34;#cite:ShadowsocksLibev&#34;&gt;45&lt;/a&gt;, &lt;a
      href=&#34;#cite:shadowsocksr-csharp&#34;&gt;47&lt;/a&gt;]&lt;/span&gt;和设置。有趣的是，尽管我们的许多VPS都遭受了密集的主动探测，但只有三个被封锁。本节将对GFW封锁与取消封锁机制的本质进行分析与推测。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;
  &lt;b&gt;按端口还是按IP地址封锁？&lt;/b&gt;三台服务器不是以同样的方式被封锁。有的封锁是通过丢弃特定服务器端口的所有流量（按端口封锁），有的是通过丢弃所有端口的流量（按IP地址封锁）。在两种情况下，只有服务器到客户端的流量被封锁。这种单向丢包或空路由的方法，与以前的研究中GFW封锁Tor服务器的方式类似
  [&lt;span class=&#34;cite&#34;&gt;&lt;a href=&#34;#cite:Winter2012a&#34;&gt;56&lt;/a&gt;&lt;/span&gt;]。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;从审查员的角度来看，封锁整个IP地址可能是合理的。运行Shadowsocks的服务器通常专门用于“翻墙”，并且不托管审查员想要保持访问的其他服务，所以完全封锁服务器对审查员影响甚微。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;何时封锁？&lt;/b&gt;GFW已知每12小时探测一次被封的Tor服务器，并且，如果看起来Tor不再运行，则解除封锁
  [&lt;span class=&#34;cite&#34;&gt;&lt;a href=&#34;#cite:Winter2012a&#34;&gt;56&lt;/a&gt;&lt;/span&gt;]。相比之下，我们在实验中没有观察到定时检查，
  以判断被封服务器是否仍在运行Shadowsocks。我们被封的一台服务器在超过一周后才解封。在被封后，该服务器仍然继续运行Shadowsocks，并且在GFW将其解封之前，我们没有观察到对该服务器的探测。原因可能在于，如&lt;a
    href=&#34;#sec:5.2-intention-behind-random-probes&#34;
    title=&#34;5.2. Intention Behind Random Probes&#34;&gt;&lt;span&gt;第5.2节&lt;/span&gt;&lt;/a&gt;中所述，相对于Tor，辨识Shadowsocks需要进行更多探测，导致封锁后的检查成本更高。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;
  &lt;b&gt;我们的服务器为何很少被封？&lt;/b&gt;主动探测很明显是存在的，但是我们仍然不清楚主动探测与Shadowsocks服务器封锁之间的关系。几个收到探测的服务器被封锁。其中一台被封服务器只运行了大约15分钟，并且收到的探测远没有未被封服务器那么多。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;
  我们提出了两种假设，试图阐释这种现象。其一是Shadowsocks封锁由人为因素控制。即，GFW可能维护着一份已检测或疑似Shadowsocks服务器的列表，并且是否封锁列表上的服务器由人来决定。这种假设可部分解释，为什么在政治敏感期报告的封锁事件更多一些
  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Fifield2019b&#34;&gt;17&lt;/a&gt;, &lt;a href=&#34;#cite:Ghost2017&#34;&gt;21&lt;/a&gt;]&lt;/span&gt;。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;另一假设是，对大多数实验中使用的特定Shadowsocks实施和版本，主动探测是无效的。事实上，所有被封的三台服务器均运行ShadowsocksR
  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:shadowsocksr-csharp&#34;&gt;47&lt;/a&gt;]&lt;/span&gt;或Shadowsocks-python
  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Shadowsocks&#34;&gt;44&lt;/a&gt;]&lt;/span&gt;，这与大多数实验中使用的Shadowsocks-libev &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:ShadowsocksLibev&#34;&gt;45&lt;/a&gt;]&lt;/span&gt;和OutlineVPN &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:JigsawOutline&#34;&gt;25&lt;/a&gt;]&lt;/span&gt;实施不同。但是，大量用户报告表明，Shadowsocks-libev和OutlineVPN通常对于封锁并无免疫力。
&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34;, id=&#34;7&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:7-circumvention&#34; href=&#34;#sec:7-circumvention&#34;&gt;7
    规避&lt;/a&gt;&lt;/h2&gt;

&lt;p class=&#34;indent&#34;&gt;Shadowsocks检测出现在两个阶段：1)被动识别可疑的Shadowsocks连接，然后
  2)主动探测服务器。因此，为防止被封锁，用户可以
  1)避开被动探测器，或者
  2)以不会导致被封的方式响应主动探测。下面将介绍并讨论这两种规避策略。
  我们已与Shadowsocks-libev和OutlineVPN开发人员分享我们的发现与防御提议，这已推动这些工具的改善（请参阅&lt;a href=&#34;#sec:disclosure&#34;
    title=&#34;Responsible Disclosure ‣ How China Detects and Blocks Shadowsocks&#34;&gt;&lt;span&gt;负责任的披露&lt;/span&gt;&lt;/a&gt;）。&lt;/p&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;7-1&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:7.1-defense-against-traffic-analysis&#34;
    href=&#34;#sec:7.1-defense-against-traffic-analysis&#34;&gt;7.1 对流量分析的防御&lt;/a&gt;&lt;/h3&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;更改客户端到服务器流中的负载长度，是有效的。&lt;/b&gt;在&lt;a href=&#34;#sec:4.2-experiment-result-and-analysis&#34;
    title=&#34;4.2. Experiment Results and Analysis&#34;&gt;&lt;span&gt;第4.2节&lt;/span&gt;&lt;/a&gt;中，我们看到，为了识别Shadowsocks流量，GFW考虑了连接中第一个数据包的长度。这个发现表明，可以通过改变数据包长度来缓解GFW的流量分析攻击。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;Brdgrd &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:brdgrd&#34;&gt;54&lt;/a&gt;]&lt;/span&gt;(bridge
  guard)是一款可以在Shadowsocks服务器上运行的软件，
  它可令客户端将其Shadowsocks握手拆分成几个较小的数据包。Brdgrd最初是为了迫使GFW进行复杂的TCP重组，破坏它对Tor网桥的检测 &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Winter2012a&#34;&gt;56&lt;/a&gt;]&lt;/span&gt;，
  但此处利用它的这一能力，来调整客户端数据包的大小。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;作为测试，我们搭建了Shadowsocks服务器，并设置客户端每5分钟进行16次服务器连接。随机启用和禁用brdgrd，并测量两种情况的主动探测比率。&lt;a
    href=&#34;#tbl:1-experiment-timeline&#34; title=&#34;Table 1&#34;&gt;&lt;span&gt;表1&lt;/span&gt;&lt;/a&gt;概述了实验的时间跨度。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;a href=&#34;#fig:11-effectiveness-of-brdgrd&#34;
    title=&#34;Figure 11&#34;&gt;&lt;span&gt;图11&lt;/span&gt;&lt;/a&gt;显示了Shadowsocks服务器随时间变化接收的探测数。该图显示，启用brdgrd几小时之内，探测将减少至零。一旦再次禁用brdgrd，主动探测立即恢复。第二次启用brdgrd后，探测完全停止约40小时，但随后又出现一些探测。
  请注意，接收到一些主动探测并不一定意味着改变数据包大小是无效的，因为停用客户端50小时后，服务器仍收到少量探测。启用brdgrd时探测减少，并非偶然，
  因为在未安装brdgrd的对照服务器中没有观察到主动探测数量的显著变化。&lt;/p&gt;

&lt;figure id=&#34;fig:11-effectiveness-of-brdgrd&#34; class=&#34;figure&#34;&gt;&lt;img src=&#34;../figures/effectiveness_of_brdgrd.png&#34;
    id=&#34;fig:11-effectiveness-of-brdgrd&#34; alt=&#34;&#34;&gt;
  &lt;figcaption style=&#34;text-align: center;&#34;&gt;&lt;span&gt;&lt;span&gt;&lt;a
          href=&#34;#fig:11-effectiveness-of-brdgrd&#34;&gt;&lt;b&gt;图11：&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;当启用brdgrd时，主动探测的强度降低。&lt;/b&gt;
    &lt;/span&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p class=&#34;indent&#34;&gt;
  另外，我们搭建了一个从一开始就启用brdgrd的服务器，在启用之前没有Shadowsocks客户端与其连接。尽管两个服务器建立了相同数量的连接，相对于开始之后才启用brdgrd的服务器，该服务器收到的探测甚至更少。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;这些观察结果进一步证实，在检测Shadowsocks流量时，GFW的流量分析模块将考虑客户端到服务器流量的TCP段大小。通过破环归类的第一步，修改数据包大小可显著缓解主动探测。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;Brdgrd的局限性。&lt;/b&gt;虽然brdgrd可以暂时有效减少主动探测，不可将brdgrd视为Shadowsocks封锁问题的永久解决方案，原因如下：&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;第一，为了降低brdgrd可指纹识别性，TCP窗口大小指定从一个范围内随机选取。
  然而，TCP窗口大小不一致这一公告本身，可能就是可识别的特征。在一定时间内保持TCP窗口大小不变，可以缓解此问题。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;第二，brdgrd必须宣布TCP窗口大小，与任何真正的TCP实施不同，该值小得异常。&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;第三，brdgrd可能导致某些Shadowsocks实施连接失败。如&lt;a href=&#34;#fig:10-reactions-to-random-probes&#34;
    title=&#34;Figure 10&#34;&gt;&lt;/span&gt;图10&lt;/span&gt;&lt;/a&gt;所示，当第一个数据传输包的长度不足以包含完整的目标规范时，某些Shadowsocks实施将立即RST连接。因brdgrd切割数据包过小而导致触发即时RST连接，这种情况并不少见。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;我们的结论是，为了防御流量分析同时保持可用性和效率，流量调整机制需要更为周全。&lt;/p&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;7-2&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:7.2-defense-against-active-probing&#34;
    href=&#34;#sec:7.2-defense-against-active-probing&#34;&gt;7.2 防御主动探测&lt;/a&gt;&lt;/h3&gt;

&lt;p class=&#34;indent&#34;&gt;即使流量调整机制是完善的，即对手根本无法被动地区分Shadowsocks规避流量与合法流量，对于主动探测的防御也是至关重要的。这是因为，资源充足的对手可以跳过流量分析步骤，对&lt;em&gt;所有&lt;/em&gt;
  被观察到接收连接的IP-端口对进行探测。本节探讨并总结了针对重放探测和随机探测的防御策略。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;适当的身份验证。&lt;/b&gt;如&lt;a href=&#34;#sec:5-intention-behind-probes&#34;
    title=&#34;5. Intention Behind the Probes&#34;&gt;&lt;span&gt;第5节&lt;/span&gt;&lt;/a&gt;中所述，Shadowsocks流加密因缺乏身份验证而遭受利用密文延展性的探测攻击。Shadowsocks
  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:BreakWa112015&#34;&gt;8&lt;/a&gt;, &lt;a href=&#34;#cite:Fifield2017&#34;&gt;15&lt;/a&gt;, &lt;a
      href=&#34;#cite:Fifield2019a&#34;&gt;16&lt;/a&gt;, &lt;a href=&#34;#cite:Peng2020&#34;&gt;36&lt;/a&gt;,
    &lt;a href=&#34;#cite:printempw2017&#34;&gt;37&lt;/a&gt;]&lt;/span&gt;以及其他诸如V2Ray &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Anonymous2020&#34;&gt;2&lt;/a&gt;, &lt;a
      href=&#34;#cite:p4gefau1t2020&#34;&gt;35&lt;/a&gt;]&lt;/span&gt;的规避工具，存在许多漏洞的原因正是这一设计缺陷。因此，我们建议用户仅使用AEAD加密，并鼓励规避工具开发人员完全弃用没有身份验证的加密结构。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;同时基于随机数(nonce)和计时的重放过滤。&lt;/b&gt;我们在&lt;a href=&#34;#sec:3.5-delay-of-replay-attacks&#34;
    title=&#34;3.5. Delay of Replay Attacks&#34;&gt;&lt;span&gt;第3.5节&lt;/span&gt;&lt;/a&gt;中指出，一个现实的主动探测对手模型应该允许审查员在经过任意时间的延迟后执行重放攻击。这样的模型揭示了纯粹基于随机数的重放防御机制存在着攻防不对称。记录&lt;em&gt;一些&lt;/em&gt;
  合法负载并在相当长的延迟后对其重放，从资源角度来讲，GFW的成本并不高，但是，永远记住&lt;em&gt;所有&lt;/em&gt;
  经过身份验证的连接的随机数，或者直至更改主密码，对于Shadowsocks服务器，则是成本高昂且比较复杂。即使重启之后，Shadowsocks服务器也必须记住这些随机数；否则，对于跨越重启的重放负载，重放过滤器将无效。幸运的是，通过添加基于计时的防御机制，可以扭转这种不公平的博弈：服务器仅响应经过身份验证的连接，并且它不是重放，其时间戳在过期时间范围内，类似于VMess服务器的处理方式
  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Anonymous2020&#34;&gt;2&lt;/a&gt;]&lt;/span&gt;。如此，服务器只需在有限时间内而不是永远记住随机数。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;&lt;b&gt;服务器反应保持一致。&lt;/b&gt;如&lt;a href=&#34;#sec:5-intention-behind-probes&#34;
    title=&#34;5. Intention Behind the Probes&#34;&gt;&lt;span&gt;第5节&lt;/span&gt;&lt;/a&gt;中所述，在正常运行以及发生错误时规避协议都应作出一致的反应。审查员可能蓄意触发协议临界情况，尝试对服务器进行指纹识别。使用类似于Shadowsocks-libev和OutlineVPN所发现的不一致，Frolov等人
  &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Frolov2020&#34;&gt;19&lt;/a&gt;]&lt;/span&gt;论证了在服务器关闭连接后，使用TCP标志和计时元数据可以识别各种代理服务器，包括Shadowsocks-python和OutlineVPN。他们建议，在发生错误时，代理服务器应该一直读取，而不是终止连接。这样做不仅可以避免泄露特定的超时值，而且可以让服务器关闭连接，并使用与非错误情况一致的TCP标志。
&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;8&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:8-related-work&#34; href=&#34;#sec:8-related-work&#34;&gt;8
    相关研究&lt;/a&gt;&lt;/h2&gt;
&lt;p class=&#34;indent&#34;&gt;
&lt;p&gt;关于Shadowsocks流量分析的研究已有不少 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Baerts2015&#34;&gt;4&lt;/a&gt;, &lt;a href=&#34;#cite:Deng2017&#34;&gt;12&lt;/a&gt;, &lt;a
      href=&#34;#cite:Liu2019&#34;&gt;28&lt;/a&gt;, &lt;a
      href=&#34;#cite:Zeng2019&#34;&gt;57-59&lt;/a&gt;]&lt;/span&gt;。有些研究预设的对手，比我们现实观测到更强大。例如，曾雪梅等人提出假设：攻击者在构建检测模型时考虑了主机的DNS行为 &lt;span
    class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Zeng2019&#34;&gt;57&lt;/a&gt;]&lt;/span&gt;。许多检测Shadowsocks流量的概念证明工具已被开发出来。Zhixin Wang提出了一种基于前几个高熵数据包的攻击
  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:isofew2017&#34;&gt;23&lt;/a&gt;]&lt;/span&gt;。Madeye使用了数据包长度的分布来识别Shadowsocks和ShadowsocksR流量 &lt;span
    class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:madeye2017&#34;&gt;31&lt;/a&gt;]&lt;/span&gt;。此外，王亮等人论证了基于熵的流量分析可以准确识别一些“翻墙”协议，例如obfs3、obfs4和FTE &lt;span
    class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:LiangWang2015&#34;&gt;51&lt;/a&gt;]&lt;/span&gt;。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;许多研究和报告实证性地表明，GFW部署了主动探测技术用于发现审查规避工具。已知的目标协议包括Tor &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Dunna2018&#34;&gt;13&lt;/a&gt;,
    &lt;a href=&#34;#cite:TimWilde2012&#34;&gt;52&lt;/a&gt;, &lt;a href=&#34;#cite:Winter2012a&#34;&gt;56&lt;/a&gt;]&lt;/span&gt;、obfs2 &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Winter2013&#34;&gt;55&lt;/a&gt;]&lt;/span&gt;、VPN
  Gate &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:NoboriShinjo2014&#34;&gt;34&lt;/a&gt;]&lt;/span&gt;以及其他VPN服务&lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Jacobs2015&#34;&gt;24&lt;/a&gt;]&lt;/span&gt;。Winter等人 &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Winter2012a&#34;&gt;56&lt;/a&gt;]&lt;/span&gt;早在2012年就研究了GFW如何通过主动探测发现Tor中继。Dunna等人
  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Dunna2018&#34;&gt;13&lt;/a&gt;]&lt;/span&gt;在2018年重新审视了针对Tor的主动探测。Ensafi等人 &lt;span class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:Ensafi2015&#34;&gt;14&lt;/a&gt;]&lt;/span&gt;通过指纹识别GFW针对不同协议的探测，并推断探测机器的底层基础设施。V2Ray的开发人员报告称，V2Ray服务器早在2017年就开始遭受重放攻击
  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:projectv2ray2017&#34;&gt;39&lt;/a&gt;]&lt;/span&gt;。据我们所知，针对Shadowsocks使用主动探测的最早记录是在2019年6月 &lt;span
    class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:bluesky2019&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;。
&lt;/p&gt;

&lt;p class=&#34;ident&#34;&gt;研究人员提出了许多理论上的主动探测攻击类型和防御措施 &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Anonymous2020&#34;&gt;2&lt;/a&gt;,
    &lt;a href=&#34;#cite:BreakWa112015&#34;&gt;8&lt;/a&gt;, &lt;a href=&#34;#cite:Cheng2020&#34;&gt;10&lt;/a&gt;, &lt;a href=&#34;#cite:Fifield2017&#34;&gt;15&lt;/a&gt;, &lt;a
      href=&#34;#cite:nametoolong2020&#34;&gt;33&lt;/a&gt;, &lt;a href=&#34;#cite:p4gefau1t2020&#34;&gt;35-37&lt;/a&gt;]&lt;/span&gt;。最值得注意的是，Frolov等人 &lt;span
    class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:Frolov2020&#34;&gt;19&lt;/a&gt;]&lt;/span&gt;通过服务器关闭连接后所用的TCP标志和计时信息，识别各种代理服务器。Frolov和Wustrow &lt;span
    class=&#34;cite&#34;&gt;[&lt;a
      href=&#34;#cite:FrolovWustrow2020&#34;&gt;20&lt;/a&gt;]&lt;/span&gt;为主动探测防御指出一个有前景的方向，即将代理隐藏在热门应用程序后面。这个概念称为&lt;em&gt;应用程序前置&lt;/em&gt;，已被许多热门的规避工具采用
  &lt;span class=&#34;cite&#34;&gt;[&lt;a href=&#34;#cite:klzgrad&#34;&gt;27&lt;/a&gt;,
    &lt;a href=&#34;#cite:FrolovForwardProxy&#34;&gt;43&lt;/a&gt;, &lt;a href=&#34;#cite:trojan&#34;&gt;49&lt;/a&gt;, &lt;a href=&#34;#cite:V2Ray&#34;&gt;50&lt;/a&gt;]&lt;/span&gt;。
&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;9&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:9-future-work&#34; href=&#34;#sec:9-future-work&#34;&gt;9
    未来研究&lt;/a&gt;&lt;/h2&gt;
&lt;p class=&#34;indent&#34;&gt;在本次研究中，我们着重介绍了GFW专门针对Shadowsocks的主动探测。然而，来自实验观测的若干证据表明，GFW针对其他未知规避协议也进行主动探测。首先，如&lt;a
    href=&#34;#sec:4.1-experiments&#34;
    title=&#34;Section 4.1&#34;&gt;第4.1节&lt;/a&gt;中所述，我们能够使用随机数据触发主动探测。其他规避协议，如VMess，也对流量进行完全加密，因此也可能被检测。其次，如&lt;a
    href=&#34;#sec:4.2-experiment-result-and-analysis&#34;
    title=&#34;Section 4.2&#34;&gt;第4.2节&lt;/a&gt;中所述，我们发现Shadowsocks和OutlineVPN服务器未收到的新型探测。如果这些探测不是针对Shadowsocks，
  探测对象是什么？第三，2020年6月，VMess被发现对于主动探测的漏洞 [&lt;span class=&#34;cite&#34;&gt;&lt;a href=&#34;#cite:Anonymous2020&#34;&gt;2&lt;/a&gt;&lt;/span&gt;, &lt;span
    class=&#34;cite&#34;&gt;&lt;a href=&#34;#cite:nametoolong2020&#34;&gt;33&lt;/a&gt;&lt;/span&gt;,
  &lt;span class=&#34;cite&#34;&gt;&lt;a href=&#34;#cite:p4gefau1t2020&#34;&gt;35&lt;/a&gt;&lt;/span&gt;]。我们想要测试GFW是否真的利用了这个漏洞。
&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34;, id=&#34;10&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:10-ethics&#34; href=&#34;#sec:10-ethics&#34;&gt;10 伦理&lt;/a&gt;&lt;/h2&gt;
&lt;p class=&#34;indent&#34;&gt;
  审查测量研究存在一定的风险，从敏感的记录，到法律上负面影响。在进行测量实验时，我们采取了措施将风险降至最低。首先，本次研究不涉及人类主体。所有网络流量均由我们控制的程序自动生成。其次，尽管审查员观察到敏感查询属于低风险，但我们仍尽力限制敏感查询的数量。确切地说，四个实验仅在一个实验中使用中国境内主机作为Shadowsocks服务器。在该实验中，最初服务器代理浏览Alexa排名前100万网站子集的流量。实验运行45小时之后，我们决定从浏览列表中删除被封网站，以便中国境内的主机不会连接到防火墙外的敏感网站。第三，我们的规避服务器使用专用IP地址，将封锁的潜在附带伤害降至最低。我们从VPS提供商租用的非审查网络主机，允许使用Shadowsocks和OutlineVPN，而且事实上甚至提供OutlineVPN自动安装。
&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34;, id=&#34;11&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:11-conclusion&#34; href=&#34;#sec:11-conclusion&#34;&gt;11
    结语&lt;/a&gt;&lt;/h2&gt;
&lt;p class=&#34;indent&#34;&gt;在该研究中，我们系统地研究并揭示了GFW针对Shadowsocks的最新武器。
  我们发现，通过每个连接中第一个数据传输包的大小和熵，GFW来检测可能的Shadowsocks流量；然后，在不同的阶段，向可疑服务器发送主动探测。主动探测包括基于重放的探测，以及长度不同的随机探测。它们本质上是不同类型的攻击，针对不同Shadowsocks实施中的漏洞。我们对探测器进行了指纹读取，并且发现与以前主动探测实验的不同。网络层边信道显示，数千个IP地址发送的探测很可能由一组集中式结构控制。
&lt;/p&gt;

&lt;p class=&#34;indent&#34;&gt;最后，基于我们已获取的认知，提出了一种临时解决方法，用于缓解GFW的流量分析攻击。我们进一步探讨了防御主动探测的基本策略。我们与开发人员密切协作，提升Shadowsocks和相关工具的封锁抵御功能。
&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34;, id=&#34;disclosure&#34;&gt;&lt;a id=&#34;sec:disclosure&#34; href=&#34;#sec:disclosure&#34;&gt;负责任的披露&lt;/a&gt;&lt;/h2&gt;

&lt;p class=&#34;indent&#34;&gt;我们向Shadowsocks-libev和OutlineVPN开发人员分享了我们的发现和建议。2020年2月，OutlineVPN发布了1.1.0版本，提供防御客户端数据重放的选项 [&lt;a
    href=&#34;#cite:JigsawOutlineV110&#34;&gt;26&lt;/a&gt;]。2020年9月，OutlineVPN进一步提供防御服务器数据重放的选项。2020年7月，OutlineVPN开发人员将头部和初始数据合并到一个数据包，以每个连接第一个数据包大小可变
  [&lt;span class=&#34;cite&#34;&gt;&lt;a
      href=&#34;#cite:Fortuna2020&#34;&gt;18&lt;/a&gt;&lt;/span&gt;]。2020年9月初，OutlineVPN开发人员报告称，自从作出这些更改后，其服务器依然受到密集的探测，但是并未被封锁。此外，我们公开分享了初步调查结果
  [&lt;a href=&#34;#cite:Anonymous2019&#34;&gt;3&lt;/a&gt;&lt;/span&gt;]，潜在推动Shadowsocks-rustv1.8.5增加重放了防御功能 [&lt;span class=&#34;cite&#34;&gt;&lt;/span&gt;&lt;a
    href=&#34;#cite:shadowsocks-rust-v1.8.5&#34;&gt;60&lt;/a&gt;&lt;/span&gt;]。&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;acknowledgements&#34;&gt;&lt;a id=&#34;sec:acknowledgements&#34; href=&#34;#sec:acknowledgements&#34;&gt;鸣谢&lt;/a&gt;&lt;/h2&gt;
&lt;p class=&#34;indent&#34;&gt;作者在此向以下人士表示诚挚的感谢：Shadowsocks-libev开发人员；参与Jigsaw项目的Vinicius Fortuna和其他OutlineVPN开发人员；以及科罗拉多大学的Eric
  Wustrow和其他研究人员。几位作者还要特别感谢Dave Levin为本论文提供指导。本次研究的部分经费来自&lt;a
    href=&#34;https://www.nsf.gov/awardsearch/showAward?AWD_ID=1553301&#34;&gt;NSF CAREER grant CNS-1553301&lt;/a&gt;。
&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;availability&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:availability&#34;
    href=&#34;#sec:availability&#34;&gt;数据提供&lt;/a&gt;&lt;/h2&gt;
&lt;p class=&#34;indent&#34;&gt;为了保持实验再现性促进未来的研究，在不影响匿名性的情况下，我们已最大限度地发布了实验数据和源代码：
  &lt;a href=&#34;https://gfw.report/publications/imc20/en&#34;&#34;&gt;https://gfw.report/publications/imc20/en&lt;/a&gt;。
&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34;, id=references&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:references&#34; href=&#34;#sec:references&#34;&gt;参考文献&lt;/a&gt;
    &lt;/h2&gt;
    &lt;div class=&#34;bibliography&#34;&gt;
      &lt;ol class=&#34;citation-numbering&#34;&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Anonymous2014&#34;&gt;&lt;/a&gt; Anonymous. Towards a Comprehensive Picture of the Great Firewall&#39;s DNS
          Censorship.
          In&lt;em&gt;Free and Open Communications on the Internet&lt;/em&gt;,
          USENIX, 2014.
          &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci14/foci14-anonymous.pdf&#34;&gt;
            https://www.usenix.org/system/files/conference/foci14/foci14-anonymous.pdf.&lt;/a&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Anonymous2020&#34;&gt;&lt;/a&gt;Anonymous. 2020. &lt;em&gt;Summary on Recently Discovered V2Ray Weaknesses.&lt;/em&gt;
          Retrieved
          September
          2020 from &lt;a class=&#34;url&#34;
            href=&#34;https://gfw.report/blog/v2ray_weaknesses/en/&#34;&gt;https://gfw.report/blog/v2ray_weaknesses/en/&lt;/a&gt;.
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Anonymous2019&#34;&gt;&lt;/a&gt;Anonymous, Anonymous, Anonymous, David Fifield, and Amir Houmansadr. 2019.
          &lt;em&gt;How
            China Detects and Blocks Shadowsocks.&lt;/em&gt; Retrieved September 2020 from &lt;a class=&#34;url&#34;
            href=&#34;https://gfw.report/blog/gfw_shadowsocks&#34;&gt;https://gfw.report/blog/gfw_shadowsocks&lt;/a&gt;.
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Baerts2015&#34;&gt;&lt;/a&gt;Matthieu Baerts and Quentin De Coninck. 2015. &lt;em&gt;Multipath TCP with real
            Smartphone
            applications.
            Master’s thesis.&lt;/em&gt; Université catholique de Louvain. &lt;a class=&#34;url&#34;
            href=&#34;https://dial.uclouvain.be/memoire/ucl/object/thesis:366&#34;&gt;https://dial.uclouvain.be/memoire/ucl/object/thesis:366&lt;/a&gt;.
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:bluesky2019&#34;&gt;&lt;/a&gt;bluesky. 2019. &lt;em&gt;6.4期间翻墙观察.&lt;/em&gt; Retrieved February 2020 from &lt;a class=&#34;url&#34;
            href=&#34;https://pincong.rocks/article/2019&#34;&gt;https://pincong.rocks/article/2019&lt;/a&gt;.
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Bock2020&#34;&gt;&lt;/a&gt;Kevin Bock, iyouport, Anonymous, Louis-Henri Merino, David Fifield, Amir Houmansadr,
          and Dave
          Levin. 2020. &lt;em&gt;Exposing and Circumventing China’s Censorship of ESNI.&lt;/em&gt; Retrieved September 2020 from &lt;a
            class=&#34;url&#34;
            href=&#34;https://github.com/net4people/bbs/issues/43#issuecomment-673322409&#34;&gt;https://github.com/net4people/bbs/issues/43#issuecomment-673322409&lt;/a&gt;.
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Borman2014&#34;&gt;&lt;/a&gt;David Borman, Bob Braden, Van Jacobson, and Richard Scheffenegger. 2014. &lt;em&gt;TCP
            Extensions
            for
            High Performance.&lt;/em&gt; RFC 7323. RFC Editor. &lt;a class=&#34;url&#34;
            href=&#34;https://tools.ietf.org/html/rfc7323&#34;&gt;https://tools.ietf.org/html/rfc7323&lt;/a&gt;.
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:BreakWa112015&#34;&gt;&lt;/a&gt;BreakWa11. 2015. &lt;em&gt;Shadowsocks协议的弱点分析和改进.&lt;/em&gt; Retrieved August 2019 from &lt;a
            class=&#34;url&#34;
            href=&#34;https://web.archive.org/web/20160829052958/https://github.com/breakwa11/shadowsocks-rss/issues/38&#34;&gt;https://web.archive.org/web/20160829052958/https://github.com/breakwa11/shadowsocks-rss/issues/38&lt;/a&gt;.
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Chai2019&#34;&gt;&lt;/a&gt;Zimo Chai, Amirhossein Ghafari, and Amir Houmansadr. 2019. On the Importance of
          Encrypted-SNI
          (ESNI) to Censorship Circumvention. In &lt;em&gt;Free and Open Communications on the Internet.&lt;/em&gt; USENIX. &lt;a
            class=&#34;url&#34;
            href=&#34;https://www.usenix.org/system/files/foci19-paper_chai_update.pdf&#34;&gt;https://www.usenix.org/system/files/foci19-paper_chai_update.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Cheng2020&#34;&gt;&lt;/a&gt;Jiaxing Cheng, Ying Li, Cheng Huang, Ailing Yu, and Tao Zhang. 2020. ACER:
          detecting
          Shadowsocks
          server based on active probe technology. &lt;em&gt;Journal of Computer Virology and Hacking Techniques 16,&lt;/em&gt; 3
          (2020),
          217–227. &lt;a class=&#34;url&#34;
            href=&#34;https://link.springer.com/article/10.1007/s11416-020-00353-z&#34;&gt;https://link.springer.com/article/10.1007/s11416-020-00353-z&lt;/a&gt;.
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Clayton2006&#34;&gt;&lt;/a&gt;Richard Clayton, Steven J. Murdoch, and Robert N. M. Watson. 2006. Ignoring the
          Great
          Firewall
          of China. In &lt;em&gt;Privacy Enhancing Technologies.&lt;/em&gt; Springer, 20–35. &lt;a class=&#34;url&#34;
            href=&#34;https://www.cl.cam.ac.uk/~rnc1/ignoring.pdf&#34;&gt;https://www.cl.cam.ac.uk/~rnc1/ignoring.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Deng2017&#34;&gt;&lt;/a&gt;Ziye Deng, Zihan Liu, Zhouguo Chen, and Yubin Guo. 2017. The Random Forest based
          Detection of
          Shadowsock’s Traffic. In Intelligent Human-Machine Systems and Cybernetics. &lt;em&gt;IEEE.&lt;/em&gt; &lt;a class=&#34;url&#34;
            href=&#34;https://www.directory-root.com/wp-content/uploads/2018/02/Shadowsocks-Sniffing.pdf&#34;&gt;https://www.directory-root.com/wp-content/uploads/2018/02/Shadowsocks-Sniffing.pdf&lt;/a&gt;.
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
          &lt;a id=&#34;cite:Dunna2018&#34;&gt;&lt;/a&gt;Arun Dunna, Ciarán O’Brien, and Phillipa Gill. 2018. Analyzing China’s Blocking of
          Unpublished
          Tor Bridges. In &lt;em&gt;Free and Open Communications on the Internet.&lt;/em&gt; USENIX. &lt;a class=&#34;url&#34;
            href=&#34;https://www.usenix.org/system/files/conference/foci18/foci18-paperdunna.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci18/foci18-paperdunna.pdf&lt;/a&gt;.
  &lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:Ensafi2015&#34;&gt;&lt;/a&gt;Roya Ensafi, David Fifield, Philipp Winter, Nick Feamster, Nicholas Weaver, and Vern
    Paxson.
    2015. Examining How the Great Firewall Discovers Hidden Circumvention Servers. In &lt;em&gt;Internet Measurement
      Conference.&lt;/em&gt; ACM. &lt;a class=&#34;url&#34;
      href=&#34;http://conferences2.sigcomm.org/imc/2015/papers/p445.pdf&#34;&gt;http://conferences2.sigcomm.org/imc/2015/papers/p445.pdf&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:Fifield2017&#34;&gt;&lt;/a&gt;David Fifield. 2017. &lt;em&gt;Shadowsocks active-probing attacks and defenses.&lt;/em&gt;
    Retrieved
    February 2020
    from &lt;a class=&#34;url&#34;
      href=&#34;https://groups.google.com/d/msg/traffic-obf/CWO0peBJLGc/Py-clLSTBwAJ&#34;&gt;https://groups.google.com/d/msg/traffic-obf/CWO0peBJLGc/Py-clLSTBwAJ&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:Fifield2019a&#34;&gt;&lt;/a&gt;David Fifield. 2019. &lt;em&gt;Decryption vulnerability in Shadowsocks stream ciphers.&lt;/em&gt;
    Retrieved June
    2020 from &lt;a class=&#34;url&#34;
      href=&#34;https://github.com/net4people/bbs/issues/24&#34;&gt;https://github.com/net4people/bbs/issues/24&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:Fifield2019b&#34;&gt;&lt;/a&gt;David Fifield. 2019. &lt;em&gt;Intensive Shadowsocks blocking in China since
      mid-September.&lt;/em&gt;
    Retrieved
    February 2020 from &lt;a class=&#34;url&#34;
      href=&#34;https://github.com/net4people/bbs/issues/16&#34;&gt;https://github.com/net4people/bbs/issues/16&lt;/a&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:Fortuna2020&#34;&gt;&lt;/a&gt;Vinicius Fortuna. 2020. &lt;em&gt;Outline changes since the prelinimary report.&lt;/em&gt;
    Retrieved
    September 2020
    from &lt;a class=&#34;url&#34;
      href=&#34;https://github.com/net4people/bbs/issues/22#issuecomment-670781627&#34;&gt;https://github.com/net4people/bbs/issues/22#issuecomment-670781627&lt;/a&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:Frolov2020&#34;&gt;&lt;/a&gt;Sergey Frolov, Jack Wampler, and Eric Wustrow. 2020. Detecting Probe-resistant Proxies.
    In
    &lt;em&gt;Network and Distributed System Security.&lt;/em&gt; The Internet Society. &lt;a class=&#34;url&#34;
      href=&#34;https://www.ndss-symposium.org/wp-content/uploads/2020/02/23087.pdf&#34;&gt;https://www.ndss-symposium.org/wp-content/uploads/2020/02/23087.pdf&lt;/a&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:FrolovWustrow2020&#34;&gt;&lt;/a&gt;Sergey Frolov and Eric Wustrow. 2020. HTTPT: A Probe-Resistant Proxy. In &lt;em&gt;Free
      and
      Open
      Communications on the Internet.&lt;/em&gt; USENIX. &lt;a class=&#34;url&#34;
      href=&#34;https://www.usenix.org/system/files/foci20-paper-frolov.pdf&#34;&gt;https://www.usenix.org/system/files/foci20-paper-frolov.pdf&lt;/a&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:Ghost2017&#34;&gt;&lt;/a&gt;ghost (unnamed user). 2017. &lt;em&gt;How did GFW block circumvention tools during the 19th
      people’s
      congress?&lt;/em&gt; Retrieved February 2020 from &lt;a class=&#34;url&#34;
      href=&#34;https://github.com/net4people/bbs/issues/1&#34;&gt;https://github.com/net4people/bbs/issues/1&lt;/a&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;#cite:goShadowsocks2&#34;&gt;&lt;/a&gt;go Shadowsocks2 developers. [n.d.]. &lt;em&gt;go-Shadowsocks2.&lt;/em&gt; &lt;a class=&#34;url&#34;
      href=&#34;https://github.com/shadowsocks/go-shadowsocks2&#34;&gt;https://github.com/shadowsocks/go-shadowsocks2&lt;/a&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:isofew2017&#34;&gt;&lt;/a&gt;isofew. 2017. &lt;em&gt;sssniff.&lt;/em&gt; &lt;a class=&#34;url&#34;
      href=&#34;https://github.com/isofew/sssniff&#34;&gt;https://github.com/isofew/sssniff&lt;/a&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:Jacobs2015&#34;&gt;&lt;/a&gt; Andrew Jacobs. 2015. &lt;em&gt;China further tightens grip on the Internet.&lt;/em&gt; The New York
    Times
    (Jan. 2015). Retrieved February 2020 from &lt;a class=&#34;url&#34;
      href=&#34;https://www.nytimes.com/2015/01/30/world/asia/china-clamps-down-still-harder-on-internet-access.html&#34;&gt;https://www.nytimes.com/2015/01/30/world/asia/china-clamps-down-still-harder-on-internet-access.html&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:JigsawOutline&#34;&gt;&lt;/a&gt; Jigsaw. [n.d.]. &lt;em&gt;Outline.&lt;/em&gt; &lt;a class=&#34;url&#34;
      href=&#34;https://getoutline.org/&#34;&gt;https://getoutline.org/&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:JigsawOutlineV110&#34;&gt;&lt;/a&gt; Jigsaw. [n.d.]. &lt;em&gt;Outline v1.1.0.&lt;/em&gt; &lt;a class=&#34;url&#34;
      href=&#34;https://github.com/Jigsaw-Code/outline-ss-server/releases/tag/v1.1.0&#34;&gt;https://github.com/Jigsaw-Code/outline-ss-server/releases/tag/v1.1.0&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:klzgrad&#34;&gt;&lt;/a&gt; klzgrad. [n.d.]. &lt;em&gt;NaïveProxy.&lt;/em&gt; &lt;a class=&#34;url&#34;
      href=&#34;https://github.com/klzgrad/naiveproxy&#34;&gt;https://github.com/klzgrad/naiveproxy&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:Liu2019&#34;&gt;&lt;/a&gt; Xiaolei Liu, Zhongliu Zhuo, Xiaojiang Du, Xiaosong Zhang, Qingxin Zhu, and Mohsen Guizani.
    2019. Adversarial attacks against profile HMM website fingerprinting detection model. &lt;em&gt;Cognitive Systems
      Research
      54&lt;/em&gt; (2019), 83–89. &lt;a class=&#34;url&#34;
      href=&#34;https://doi.org/10.1016/j.cogsys.2018.12.005&#34;&gt;https://doi.org/10.1016/j.cogsys.2018.12.005&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:Lu2017&#34;&gt;&lt;/a&gt; Zhen Lu, Zhenhua Li, Jian Yang, Tianyin Xu, Ennan Zhai, Yao Liu, and Christo Wilson. 2017.
    Accessing Google Scholar under Extreme Internet Censorship: A Legal Avenue. In &lt;em&gt;Middleware.&lt;/em&gt; ACM. &lt;a
      class=&#34;url&#34; href=&#34;https://censorbib.nymity.ch/pdf/Lu2017a.pdf&#34;&gt;https://censorbib.nymity.ch/pdf/Lu2017a.pdf&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:madeye2016&#34;&gt;&lt;/a&gt; madeye. 2016. &lt;em&gt;Changes between shadowsocks-libev v2.5.4 and v2.5.5.&lt;/em&gt; &lt;a
      class=&#34;url&#34;
      href=&#34;https://github.com/shadowsocks/shadowsocks-libev/compare/v2.5.4...v2.5.5&#34;&gt;https://github.com/shadowsocks/shadowsocks-libev/compare/v2.5.4...v2.5.5&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:madeye2017&#34;&gt;&lt;/a&gt; madeye. 2017. &lt;em&gt;sssniff.&lt;/em&gt; &lt;a class=&#34;url&#34;
      href=&#34;https://github.com/madeye/sssniff&#34;&gt;https://github.com/madeye/sssniff&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:madeye2019&#34;&gt;&lt;/a&gt; madeye. 2019. &lt;em&gt;Simplify the server auto blocking mechanism.&lt;/em&gt; Retrieved
    September 2020
    from &lt;a class=&#34;url&#34;
      href=&#34;https://github.com/shadowsocks/shadowsocks-libev/commit/a99c39c7dd314939082348d96d06727570b514a8&#34;&gt;https://github.com/shadowsocks/shadowsocks-libev/commit/a99c39c7dd314939082348d96d06727570b514a8&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:nametoolong2020&#34;&gt;&lt;/a&gt; nametoolong. 2020. &lt;em&gt;Some extra ways of active probing.&lt;/em&gt; Retrieved
    September 2020
    from &lt;a class=&#34;url&#34;
      href=&#34;https://github.com/v2ray/v2ray-core/issues/2539&#34;&gt;https://github.com/v2ray/v2ray-core/issues/2539&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:NoboriShinjo2014&#34;&gt;&lt;/a&gt; Daiyuu Nobori and Yasushi Shinjo. 2014. VPN Gate: A Volunteer-Organized Public
    VPN Relay System with Blocking Resistance for Bypassing Government Censorship Firewalls. In &lt;em&gt;Networked Systems
      Design and Implementation. USENIX.&lt;/em&gt; &lt;a class=&#34;url&#34;
      href=&#34;https://www.usenix.org/system/files/conference/nsdi14/nsdi14-papernobori.pdf&#34;&gt;https://www.usenix.org/system/files/conference/nsdi14/nsdi14-papernobori.pdf&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:p4gefau1t2020&#34;&gt;&lt;/a&gt;p4gefau1t, studentmain, et al. 2020.
    &lt;em&gt;vmess协议设计和实现缺陷可导致服务器遭到主动探测特征识别(附PoC).&lt;/em&gt; Retrieved September 2020 from &lt;a class=&#34;url&#34;
      href=&#34;https://github.com/v2ray/v2ray-core/issues/2523&#34;&gt;https://github.com/v2ray/v2ray-core/issues/2523&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:Peng2020&#34;&gt;&lt;/a&gt;Zhiniang Peng. 2020. &lt;em&gt;Redirect attack on Shadowsocks stream ciphers.&lt;/em&gt;
    Retrieved
    June 2020 from &lt;a class=&#34;url&#34;
      href=&#34;https://github.com/edwardz246003/shadowsocks&#34;&gt;https://github.com/edwardz246003/shadowsocks&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:printempw2017&#34;&gt;&lt;/a&gt;printempw. 2017. &lt;em&gt;为何shadowsocks 要弃用一次性验证(OTA).&lt;/em&gt; Retrieved February 2020 from
    &lt;a class=&#34;url&#34;
      href=&#34;https://web.archive.org/web/20191002190325/https://printempw.github.io/why-do-shadowsocks-deprecate-ota/&#34;&gt;https://web.archive.org/web/20191002190325/https://printempw.github.io/why-do-shadowsocks-deprecate-ota/&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:ProgramThink2017&#34;&gt;&lt;/a&gt;ProgramThink. 2017. &lt;em&gt;2017年10月翻墙快报(兼谈用I2P突破封锁).&lt;/em&gt; Retrieved February 2019
    from
    &lt;a class=&#34;url&#34;
      href=&#34;https://program-think.blogspot.com/2017/10/gfw-news.html&#34;&gt;https://program-think.blogspot.com/2017/10/gfw-news.html&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:projectv2ray2017&#34;&gt;&lt;/a&gt;projectv2ray. 2017. &lt;em&gt;Replay attack monitored by V2Ray.&lt;/em&gt; Retrieved February
    2020
    from &lt;a class=&#34;url&#34;
      href=&#34;https://github.com/shadowsocks/shadowsocks-org/issues/44#issuecomment-282525358&#34;&gt;https://github.com/shadowsocks/shadowsocks-org/issues/44#issuecomment-282525358&lt;/a&gt;
    (originally from &lt;a class=&#34;url&#34;
      href=&#34;https://twitter.com/projectv2ray/status/833959357423448064&#34;&gt;https://twitter.com/projectv2ray/status/833959357423448064&lt;/a&gt;).&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:riobard2017&#34;&gt;&lt;/a&gt;riobard, madeye, Mygod, et al. 2017. &lt;em&gt;Defend against replay attack.&lt;/em&gt;
    Retrieved February 2020 from &lt;a class=&#34;url&#34;
      href=&#34;https://github.com/shadowsocks/shadowsocks-org/issues/44&#34;&gt;https://github.com/shadowsocks/shadowsocks-org/issues/44&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:ShadowsocksRustDevelopers&#34;&gt;&lt;/a&gt;Shadowsocks rust developers. [n.d.]. &lt;em&gt;Shadowsocks-rust.&lt;/em&gt; &lt;a
      class=&#34;url&#34;
      href=&#34;https://github.com/shadowsocks/shadowsocks-rust&#34;&gt;https://github.com/shadowsocks/shadowsocks-rust&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:Scott2017&#34;&gt;&lt;/a&gt;Will Scott. 2017. Reports of China disrupting shadowsocks. Retrieved February 2019 from
    &lt;a class=&#34;url&#34;
      href=&#34;https://groups.google.com/d/msg/traffic-obf/dqw6CQLR944/1Icd4691AQAJ&#34;&gt;https://groups.google.com/d/msg/traffic-obf/dqw6CQLR944/1Icd4691AQAJ&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:FrolovForwardProxy&#34;&gt;&lt;/a&gt;Sergey Frolov and others. [n.d.]. &lt;em&gt;forwardproxy.&lt;/em&gt; &lt;a class=&#34;url&#34;
      href=&#34;https://github.com/caddyserver/forwardproxy&#34;&gt;https://github.com/caddyserver/forwardproxy&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:Shadowsocks&#34;&gt;&lt;/a&gt;Shadowsocks developers. [n.d.]. &lt;em&gt;Shadowsocks.&lt;/em&gt; &lt;a class=&#34;url&#34;
      href=&#34;https://github.com/shadowsocks/shadowsocks/tree/master&#34;&gt;https://github.com/shadowsocks/shadowsocks/tree/master&lt;/a&gt;.&lt;/a&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:ShadowsocksLibev&#34;&gt;&lt;/a&gt;Shadowsocks developers. [n.d.]. &lt;em&gt;Shadowsocks-libev.&lt;/em&gt; &lt;a class=&#34;url&#34;
      href=&#34;https://github.com/shadowsocks/shadowsocks-libev&#34;&gt;https://github.com/shadowsocks/shadowsocks-libev&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:ShadowsocksWhitepaper&#34;&gt;&lt;/a&gt;Shadowsocks developers. 2019. &lt;em&gt;Shadowsocks whitepaper.&lt;/em&gt; &lt;a class=&#34;url&#34;
      href=&#34;https://github.com/shadowsocks/shadowsocks-org/blob/master/whitepaper/whitepaper.md&#34;&gt;https://github.com/shadowsocks/shadowsocks-org/blob/master/whitepaper/whitepaper.md&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:shadowsocksr-csharp&#34;&gt;&lt;/a&gt;shadowsocksr-csharp developers. [n.d.]. &lt;em&gt;shadowsocksr-csharp.&lt;/em&gt; &lt;a
      class=&#34;url&#34;
      href=&#34;https://github.com/shadowsocksrr/shadowsocksr-csharp&#34;&gt;https://github.com/shadowsocksrr/shadowsocksr-csharp&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:outline-timeout&#34;&gt;&lt;/a&gt;tatianab, alalamav, et al. 2019. &lt;em&gt;Probing resistance via timeout.&lt;/em&gt; Retrieved
    September 2020 from &lt;a class=&#34;url&#34;
      href=&#34;https://github.com/Jigsaw-Code/outline-ss-server/commit/c70d512e78525eba36bb1e6ad7a0868593166cf9&#34;&gt;https://github.com/Jigsaw-Code/outline-ss-server/commit/c70d512e78525eba36bb1e6ad7a0868593166cf9&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:trojan&#34;&gt;&lt;/a&gt;trojan developers. [n.d.]. &lt;em&gt;trojan.&lt;/em&gt; &lt;a class=&#34;url&#34;
      href=&#34;https://github.com/trojan-gfw/trojan&#34;&gt;https://github.com/trojan-gfw/trojan&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:V2Ray&#34;&gt;&lt;/a&gt;V2Ray developers. [n.d.]. &lt;em&gt;V2Ray.&lt;/em&gt; &lt;a class=&#34;url&#34;
      href=&#34;https://github.com/v2fly/v2ray-core&#34;&gt;https://github.com/v2fly/v2ray-core&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:LiangWang2015&#34;&gt;&lt;/a&gt;Liang Wang, Kevin P. Dyer, Aditya Akella, Thomas Ristenpart, and Thomas Shrimpton.
    2015.
    Seeing through Network-Protocol Obfuscation. In &lt;em&gt;Computer and Communications Security&lt;/em&gt;. ACM. &lt;a class=&#34;url&#34;
      href=&#34;http://pages.cs.wisc.edu/~liangw/pub/ccsfp653wangA.pdf&#34;&gt;http://pages.cs.wisc.edu/~liangw/pub/ccsfp653wangA.pdf&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:TimWilde2012&#34;&gt;&lt;/a&gt;Tim Wilde. 2012. &lt;em&gt;GFW actively probes obfs2 bridges.&lt;/em&gt; Retrieved February 2020
    from
    &lt;a class=&#34;url&#34;
      href=&#34;https://blog.torproject.org/blog/knock-knock-knockin-bridges-doors&#34;&gt;https://blog.torproject.org/blog/knock-knock-knockin-bridges-doors&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:BrandonWiley2017&#34;&gt;&lt;/a&gt;Brandon Wiley. 2017. &lt;em&gt;Re: Reports of China disrupting shadowsocks.&lt;/em&gt;
    Retrieved
    July
    2019 from &lt;a class=&#34;url&#34;
      href=&#34;https://groups.google.com/d/msg/traffic-obf/dqw6CQLR944/V5_61SVTBAAJ&#34;&gt;https://groups.google.com/d/msg/traffic-obf/dqw6CQLR944/V5_61SVTBAAJ&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:brdgrd&#34;&gt;&lt;/a&gt;Philipp Winter. 2010. &lt;em&gt;brdgrd.&lt;/em&gt; &lt;a class=&#34;url&#34;
      href=&#34;https://github.com/NullHypothesis/brdgrd&#34;&gt;https://github.com/NullHypothesis/brdgrd&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:Winter2013&#34;&gt;&lt;/a&gt;Philipp Winter. 2013. &lt;em&gt;GFW actively probes obfs2 bridges.&lt;/em&gt; Retrieved February
    2020
    from
    &lt;a class=&#34;url&#34; href=&#34;https://bugs.torproject.org/8591&#34;&gt;https://bugs.torproject.org/8591&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:Winter2012a&#34;&gt;&lt;/a&gt;Philipp Winter and Stefan Lindskog. How the Great Firewall of China is Blocking Tor.
    In
    &lt;em&gt;Free and Open Communications on the Internet&lt;/em&gt;, USENIX 2012. &lt;a class=&#34;url&#34;
      href=&#34;https://www.usenix.org/system/files/conference/foci12/foci12-final2.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci12/foci12-final2.pdf&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:Zeng2019&#34;&gt;&lt;/a&gt;Xuemei Zeng, Xingshu Chen, Guolin Shao, Tao He, Zhenhui Han, Yi Wen, and Qixu Wang. 2019.
    Flow Context and Host Behavior Based Shadowsocks&#39;s Traffic Identification. &lt;em&gt;IEEE Access 7&lt;/em&gt;(2019),
    41017–41032. &lt;a class=&#34;url&#34;
      href=&#34;https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;arnumber=8676111&#34;&gt;https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;arnumber=8676111&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:Zhao2018&#34;&gt;&lt;/a&gt;Yankang Zhao, Xiaobo Ma, Jianfeng Li, Shui Yu, and Wei Li. 2018. Revisiting Website
    Fingerprinting Attacks in Real-World Scenarios: A Case Study of Shadowsocks. In &lt;em&gt;International Conference on
      Network and System Security. Springer&lt;/em&gt;, 319–336.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:Zhuo2018&#34;&gt;&lt;/a&gt;Zhongliu Zhuo, Yang Zhang, Zhi li Zhang, Xiaosong Zhang, and Jingzhong Zhang. 2018.
    Website
    Fingerprinting Attack on Anonymity Networks Based on Profile Hidden Markov Model. &lt;em&gt;IEEE Transactions on
      Information Forensics and Security&lt;/em&gt; 13, 5 (May 2018), 1081–1095. &lt;a class=&#34;url&#34;
      href=&#34;https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;arnumber=8067534&#34;&gt;https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;arnumber=8067534&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&#34;bibitem&#34;&gt;
    &lt;a id=&#34;cite:shadowsocks-rust-v1.8.5&#34;&gt;&lt;/a&gt;zonyitoo. [n.d.]. Shadowsocks-rust v1.8.5. &lt;a class=&#34;url&#34;
      href=&#34;https://github.com/shadowsocks/shadowsocks-rust/releases/tag/v1.8.5&#34;&gt;https://github.com/shadowsocks/shadowsocks-rust/releases/tag/v1.8.5&lt;/a&gt;.&lt;/a&gt;
  &lt;/li&gt;
  &lt;/ol&gt;
  &lt;/div&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>Triplet Censors: Demystifying Great Firewall’s DNS Censorship Behavior</title>
        <link>https://gfw.report/publications/foci20_dns/data/en/</link>
        <pubDate>Tue, 11 Aug 2020 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/publications/foci20_dns/data/en/</guid>
        
        <description>&lt;p&gt;&lt;a href=&#34;../foci20_anonymous&#34;&gt;&lt;code&gt;The open dataset&lt;/code&gt;&lt;/a&gt; contains code and datasets for the paper: &lt;a href=&#34;https://www.usenix.org/conference/foci20/presentation/anonymous&#34;&gt;Triplet Censors: Demystifying Great Firewall’s DNS Censorship Behavior&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;updates&#34;&gt;Updates&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;If you have any question, comment or feedback, please feel free to leave them &lt;a href=&#34;https://pad.riseup.net/p/1riuyEoo3gU20p-NTzx6&#34;&gt;on the pad&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;We will have a summary of our paper on this page within days. Please check back!&lt;/li&gt;
&lt;li&gt;As of August 11, 2020, we have released all our code and datasets to the maximum extend that does not harm our anonymity. These code and datasets support all major findings in our paper. We will continue anonymizing and releasing the remaining code and datasets with a goal to make our work highly reproducible within days.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;explanations-on-datasets&#34;&gt;Explanations on datasets&lt;/h2&gt;
&lt;p&gt;The largest and the most important dataset is &lt;code&gt;./all_more_fields.csv&lt;/code&gt;.
This 14 GB file contains 120 millions forged responses injected by the GFW.
It is extracted from a set of pcap files across 9 months using:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bash -x extract_all_pcap_to_csv_more_fields.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For easier analysis on different injectors of the GFW, we categorize packets sent by different injectors into &lt;code&gt;injector1.csv&lt;/code&gt;, &lt;code&gt;injector2.csv&lt;/code&gt;, &lt;code&gt;injector3.csv&lt;/code&gt;. To generate these files, you need to run one of the two following commands yourself:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# This is the faster way&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bash -x split_by_awk_new.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;or&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# This is a more readable but much slower way&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;python3 split_with.py all_more_fields.csv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;readme-on-subdirectories&#34;&gt;README on subdirectories&lt;/h2&gt;
&lt;p&gt;We categorized the code and datasets supporting different findings in the paper into different subdirectories.
There is a &lt;code&gt;README.md&lt;/code&gt; file in each subdirectory, explaining what findings are supported by the code and dataset there.&lt;/p&gt;
&lt;p&gt;For example, &lt;code&gt;./delay_differences/README.md&lt;/code&gt; reads as:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;The code and dataset under this directory were used to support the following findings in our work:
    &amp;#34;We also compare the time between sending our DNS query and when we receive the injected reply to get a sense of wherethe injectors are located. Specifically, we compare the delays of the three injectors and find that more than 90% of the time the delays are within 0.2 ms of each other. This would support the theory that these three devices are installed in the samephysical location.&amp;#34;
&lt;/code&gt;&lt;/pre&gt;</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>Triplet Censors: Demystifying Great Firewall’s DNS Censorship Behavior</title>
        <link>https://gfw.report/publications/foci20_dns/en/</link>
        <pubDate>Tue, 11 Aug 2020 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/publications/foci20_dns/en/</guid>
        
        <description>
&lt;!-- Used to render latex syntax --&gt;
&lt;script type=&#34;text/javascript&#34; async
  src=&#34;https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML&#34;&gt;
&lt;/script&gt;

&lt;!-- Used to render Table of Content --&gt;
&lt;link href=&#34;./css/tocbot.css&#34; rel=&#39;stylesheet&#39; type=&#39;text/css&#39; /&gt;
&lt;script src=&#34;./js/tocbot.min.js&#34;&gt;&lt;/script&gt;
&lt;script&gt;
    document.addEventListener(&#39;DOMContentLoaded&#39;, function() {
    tocbot.init({
        tocSelector: &#39;.js-toc&#39;,
        contentSelector: &#39;.js-toc-content&#39;,
        headingSelector: &#39;h2, h3&#39;,
        collapseDepth: 3,
        activeLinkClass: &#39;&#39;
    });
    });
&lt;/script&gt;

&lt;h1 class=&#34;titleHead&#34;&gt;Triplet Censors: Demystifying Great Firewall’s DNS Censorship Behavior&lt;/h1&gt;

&lt;div class=&#34;authors&#34;&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Anonymous&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Arian Akhavan Niaki&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;University of Massachusetts Amherst&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Nguyen Phong Hoang&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;Stony Brook University&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Phillipa Gill&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;University of Massachusetts Amherst&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Amir Houmansadr&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;University of Massachusetts Amherst&lt;/p&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;!-- Table of Contents place holder --&gt;
&lt;div class=&#34;js-toc&#34;&gt;&lt;/div&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;sec:abstract&#34;&gt;&lt;a href=&#34;#sec:abstract&#34;&gt;Abstract&lt;/a&gt;&lt;/h2&gt;
&lt;!-- l. 4 --&gt;
&lt;p class=&#39;noindent&#39;&gt;The Great Firewall of China (GFW) has long used DNS
    packet injection to censor Internet access. In this work, we
    analyze the DNS injection behavior of the GFW over a
    period of nine months using the Alexa top 1M domains
    as a test list. We first focus on understanding the publicly
    routable IPs used by the GFW and observe groups of IPs
    used to filter specific sets of domains. We also see a sharp
    decline in public IPs injected by the GFW in November
    2019. We then fingerprint three different injectors that we
    observe in our measurements. Notably, one of these injectors
    mirrors the IP TTL value from probe packets in its injected
    packets which has implications for the use of TTL-limited
    probes for localizing censors. Finally, we confirm that our
    observations generally hold across IP prefixes registered in
    China.
&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;1&#34;&gt;&lt;a id=&#34;sec:1-intro&#34; href=&#34;#sec:1-intro&#34;&gt;1 Introduction&lt;/a&gt;&lt;/h2&gt;
&lt;!-- l. 5 --&gt;
&lt;p class=&#39;noindent&#39;&gt;Many countries are known to use injection of DNS responses to
    implement censorship &lt;span class=&#39;cite&#39;&gt; [&lt;a href=&#34;#cite:Aryan2013a&#34;&gt;3&lt;/a&gt;, &lt;a href=&#34;#cite:&#34;&gt;8&lt;/a&gt;, &lt;a
            href=&#39;#cite:Gill2015a&#39;&gt;15&lt;/a&gt;, &lt;a href=&#39;#cite:Niaki2020a&#39;&gt;21&lt;/a&gt;, &lt;a
            href=&#39;#cite:Verkamp2012a&#39;&gt;28&lt;/a&gt;]&lt;/span&gt; with
    China’s
    use of DNS
    injection in the Great Firewall (GFW) being a popular topic
    for study&lt;span class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;1&lt;/a&gt;, &lt;a href=&#39;#cite:gfwreport2020b&#39;&gt;2&lt;/a&gt;, &lt;a
            href=&#39;#cite:Duan2012a&#39;&gt;10&lt;/a&gt;, &lt;a href=&#39;#cite:Farnan2016a&#39;&gt;11&lt;/a&gt;, &lt;a href=&#39;#cite:gfwrev2009a&#39;&gt;14&lt;/a&gt;, &lt;a
            href=&#39;#cite:Hoang2019a&#39;&gt;16&lt;/a&gt;-&lt;a href=&#39;#cite:Lowe2007a&#39;&gt;18&lt;/a&gt;, &lt;a href=&#39;#cite:Pearce2017b&#39;&gt;22&lt;/a&gt;, &lt;a
            href=&#39;#cite:Sparks2012a&#39;&gt;26&lt;/a&gt;, &lt;a href=&#39;#cite:Yan2006a&#39;&gt;30&lt;/a&gt;]&lt;/span&gt;. While
    other
    countries tend to use NXDOMAIN or reserved IP address
    space &lt;span class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:Aryan2013a&#39;&gt;3&lt;/a&gt;, &lt;a href=&#39;#cite:rfc8020&#39;&gt;4&lt;/a&gt;, &lt;a
            href=&#39;#cite:Chaabane2014a&#39;&gt;8&lt;/a&gt;, &lt;a href=&#39;#cite:Nabi2013a&#39;&gt;20&lt;/a&gt;]&lt;/span&gt;, China’s use of a range of public
    IP
    addresses owned by a variety of organizations is notable.
    This use of public IP addresses can complicate detection of
    DNS-based censorship in China &lt;span class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:censored-plannet-Satellite-Iris&#39;&gt;5&lt;/a&gt;, &lt;a
            href=&#39;#cite:Filasto2012a&#39;&gt;12&lt;/a&gt;, &lt;a href=&#39;#cite:Niaki2020a&#39;&gt;21&lt;/a&gt;]&lt;/span&gt; and can make
    evading inadvertent DNS cache poisoning by the GFW
    challenging &lt;span class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:Duan2012a&#39;&gt;10&lt;/a&gt;, &lt;a href=&#39;#cite:Sparks2012a&#39;&gt;26&lt;/a&gt;]&lt;/span&gt;. &lt;/p&gt;
&lt;!-- l. 18 --&gt;
&lt;p class=&#39;indent&#39;&gt; While there have been numerous studies of China’s DNS
    censorship &lt;span class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;1&lt;/a&gt;, &lt;a href=&#39;#cite:gfwreport2020b&#39;&gt;2&lt;/a&gt;, &lt;a
            href=&#39;#cite:Duan2012a&#39;&gt;10&lt;/a&gt;, &lt;a href=&#39;#cite:Farnan2016a&#39;&gt;11&lt;/a&gt;, &lt;a href=&#39;#cite:gfwrev2009a&#39;&gt;14&lt;/a&gt;, &lt;a
            href=&#39;#cite:Hoang2019a&#39;&gt;16&lt;/a&gt;-&lt;a href=&#39;#cite:Lowe2007a&#39;&gt;18&lt;/a&gt;, &lt;a href=&#39;#cite:Pearce2017b&#39;&gt;22&lt;/a&gt;, &lt;a
            href=&#39;#cite:Sparks2012a&#39;&gt;26&lt;/a&gt;]&lt;/span&gt; (owing in part to the
    fact that the GFW will inject replies to clients outside of the
    country), in this study, we take a longitudinal approach focusing
    on China’s use of public IPs for filtering. We measure China’s
    DNS injector for a period of nine months which allows us to
    observe changes in the set of public IP addresses used by the
    GFW (&lt;a href=&#39;#sec:2-methodology&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;2&lt;!-- tex4ht:ref: sec:method  --&gt;&lt;/a&gt;). We
    further
    perform targeted measurements to
    fingerprint the behavior of the GFW’s DNS packet injector and
    consider the generalizability of our results across 36K prefixes
    announced by Chinese ASes (&lt;a
        href=&#39;#sec:5-multipath-results&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;5&lt;!-- tex4ht:ref: sec:multi_path  --&gt;&lt;/a&gt;).
&lt;/p&gt;&lt;!-- l. 29 --&gt;
&lt;p class=&#39;indent&#39;&gt; Our study reveals several previously-unknown properties of
    China’s filtering system:
&lt;/p&gt;&lt;!-- l. 32 --&gt;
&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;IP groups. &lt;/span&gt;First, we observe groups of IP addresses that are
    used in injected replies to specific sets of domains (&lt;a
        href=&#39;#sec:3-characterizing-dns-injection&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;3&lt;!-- tex4ht:ref: sec:forged_ips  --&gt;&lt;/a&gt;). These
    groups may point to groups of domains that are being blocked by
    a common infrastructure or blocking process. We discuss these
    groups in the context of blocked domains and IPs used for
    blocking over time (&lt;a
        href=&#39;#sec:3.2-injected-ips&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;3.2&lt;!-- tex4ht:ref: sec:ipgroups  --&gt;&lt;/a&gt;)
&lt;/p&gt;&lt;!-- l. 38 --&gt;
&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Three distinct injectors. &lt;/span&gt;We also observe that a single
    DNS query can result in multiple injected DNS replies
    from the GFW. Using IP ID, IP TTL, DNS TTL and DNS
    flags, we were able to fingerprint these multiple replies and
    identify three distinct packet injectors acting on DNS requests
    (&lt;a
        href=&#39;#sec:4.1-fingerprinting-the-injectors&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;4.1&lt;!-- tex4ht:ref: sec:fingerprints  --&gt;&lt;/a&gt;).
&lt;/p&gt;&lt;!-- l. 43 --&gt;
&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;TTL-echoing in injected packets. &lt;/span&gt;In the process of
    fingerprinting the censors, we observe one of the packet
    injectors will actually echo the TTL of the probe packet
    which has implications on the popular technique of using
    TTL-limited probe packets to localize network censors
    (&lt;a
        href=&#39;#sec:4.3-localizing-the-injectors&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;4.3&lt;!-- tex4ht:ref: sec:localize  --&gt;&lt;/a&gt;).
&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;2&#34;&gt;&lt;a id=&#34;sec:2-methodology&#34; href=&#34;#sec:2-methodology&#34;&gt;2 Methodology&lt;/a&gt;&lt;/h2&gt;
&lt;!-- l. 5 --&gt;
&lt;p class=&#39;noindent&#39;&gt;We now describe our methodology for monitoring DNS-based
    censorship in China on a longitudinal basis (&lt;a
        href=&#39;#sec:2.1-baseline-longitudinal-experiment&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;2.1&lt;!-- tex4ht:ref: sec:baseline  --&gt;&lt;/a&gt;) and how we
    extend this method to understand regional differences in filtering


    (&lt;a href=&#39;#sec:2.2-multipath-experiment&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;2.2&lt;!-- tex4ht:ref: sec:mpe  --&gt;&lt;/a&gt;).
    We also
    discuss steps taken to address ethical concerns
    while conducting our experiment (&lt;a
        href=&#39;#sec:2.3-ethics&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;2.3&lt;!-- tex4ht:ref: sec:ethics  --&gt;&lt;/a&gt;).
&lt;/p&gt;&lt;!-- l. 9 --&gt;


&lt;h3 class=&#34;subsectionHead&#34; id=&#34;2-1&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:2.1-baseline-longitudinal-experiment&#34;
        href=&#34;#sec:2.1-baseline-longitudinal-experiment&#34;&gt;2.1
        &lt;/span&gt;Baseline Longitudinal Experiment&lt;/a&gt;&lt;/h3&gt;
&lt;!-- l. 11 --&gt;
&lt;p class=&#39;noindent&#39;&gt;We use the commonly employed tactic of issuing DNS queries
    for potentially sensitive domains from a host outside of China
    towards IP addresses located in China (specifically, those not
    hosting DNS servers). This allows us to trigger the GFW as our
    packet crosses the GFW, and the targeting of IP addresses not
    hosting DNS servers means that any response to our query can be
    inferred to be injected by the GFW. We issue queries from a
    Virtual Private Server (VPS) running Ubuntu 18.04 LTS located
    in a US academic network. We then send DNS queries towards
    a VPS under our control located in China with the same
    configuration as our US host. We perform our queries using the
    standard DNS port (53). We performed an initial test over ports
    1-65535 and only observed censorship on DNS queries sent on
    port 53.
&lt;/p&gt;&lt;!-- l. 23 --&gt;
&lt;p class=&#39;indent&#39;&gt; With this source and destination host, we then issue DNS
    queries for a set of tested domains. In our case, a set of 1
    million domains is extracted from the Alexa top million Web
    sites list (accessed on Feb. 22, 2019). For any domains
    without the prefix “www.” we add this prefix as the GFW does
    not consistently inject DNS replies in the absence of this
    prefix &lt;span class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;1&lt;/a&gt;, &lt;a href=&#39;#cite:Chai2019a&#39;&gt;9&lt;/a&gt;]&lt;/span&gt;. We query
    these
    domains every two hours between
    September 2019 and May 2020. In total, we sent 2.8 billion DNS
    queries and observed 119.6 million forged responses from the
    GFW.
&lt;/p&gt;&lt;!-- l. 32 --&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;2-2&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:2.2-multipath-experiment&#34;
        href=&#34;#sec:2.2-multipath-experiment&#34;&gt;2.2
        &lt;/span&gt;Multi-path Experiment&lt;/a&gt;&lt;/h3&gt;
&lt;!-- l. 34 --&gt;
&lt;p class=&#39;noindent&#39;&gt;A limitation of our baseline methodology, is that we will only
    observe filtering on the path between our VPS in the US and our
    VPS in China. To complement this methodology, we perform
    an additional experiment where we direct DNS queries
    towards a broad range of Chinese IP prefixes. We identify
    Chinese IP prefixes by using CAIDA’s AS-to-organization
    dataset &lt;span class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:as2org&#39;&gt;6&lt;/a&gt;]&lt;/span&gt; to identify ASNs registered in China. We
    then
    use CAIDA’s prefix-to-AS mapping tool &lt;span class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:pfx2as&#39;&gt;7&lt;/a&gt;]&lt;/span&gt; to collect IP
    prefixes announced by these ASes, for a total of 36,629
    prefixes.
&lt;/p&gt;&lt;!-- l. 43 --&gt;
&lt;p class=&#39;indent&#39;&gt; Within each prefix, we select one IP address at random,
    ensuring that there is not a host at this IP address that will
    respond to DNS queries. To determine this, we send 10 queries
    for a non-sensitive domain &lt;span class=&#39;pcrr8tn-&#39;&gt;www.baidu.com &lt;/span&gt;to the candidate IP
    address. If there is no reply to any of our DNS queries, we infer
    that this IP is not hosting a DNS server and proceed with
    our tests. We exclude an IP prefix from testing if we fail to find a non-responding IP address after 50
    attempts. In
    total, we select 36,146 IP prefix, belonging to 417 Chinese
    ASes.
&lt;/p&gt;&lt;!-- l. 51 --&gt;
&lt;p class=&#39;indent&#39;&gt; For this test, we focus on a single domain &lt;span class=&#39;pcrr8tn-&#39;&gt;www.google.sm &lt;/span&gt;that
    we observe triggers censorship by the three packet injectors
    observed in our baseline experiment (&lt;a
        href=&#39;#sec:4-understanding-the-gfw-injectors&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;4&lt;!-- tex4ht:ref: sec:three_processes  --&gt;&lt;/a&gt;) since our goal is
    to
    understand the behavior of multiple network paths. We attempt
    100 queries for this domain towards each of the Chinese prefixes
    we identify.
&lt;/p&gt;&lt;!-- l. 2 --&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;2-3&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:2.3-ethics&#34; href=&#34;#sec:2.3-ethics&#34;&gt;2.3
        &lt;/span&gt;Ethics&lt;/a&gt;&lt;/h3&gt;
&lt;!-- l. 4 --&gt;
&lt;p class=&#39;noindent&#39;&gt;For our baseline experiment, the two hosts that we sent DNS
    queries to and from are machines under our control. For our
    multi-path experiment, we first verify that no DNS service was
    running on the selected IP address. We also note that our
    experiments are initiated from a host outside of China, thus to the
    GFW it appears that queries are coming from an external
    (academic) network, as opposed to any host within China.
    Finally, our multi-path experiment limits the amount of traffic
    sent to each IP address to 1 MB.
&lt;/p&gt;&lt;!-- l. 2 --&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;3&#34;&gt;&lt;a id=&#34;sec:3-characterizing-dns-injection&#34; href=&#34;#sec:3-characterizing-dns-injection&#34;&gt;3
        Characterizing DNS Injection&lt;/a&gt;&lt;/h2&gt;
&lt;!-- l. 5 --&gt;
&lt;p class=&#39;noindent&#39;&gt;In this section, we characterize domains filtered over time
    (&lt;a href=&#39;#sec:3.1-censored-domains&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;3.1&lt;!-- tex4ht:ref: sec:domains  --&gt;&lt;/a&gt;) as
    well
    as
    the IP addresses in the injected replies
    (&lt;a href=&#39;#sec:3.2-injected-ips&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;3.2&lt;!-- tex4ht:ref: sec:ipgroups  --&gt;&lt;/a&gt;).
&lt;/p&gt;&lt;!-- l. 14 --&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3-1&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:3.1-censored-domains&#34;
        href=&#34;#sec:3.1-censored-domains&#34;&gt;3.1
        &lt;/span&gt;Censored Domains&lt;/a&gt;&lt;/h3&gt;

&lt;figure class=&#39;float&#39; id=&#39;fig:1-censored-domain-name-changes-sept-to-may&#39;&gt;
    &lt;div id=&#34;figure&#34;&gt;
        &lt;div class=&#39;subfigure&#39; id=&#34;fig:1a-domain-churn-gfws-all&#34;&gt;
            &lt;p&gt; &lt;img alt=&#39;Number of censored domains observed.&#39; src=&#39;../figures/domain_churn_gfws_all-.png&#39; /&gt;

            &lt;figcaption style=&#34;text-align:center;&#34;&gt;&lt;b&gt;&lt;a href=&#34;#fig:1a-domain-churn-gfws-all&#34;&gt;(a) Number of censored
                        domains observed.&lt;/a&gt;&lt;/b&gt;&lt;/figcaption&gt;
            &lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&#39;subfigure&#39; id=&#34;fig:1b-domain-churn-b&#34;&gt;
            &lt;p&gt; &lt;img alt=&#39;Number of censored domains observed.&#39; src=&#39;../figures/domain_churn_b-.png&#39; /&gt;

            &lt;figcaption style=&#34;text-align:center;&#34;&gt;&lt;b&gt;&lt;a href=&#34;#fig:1b-domain-churn-b&#34;&gt;(b) Number of censored domains
                        added and dropped per
                        day.&lt;/a&gt;&lt;/b&gt;&lt;/figcaption&gt;
            &lt;/p&gt;
        &lt;/div&gt;

    &lt;/div&gt;
    &lt;figcaption style=&#34;text-align: center;&#34;&gt;&lt;span&gt;&lt;a
                href=&#34;#fig:1-censored-domain-name-changes-sept-to-may&#34;&gt;&lt;b&gt;Figure
                    1&lt;/a&gt;&lt;/span&gt;: &lt;/span&gt;&lt;span&gt;
            Censored domain name changes among
            Alexa top
            1 million from September 2019 to May 2020.
            &lt;/b&gt;&lt;/span&gt;&lt;/figcaption&gt;

&lt;/figure&gt;



&lt;div class=&#39;table&#39;&gt;

    &lt;!-- l. 40 --&gt;
    &lt;p class=&#39;indent&#39;&gt; &lt;/p&gt;
    &lt;figure class=&#39;float&#39; id=&#39;x1-7004r1&#39;&gt;&lt;span
            id=&#39;tbl:1-fortiguard-categories-alexa-domains-censored-percentage&#39;&gt;&lt;/span&gt;

        &lt;div class=&#39;tabular&#39;&gt;
            &lt;table class=&#39;tabular&#39; id=&#39;TBL-2&#39;&gt;
                &lt;colgroup id=&#39;TBL-2-1g&#39;&gt;
                    &lt;col id=&#39;TBL-2-1&#39; /&gt;
                    &lt;col id=&#39;TBL-2-2&#39; /&gt;
                    &lt;col id=&#39;TBL-2-3&#39; /&gt;
                    &lt;col id=&#39;TBL-2-4&#39; /&gt;
                &lt;/colgroup&gt;
                &lt;tr id=&#39;TBL-2-1-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-1-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;Category &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-1-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt;&lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;Alexa%&lt;/span&gt; &lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-1-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;Category &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-1-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt;&lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;Censored%&lt;/span&gt; &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-2-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-2-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Business &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-2-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;27.7 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-2-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Proxy Avoidance &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-2-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;46.0 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-3-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-3-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Information Technology &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-3-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;13.3 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-3-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Personal Websites &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-3-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;43.0 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-4-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-4-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Shopping &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-4-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;5.9 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-4-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Explicit Violence &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-4-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;20.5 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-5-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-5-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Education &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-5-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;5.7 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-5-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Extremist Groups &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-5-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;10.0 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-6-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-6-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Personal Websites &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-6-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;4.4 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-6-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Other Adult Material &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-6-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;9.4 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-7-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-7-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;News and Media &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-7-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;4.1 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-7-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Content Servers &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-7-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;9.3 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-8-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-8-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Entertainment &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-8-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;3.5 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-8-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Dynamic DNS &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-8-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;7.3 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-9-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-9-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Pornography &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-9-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;2.8 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-9-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Pornography &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-9-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;6.2 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-10-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-10-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Health and Wellness &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-10-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;2.7 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-10-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Distcrimination &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-10-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;5.3 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-11-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-11-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Government and Legal Orgs &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-11-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;2.6 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-11-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Instant Messaging &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-11-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;4.2 &lt;/span&gt;&lt;/td&gt;

                &lt;/tr&gt;
            &lt;/table&gt;
        &lt;/div&gt;

        &lt;figcaption class=&#39;caption&#39;&gt;&lt;span class=&#39;id&#39;&gt;&lt;a
                    href=&#34;#tbl:1-fortiguard-categories-alexa-domains-censored-percentage&#34;&gt;Table 1:&lt;/a&gt;&lt;/span&gt;&lt;span
                class=&#39;content&#39;&gt; FortiGuard Categories.
                The 10
                most common
                categories for the domains on Alexa 1M test list, and the
                percentage of censored domains in each category.
            &lt;/span&gt;&lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-7004r1  --&gt;

    &lt;/figure&gt;
&lt;/div&gt;
&lt;!-- l. 65 --&gt;
&lt;p class=&#39;indent&#39;&gt; We see that there exists an increasing trend in the number
    of domains being censored by the GFW. The number of
    censored domains increases from 23,995 to 24,636 (2.8%
    increase) over our nine-month measurement study. &lt;a
        href=&#39;#fig:1a-domain-churn-gfws-all&#39;&gt;Figure 1a&lt;!-- tex4ht:ref: fig:domain-churn:a  --&gt;&lt;/a&gt;
    presents the number of unique domains censored over time.
    Interestingly, previous work &lt;span class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;1&lt;/a&gt;]&lt;/span&gt; has also shown a 10%
    increase in the number of censored domains over time in their
    2014 study (also using the Alexa top million as their test
    domains).
&lt;/p&gt;&lt;!-- l. 72 --&gt;
&lt;p class=&#39;indent&#39;&gt; &lt;a href=&#39;#fig:1b-domain-churn-b&#39;&gt;Figure 1b&lt;!-- tex4ht:ref: fig:domain-churn-b  --&gt;&lt;/a&gt; depicts the
    daily
    number
    of domains from the Alexa
    top 1 million that get added and removed from the set of domains
    that we observe being blocked. We manually analyzed the dates
    in which more than 20 domains were removed from blocked set,
    on November 18 a group of 50 domains that all have the keyword
    &lt;span class=&#39;pcrr8tn-&#39;&gt;youtube.com &lt;/span&gt;were removed and on November 22 a group of 22
    domains with the keyword &lt;span class=&#39;pcrr8tn-&#39;&gt;line.me &lt;/span&gt;were removed from the
    blocked set. This suggests that the GFW still operates on
    keywords to censor domains as opposed to curating a fixed set of
    domains.
&lt;/p&gt;&lt;!-- l. 76 --&gt;
&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Category of censored domains. &lt;/span&gt;We leveraged the “FortiGuard”
    URL classification service, operated by FortiNet &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:fortinet&#39;&gt;13&lt;/a&gt;]&lt;/span&gt; to
    categorize the Alexa top domains. The top categories within the
    Alexa list are listed in the left column of &lt;a
        href=&#39;#tbl:1-fortiguard-categories-alexa-domains-censored-percentage&#39;&gt;Table 1&lt;!-- tex4ht:ref: tab:categories  --&gt;&lt;/a&gt;.
    We further
    analyze the percentage of censored domains in each category of
    the Alexa top million list. The top 10 categories with the highest
    percentage of domains censored are shown in the right column of &lt;a
        href=&#39;#tbl:1-fortiguard-categories-alexa-domains-censored-percentage&#39;&gt;Table 1&lt;!-- tex4ht:ref: tab:categories  --&gt;&lt;/a&gt;.
    We can see that 46% of the domains in the “Proxy
    Avoidance” category are censored by the GFW. The high number
    (42.9% of domains censored) for the “Personal Websites”
    category is because 42.7% of the censored domains within the
    “Personal Websites” category are domains containing the
    keywords &lt;span class=&#39;pcrr8tn-&#39;&gt;.blogspot.com&lt;/span&gt;, or &lt;span class=&#39;pcrr8tn-&#39;&gt;.tumblr.com &lt;/span&gt;which appear
    to
    be
    filtered by the GFW. We further analyzed and found that this is in
    fact a keyword based block list, i.e any domain that ends in
    &lt;span class=&#39;pcrr8tn-&#39;&gt;.blogspot.com &lt;/span&gt;or &lt;span class=&#39;pcrr8tn-&#39;&gt;.tumblr.com &lt;/span&gt;will be censored by the
    GFW.
&lt;/p&gt;
&lt;figure class=&#39;figure&#39;
    id=&#34;fig:2-top-asns-injected-ip-addresses&#34;&gt;

    &lt;!-- l. 88 --&gt;

    &lt;img alt=&#39;Top ASNs and the number of injected IP addresses used by the GFW belonging to each of them.&#39;
        src=&#39;../figures/top_asn_ip_drop.png&#39; /&gt;

    &lt;figcaption style=&#34;text-align: center;&#34;&gt;&lt;span&gt;&lt;span&gt;&lt;a
                    href=&#34;#fig:2-top-asns-injected-ip-addresses&#34;&gt;&lt;b&gt;Figure
                        2&lt;/a&gt;&lt;/span&gt;:
        &lt;/span&gt;&lt;span&gt;Top ASNs and the number of
            injected IP addresses
            used by the GFW belonging to each of them.&lt;/b&gt;
        &lt;/span&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3-2&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:3.2-injected-ips&#34;
        href=&#34;#sec:3.2-injected-ips&#34;&gt;3.2
        &lt;/span&gt;Injected IPs&lt;/a&gt;&lt;/h3&gt;

&lt;!-- l. 96 --&gt;
&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Longitudinal trends. &lt;/span&gt;We observe a set of 1,510 distinct IP
    addresses returned in type A DNS records injected by the GFW.
    While the majority of responses we observe are type A DNS
    records, we observe injected CNAME records for a single
    domain (&lt;span class=&#39;pcrr8tn-&#39;&gt;www.sunporno.com&lt;/span&gt;). We focus on the type A records in
    this paper and plan to dig into the use of CNAME records by the
    GFW in future work.
&lt;/p&gt;&lt;!-- l. 102 --&gt;
&lt;p class=&#39;indent&#39;&gt;&lt;a
        href=&#39;#fig:2-top-asns-injected-ip-addresses&#39;&gt;Figure
        2&lt;!-- tex4ht:ref: fig:top_asns  --&gt;&lt;/a&gt;
    shows the top ASes associated with the IPs injected
    by the GFW. We observe a total of 41 ASes associated with the
    injected IP addresses. Most of these ASes correspond to
    organizations in the US, particularly Facebook, WZCOM,
    Dropbox and Twitter. We note a striking decrease in the number
    of distinct IPs injected by the GFW on November 23, 2019 from
    1,510 IPs (associated with 41 ASes) to only 216 IPs (associated
    with 21 ASes). We investigate this drop in injected IPs further in
    &lt;a href=&#39;#sec:4-understanding-the-gfw-injectors&#39;&gt;Section 4&lt;!-- tex4ht:ref: sec:three_processes  --&gt;&lt;/a&gt;.
&lt;/p&gt;&lt;!-- l. 112 --&gt;
&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Groups of injected IPs. &lt;/span&gt;One property of the injected IPs that we
    note, is that certain subsets of blocked domains resolve to a
    fixed set of public IPs. That is, a group of public IPs is
    used to filter a given group of censored domains. &lt;a
        href=&#39;#tbl:2-sensitive-domains-ip-groups-injectors-after-decrease&#39;&gt;Table 2&lt;!-- tex4ht:ref: tab:ip_grouping  --&gt;&lt;/a&gt;
    depicts the six distinct groups of domains we identified. We
    further categorized the domains in each group. The top
    category of domains in group 1, 2, and 3 belong to the “Proxy
    Avoidance” category, while  97% of the domains from
    group 4 and 5, include the word &lt;span class=&#39;pcrr8tn-&#39;&gt;google&lt;/span&gt;, belonging to the
    “Search Engines” category. Group 6 consists of the remaining
    websites that are censored on the Alexa 1M that are mostly
    &lt;span class=&#39;pcrr8tn-&#39;&gt;blogspot &lt;/span&gt;and &lt;span class=&#39;pcrr8tn-&#39;&gt;tumblr &lt;/span&gt;related websites. We analyzed
    the
    IPs that were dropped from the IP pool on November 23
    and found that 99% of the domains that received those IPs
    currently receive 197 injected IPs (Group 6), the majority
    (99%) of these domains have the keyword &lt;span class=&#39;pcrr8tn-&#39;&gt;tumblr.com &lt;/span&gt;in
    them.
&lt;/p&gt;
&lt;div class=&#39;table&#39;&gt;

    &lt;!-- l. 126 --&gt;
    &lt;p class=&#39;indent&#39;&gt; &lt;/p&gt;
    &lt;figure class=&#39;float&#39; id=&#39;x1-8001r2&#39;&gt;&lt;span
            id=&#39;tbl:2-sensitive-domains-ip-groups-injectors-after-decrease&#39;&gt;&lt;/span&gt;

        &lt;div class=&#39;tabular&#39;&gt;
            &lt;table class=&#39;tabular&#39; id=&#39;TBL-3&#39;&gt;
                &lt;colgroup id=&#39;TBL-3-1g&#39;&gt;
                    &lt;col id=&#39;TBL-3-1&#39; /&gt;
                    &lt;col id=&#39;TBL-3-2&#39; /&gt;
                    &lt;col id=&#39;TBL-3-3&#39; /&gt;
                    &lt;col id=&#39;TBL-3-4&#39; /&gt;
                &lt;/colgroup&gt;
                &lt;tr id=&#39;TBL-3-1-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-1-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;Group &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-1-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;Domains &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-1-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;IPs &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-1-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;Top categories% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-2-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-2-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;1
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-2-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;8
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-2-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;3
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-2-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Proxy Avoidance 50.0% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-3-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-3-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Business 25.0% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-4-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-4-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Personal Websites 12.5%&lt;/span&gt;&lt;/td&gt;

                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-5-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-5-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;2
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-5-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;53
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-5-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;4
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-5-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Proxy Avoidance 36.0% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-6-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-6-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;News and Media 9.4% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-7-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-7-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Instant Messaging 7.5%&lt;/span&gt;&lt;/td&gt;

                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-8-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-8-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;3
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-8-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;48
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-8-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;10
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-8-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Proxy Avoidance 79.2% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-9-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-9-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Information Technology 10.4% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-10-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-10-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Info and Computer Security 2.1% &lt;/span&gt;&lt;/td&gt;

                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-11-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-11-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;2&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;4
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-11-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;2&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;33 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-11-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;2&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;4
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-11-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Search Engines 96.9% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-12-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-12-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Dynamic DNS 3.1% &lt;/span&gt;&lt;/td&gt;

                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-13-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-13-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;5
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-13-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;54 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-13-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;201 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-13-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Search Engines 96.3% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-14-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-14-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Business 1.8% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-15-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-15-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Unknown 1.8% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-16-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-16-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;6
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-16-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;~24K &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-16-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;197 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-16-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Personal Websites 76.7% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-17-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-17-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Pornography 6.3% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-18-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-18-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;Information Technology 2.8% &lt;/span&gt;&lt;/td&gt;

                &lt;/tr&gt;
            &lt;/table&gt;
        &lt;/div&gt;

        &lt;figcaption class=&#39;caption&#39;&gt;&lt;span class=&#39;id&#39;&gt;&lt;a
                    href=&#34;#tbl:2-sensitive-domains-ip-groups-injectors-after-decrease&#34;&gt;Table 2:&lt;/a&gt;
            &lt;/span&gt;&lt;span class=&#39;content&#39;&gt;Overview of the
                relationship
                between the sensitive
                domain, forged IP groups and injectors after the decrease in
                the number of injected IP addresses.
            &lt;/span&gt;&lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-8001r2  --&gt;

    &lt;/figure&gt;
&lt;/div&gt;
&lt;!-- l. 184 --&gt;
&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Reachability of the injected IP addresses. &lt;/span&gt;Given that China is
    using publicly routable IP addresses, a natural question is
    whether these IPs are hosting content or are otherwise reachable
    on the broader Internet. We test the reachability of the injected
    IPs from our VPS in China and the United States by initiating
    TCP handshakes on port 80 and port 443. We perform this
    experiment daily for 7 days and present the averaged result in &lt;a
        href=&#39;#fig:3-reachability-of-ports-and-injected-ips&#39;&gt;
        Figure 3&lt;!-- tex4ht:ref: fig:reachability  --&gt;&lt;/a&gt;.
    We note that each days results looked similar. In the
    majority of cases (60.9%), the TCP handshake attempt results in
    a TIMEOUT both for source hosts in the US and China,
    indicating there is likely no content being served from these
    IPs at the time of our measurements. It is possible these
    IPs were observed serving content at some point in the
    past which resulted in their addition to the set of injected
    IPs.
&lt;/p&gt;
&lt;figure class=&#39;figure&#39;
    id=&#34;fig:3-reachability-of-ports-and-injected-ips&#34;&gt;

    &lt;img alt=&#39;Reachability of the ports 80 and 443 of the injected IPs from China and from the US.&#39;
        src=&#39;../figures/reachability-.png&#39; /&gt;

    &lt;figcaption&gt;&lt;a
            href=&#34;#fig:3-reachability-of-ports-and-injected-ips&#34;&gt;&lt;b&gt;Figure
                3&lt;/a&gt;: Reachability of the ports 80
        and
        443 of the injected
        IPs from China and from the US. The numbers are averaged
        over seven days. &lt;/b&gt;&lt;/figcaption&gt;

&lt;/figure&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;4&#34;&gt;&lt;a id=&#34;sec:4-understanding-the-gfw-injectors&#34;
        href=&#34;#sec:4-understanding-the-gfw-injectors&#34;&gt;4 Understanding the GFW Injectors&lt;/a&gt;&lt;/h2&gt;
&lt;!-- l. 5 --&gt;
&lt;p class=&#39;noindent&#39;&gt;We now characterize cases where multiple injected DNS replies
    are observed. We are able to fingerprint these replies and identify
    three distinct injection processes (&lt;a
        href=&#39;#sec:4.1-fingerprinting-the-injectors&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;4.1&lt;!-- tex4ht:ref: sec:fingerprints  --&gt;&lt;/a&gt;). We characterize
    longitudinal trends of the injectors (&lt;a
        href=&#39;#sec:4.2-longitudinal-trends&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;4.2&lt;!-- tex4ht:ref: sec:inject_longitudinal  --&gt;&lt;/a&gt;). Finally, We also
    localize these injectors and observe peculiar mirroring of the
    probe-TTL value by one injector (&lt;a
        href=&#39;#sec:4.3-localizing-the-injectors&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;4.3&lt;!-- tex4ht:ref: sec:localize  --&gt;&lt;/a&gt;).
&lt;/p&gt;

&lt;figure
    id=&#34;fig:4-ipid-ttl-values-dns-injector-behaviors&#34;
    class=&#34;float&#34;&gt;
    &lt;div class=&#34;figure&#34;&gt;
        &lt;div class=&#34;subfigure&#34; id=&#34;fig:4a-ipid-ipttl-of-injector1-400-packets&#34;&gt;
            &lt;p&gt;
                &lt;img src=&#34;../figures/ipid_ipttl_of_injector1_400_packets-.png&#34; alt=&#34;Injector 1&#34;&gt;
            &lt;figcaption style=&#34;text-align:center;&#34;&gt;&lt;b&gt;&lt;a href=&#34;#fig:4a-ipid-ipttl-of-injector1-400-packets&#34;&gt;(a) Injector
                        1&lt;/a&gt;&lt;/b&gt;&lt;/figcaption&gt;
            &lt;/p&gt;
            &lt;div class=&#34;subfigure&#34; id=&#34;fig:4b-ipid-ipttl-of-injector2-400-packets&#34;&gt;
                &lt;p&gt;&lt;img src=&#34;../figures/ipid_ipttl_of_injector2_400_packets-.png&#34; alt=&#34;Injector 2&#34;&gt;
                &lt;figcaption style=&#34;text-align:center;&#34;&gt;&lt;b&gt;&lt;a href=&#34;#fig:4b-ipid-ipttl-of-injector2-400-packets&#34;&gt;(b)
                            Injector 2&lt;/a&gt;&lt;/b&gt;&lt;/figcaption&gt;
                &lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&#34;subfigure&#34; id=&#34;fig:4c-ipid-ipttl-of-injector3-400-packets&#34;&gt;
                &lt;p&gt;&lt;img src=&#34;../figures/ipid_ipttl_of_injector3_400_packets-.png&#34; alt=&#34;Injector 3&#34;&gt;
                &lt;figcaption style=&#34;text-align:center;&#34;&gt;&lt;b&gt;&lt;a href=&#34;#fig:4c-ipid-ipttl-of-injector3-400-packets&#34;&gt;(c)
                            Injector 3&lt;/a&gt;&lt;/b&gt;&lt;/figcaption&gt;
                &lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;figcaption&gt;&lt;span&gt;&lt;a
                    href=&#34;#fig:4-ipid-ttl-values-dns-injector-behaviors&#34;&gt;&lt;b&gt;Figure
                        4&lt;/a&gt;&lt;/span&gt;: &lt;/span&gt;&lt;span&gt;
                IPID and TTL values observed
                for
                the three DNS Injector behaviors observed in our measurements. Injector 1 is
                similar to what has previously been observed in &lt;span class=&#39;cite&#39;&gt; [&lt;a
                        href=&#39;#cite:Anonymous2014a&#39;&gt;1&lt;/a&gt;]&lt;/span&gt;.
                We
                observe that the third injector reflects the IP TTL value, leading to a
                fixed value when the initial IP TTL values of our queries are not varied.
                &lt;/b&gt;&lt;/span&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4-1&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:4.1-fingerprinting-the-injectors&#34;
        href=&#34;#sec:4.1-fingerprinting-the-injectors&#34;&gt;4.1
        &lt;/span&gt;Fingerprinting the Injectors&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&#39;table&#39;&gt;
    &lt;!-- l. 45 --&gt;
    &lt;p class=&#39;indent&#39;&gt; &lt;/p&gt;
    &lt;figure class=&#39;float&#39; id=&#39;x1-10001r3&#39;&gt;&lt;span
            id=&#39;tbl:3-summary-dns-injectors-dns-aa-ip-df-flags&#39;&gt;&lt;/span&gt;

        &lt;div class=&#39;tabular&#39;&gt;
            &lt;table class=&#39;tabular&#39; id=&#39;TBL-4&#39;&gt;
                &lt;colgroup id=&#39;TBL-4-1g&#39;&gt;
                    &lt;col id=&#39;TBL-4-1&#39; /&gt;
                    &lt;col id=&#39;TBL-4-2&#39; /&gt;
                    &lt;col id=&#39;TBL-4-3&#39; /&gt;
                    &lt;col id=&#39;TBL-4-4&#39; /&gt;
                    &lt;col id=&#39;TBL-4-5&#39; /&gt;
                &lt;/colgroup&gt;
                &lt;tr id=&#39;TBL-4-1-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-1-1&#39; style=&#39;white-space:nowrap; text-align:center;&#39;&gt; &lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;Injector &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-1-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;Description &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-1-3&#39; style=&#39;white-space:nowrap; text-align:center;&#39;&gt; &lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;IPs &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-1-4&#39; style=&#39;white-space:nowrap; text-align:center;&#39;&gt; &lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;Domains &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-1-5&#39; style=&#39;white-space:nowrap; text-align:center;&#39;&gt; &lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;IP Group&lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#39;TBL-4-3-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-3-1&#39; style=&#39;white-space:nowrap; text-align:center;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;1 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-3-2&#39; style=&#39;white-space:nowrap; text-align:left; border-bottom:none;&#39;&gt;
                        &lt;span class=&#39;ptmr8t-x-x-80&#39;&gt;DNS: TTL=60; AA=1 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-3-3&#39; style=&#39;white-space:nowrap; text-align:center;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;4 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-3-4&#39; style=&#39;white-space:nowrap; text-align:center;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;88 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-3-5&#39; style=&#39;white-space:nowrap; text-align:center;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;4, 5, 6 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-4-4-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-4-2&#39;
                        style=&#39;white-space:nowrap; text-align:left; border-top:none; border-bottom:none;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;IP: DF=0 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-4-5-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-5-2&#39; style=&#39;white-space:nowrap; text-align:left; border-top:none;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;incrementing IP TTL &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;


                &lt;tr id=&#39;TBL-4-6-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-6-1&#39; style=&#39;white-space:nowrap; text-align:center;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;2 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-6-2&#39; style=&#39;white-space:nowrap; text-align:left; border-bottom:none;&#39;&gt;
                        &lt;span class=&#39;ptmr8t-x-x-80&#39;&gt;DNS: AA=0 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-6-3&#39; style=&#39;white-space:nowrap; text-align:center;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;1,506 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-6-4&#39; style=&#39;white-space:nowrap; text-align:center;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;24,729 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-6-5&#39; style=&#39;white-space:nowrap; text-align:center; border-bottom:none;&#39;&gt;
                        &lt;span class=&#39;ptmr8t-x-x-80&#39;&gt;1, 2, 3 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-4-7-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-7-2&#39;
                        style=&#39;white-space:nowrap; text-align:left; border-top:none; border-bottom:none;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;IP: DF=1 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-7-5&#39; style=&#39;white-space:nowrap; text-align:center; border-top:none&#39;
                        rowspan=&#34;2&#34;&gt; &lt;span class=&#39;ptmr8t-x-x-80&#39;&gt;5, 6 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-4-8-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-8-2&#39; style=&#39;white-space:nowrap; text-align:left; border-top: none;&#39;&gt;
                        &lt;span class=&#39;ptmr8t-x-x-80&#39;&gt;randomized IP TTL &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-4-9-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-9-1&#39; style=&#39;white-space:nowrap; text-align:center;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;3 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-9-2&#39; style=&#39;white-space:nowrap; text-align:left; border-bottom:none;&#39;&gt;
                        &lt;span class=&#39;ptmr8t-x-x-80&#39;&gt;DNS: AA=0 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-9-3&#39; style=&#39;white-space:nowrap; text-align:center;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;958 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-9-4&#39; style=&#39;white-space:nowrap; text-align:center;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;22,948 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-9-5&#39; style=&#39;white-space:nowrap; text-align:center;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;1, 2, 3, 5 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-4-10-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-10-2&#39;
                        style=&#39;white-space:nowrap; text-align:left; border-top: none; border-bottom:none;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;IP: DF=0; ID=0 &lt;/span&gt;&lt;/td&gt;

                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-4-11-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-11-2&#39; style=&#39;white-space:nowrap; text-align:left; border-top:none;&#39;&gt;
                        &lt;span class=&#39;ptmr8t-x-x-80&#39;&gt;fixed IP TTL &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
            &lt;/table&gt;
        &lt;/div&gt;

        &lt;figcaption class=&#39;caption&#39;&gt;&lt;span class=&#39;id&#39;&gt;&lt;a
                    href=&#34;#tbl:3-summary-dns-injectors-dns-aa-ip-df-flags&#34;&gt;Table 3:&lt;/a&gt;
            &lt;/span&gt;&lt;span class=&#39;content&#39;&gt;Summary of the three DNS
                injectors. “DNS AA”
                refers to the DNS Authoritative Answer flag. “IP DF” refers
                to the IP “do not fragment” flag.
            &lt;/span&gt;&lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-10001r3  --&gt;

    &lt;/figure&gt;
&lt;/div&gt;
&lt;figure class=&#39;figure&#39;
    id=&#34;fig:5-domains-receiving-injected-responses-combinations&#34;&gt;


    &lt;img alt=&#34;Veen diagram showing the
            number
            of domains
            receiving different combinations of injected responses by the
            three observed DNS injectors.&#34; src=&#39;../figures/qname_of_3_gfw_implementations-.png&#39; /&gt;
    &lt;figcaption&gt;&lt;a
            href=&#34;#fig:5-domains-receiving-injected-responses-combinations&#34;&gt;&lt;b&gt;Figure
                5&lt;/a&gt;: Venn diagram showing the
        number
        of domains
        receiving different combinations of injected responses by the
        three observed DNS injectors.&lt;/b&gt;&lt;/figcaption&gt;


&lt;/figure&gt;
&lt;figure class=&#39;figure&#39; id=&#34;fig:6-cdf-censored-domains-popularity-ranking-injector&#34;&gt;


    &lt;img alt=&#39;CDF of the popularity ranking of censored domains by each injector.&#39;
        src=&#39;../figures/ranking_injectors-.png&#39; /&gt;

    &lt;figcaption style=&#34;text-align: center;&#34;&gt;&lt;span&gt;&lt;span&gt;&lt;a
                    href=&#34;#fig:6-cdf-censored-domains-popularity-ranking-injector&#34;&gt;&lt;b&gt;Figure
                        6&lt;/a&gt;&lt;/span&gt;:
        &lt;/span&gt;&lt;span&gt;CDF of the popularity
            ranking of
            censored
            domains by each injector.&lt;/b&gt;
        &lt;/span&gt;&lt;/figcaption&gt;


&lt;/figure&gt;
&lt;!-- l. 89 --&gt;
&lt;p class=&#39;indent&#39;&gt; In our measurements, we observed cases where a single DNS
    query may result in multiple injected DNS replies. Upon
    closer inspection, we were able to identify three distinct
    fingerprints within these multiple injected replies based on IP
    Do-not-Fragment (DF), IP TTL , DNS Authoritative Answer
    (AA), and DNS TTL fields. &lt;a
        href=&#39;#tbl:3-summary-dns-injectors-dns-aa-ip-df-flags&#39;&gt;Table
        3&lt;!-- tex4ht:ref: tab:injectorsummary  --&gt;&lt;/a&gt;
    summarizes the fingerprints
    of the three injectors and &lt;a
        href=&#39;#fig:4-ipid-ttl-values-dns-injector-behaviors&#39;&gt;Figure 4&lt;!-- tex4ht:ref: fig:ipidttl  --&gt;&lt;/a&gt;
    plots the IPID and TTL
    values for these three injectors when queries are sent in rapid
    succession&lt;span class=&#39;footnote-mark&#39;&gt;&lt;a href=&#39;#fn:queries-are-sent-in-rapid-succession&#39;&gt;&lt;sup
                class=&#39;textsuperscript&#39;&gt;1&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id=&#39;x1-10004f1&#39;&gt;&lt;/a&gt; .
    We also find that the three injectors also behave slightly
    differently in how they format their DNS responses. Specifically,
    Injector 1 uses the domain from the query as-is in the DNS
    response, whereas Injectors 2 and 3 use a “compression
    pointer” &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:rfc1035&#39;&gt;19&lt;/a&gt;]&lt;/span&gt; to reduce repetition of the query domain in
    the
    response, perhaps a sign of these injectors using a different code
    base in their operation.
&lt;/p&gt;&lt;!-- l. 94 --&gt;

&lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
    &lt;ol&gt;
        &lt;li class=&#39;footnote-text&#39;&gt;
            &lt;a id=&#39;fn:queries-are-sent-in-rapid-succession&#39;&gt;&lt;/a&gt;
            &lt;span class=&#39;footnote-mark&#39;&gt;
                &lt;sup class=&#39;textsuperscript&#39;&gt;1&lt;/sup&gt;
            &lt;/span&gt;&lt;span class=&#39;footnotes-text&#39;&gt;In this test, we injected packets as fast as we could using a
                multi-threaded
                Python program while using tcpdump to capture the response packets.&lt;/span&gt;
        &lt;/li&gt;
    &lt;/ol&gt;
&lt;/div&gt;


&lt;p class=&#39;indent&#39;&gt; Similar to prior work &lt;span class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;1&lt;/a&gt;]&lt;/span&gt;, we observe
    Injector 1 with an
    incrementing IP TTL value between subsequent packets.
    However, we see this injector is considerably less active in terms
    of the number of domains it filters. &lt;a
        href=&#39;#fig:5-domains-receiving-injected-responses-combinations&#39;&gt;Figure 5&lt;!-- tex4ht:ref: fig:qname_of_3_gfw_implementations  --&gt;&lt;/a&gt;
    shows the number
    of domains that observed an injected reply from each injector.
    We can see that Injector 1, which most closely resembles
    the injector seen in 2014 &lt;span class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;1&lt;/a&gt;]&lt;/span&gt;, only filtering a total
    of
    88
    domains.
&lt;/p&gt;&lt;!-- l. 96 --&gt;
&lt;p class=&#39;indent&#39;&gt; Interestingly, we do not observe any domains that &lt;span class=&#39;ptmri8t-&#39;&gt;only &lt;/span&gt;trigger
    Injector 3, with it acting on a subset of Injector 2’s domains.
    When we consider the relationship between the Injectors and the
    IP/domain groups (Table &lt;a
        href=&#39;#tbl:3-summary-dns-injectors-dns-aa-ip-df-flags&#39;&gt;Table
        3&lt;!-- tex4ht:ref: tab:injectorsummary  --&gt;&lt;/a&gt;),
    we see that Injector 1 is the only
    injector filtering IPs in the fourth IP/Domain group with 33
    domains that are mostly in the &#34;Search Engines&#34; category (cf.
    &lt;a
        href=&#39;#tbl:2-sensitive-domains-ip-groups-injectors-after-decrease&#39;&gt;Table 2&lt;!-- tex4ht:ref: tab:ip_grouping  --&gt;&lt;/a&gt;).
&lt;/p&gt;&lt;!-- l. 101 --&gt;
&lt;p class=&#39;indent&#39;&gt; While &lt;a
        href=&#39;#fig:5-domains-receiving-injected-responses-combinations&#39;&gt;Figure 5&lt;!-- tex4ht:ref: fig:qname_of_3_gfw_implementations  --&gt;&lt;/a&gt;
    gives a sense of the number of domains
    filtered by each injector, it doesn’t necessarily reflect how often
    the injector would be triggered. For this, we consider the
    popularity of domains that each injector acts on. &lt;a
        href=&#39;#fig:6-cdf-censored-domains-popularity-ranking-injector&#39;&gt;Figure 6&lt;!-- tex4ht:ref: fig:popularity  --&gt;&lt;/a&gt;
    shows the cumulative percentage of domains filtered by each
    injector relative to their Alexa ranking. Here we see that
    domains filtered by Injector 1 tend to be more popular than
    those filtered by the other injectors. Most of the domains
    (97%) censored by Injector 1 are domains that contain the
    keyword &lt;span class=&#39;pcrr8tn-&#39;&gt;google&lt;/span&gt;, and 90% of them are in the top 350K
    domains in the Alexa top 1M list. While, the majority (80%) of
    domains censored by Injectors 2 and 3 are &lt;span class=&#39;pcrr8tn-&#39;&gt;*.blogspot &lt;/span&gt;and
    &lt;span class=&#39;pcrr8tn-&#39;&gt;.*tumblr &lt;/span&gt;domains which are in the long tail of the Alexa 1M
    list &lt;span class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:scheitle2018long&#39;&gt;25&lt;/a&gt;]&lt;/span&gt;.
&lt;/p&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4-2&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:4.2-longitudinal-trends&#34;
        href=&#34;#sec:4.2-longitudinal-trends&#34;&gt;4.1
        &lt;/span&gt;Longitudinal trends&lt;/a&gt;&lt;/h3&gt;


&lt;!-- l. 116 --&gt;
&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Halting interval of injectors. &lt;/span&gt;&lt;a
        href=&#39;#fig:7-total-injected-packets-per-day&#39;&gt;Figure
        7&lt;!-- tex4ht:ref: fig:injectors_overtime  --&gt;&lt;/a&gt;
    shows the total number
    of injected packets on a daily basis. Due to the frequency of our
    measurements, we are not able to discover any gaps less
    than two hours. When analyzing the data on a bi-hourly
    basis, we discover that while Injector 2 has been working
    consecutively, Injector 1 and Injector 3 occasionally stopped
    working for a few hours. Specifically, the three halting intervals
    of Injector 1 are between 13:00 and 15:22 on September
    18, 2019; between 9:26 and 13:00 September 19, 2019;
    and between 17:06 to 10:22 on September 19, 2019. The
    only halting intervals of Injector 3 are between 2:36 and
    8:00 on May 1 (in Beijing Time). We note the actual halts
    are likely to be a sub-interval of what we have discovered.
    All of these occasionally happened halts lasted less than 6
    hours and most of them happened during work hours in
    China.
&lt;/p&gt;
&lt;figure class=&#39;figure&#39;
    id=&#34;fig:7-total-injected-packets-per-day&#34;&gt;


    &lt;!-- l. 132 --&gt;

    &lt;img alt=&#39;Total number of injected
            packets
            per injector
            received each day across time.&#39; src=&#39;../figures/injected_packets_per_day_per_injector-.png&#39; /&gt;
    &lt;figcaption&gt;&lt;a
            href=&#34;#fig:7-total-injected-packets-per-day&#34;&gt;&lt;b&gt;Figure
                7&lt;/a&gt;: Total number of injected
        packets
        per injector
        received each day across time. The gaps are all due to
        disruptions of the measurements.&lt;/b&gt;&lt;/figcaption&gt;


&lt;/figure&gt;
&lt;!-- l. 139 --&gt;
&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;Relationship between injectors and the IP drop seen
        in &lt;/span&gt;&lt;a
        href=&#39;#fig:2-top-asns-injected-ip-addresses&#39;&gt;&lt;span
            class=&#39;ptmb8t-&#39;&gt;Figure 2&lt;/span&gt;&lt;!-- tex4ht:ref: fig:top_asns  --&gt;&lt;/a&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;. &lt;/span&gt;We
    analyzed
    the IPs
    used by the injectors
    over time, specifically before and after the decrease in the
    number of distinct IPs injected on November, 2019. The
    decrease has no effect on Injector 1 as it always uses the
    same four distinct IPs. However, Injector 2 and Injector 3
    initially use a pool of 958 and 1,506 IPs to send injected DNS
    replies, respectively. After the drop, both Injector 2 and 3 use
    the same IP pool (with 212 IPs) for their injected DNS
    replies.
&lt;/p&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4-3&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:4.3-localizing-the-injectors&#34;
        href=&#34;#sec:4.3-localizing-the-injectors&#34;&gt;4.3
        &lt;/span&gt;Localizing the Injectors&lt;/a&gt;&lt;/h3&gt;
&lt;!-- l. 145 --&gt;
&lt;p class=&#39;noindent&#39;&gt;We next attempt to localize the three injectors identified in &lt;a
        href=&#39;#sec:4.1-fingerprinting-the-injectors&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;4.1&lt;!-- tex4ht:ref: sec:fingerprints  --&gt;&lt;/a&gt;.
    We use the commonly employed method of sending packets with
    incrementing IP TTL values until we receive an injected
    DNS reply to identify where on our path the packet injector
    lies &lt;span class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;1&lt;/a&gt;, &lt;a href=&#39;#cite:Lowe2007a&#39;&gt;18&lt;/a&gt;, &lt;a
            href=&#39;#cite:Pearce2017b&#39;&gt;23&lt;/a&gt;, &lt;a href=&#39;#cite:Sparks2012a&#39;&gt;26&lt;/a&gt;, &lt;a href=&#39;#cite:Xu2011a&#39;&gt;29&lt;/a&gt;]&lt;/span&gt;.
    For
    this test,
    we focus on a single domain
    that we observed to trigger all three injectors: &lt;span class=&#39;pcrr8tn-&#39;&gt;www.google.sm&lt;/span&gt;.
    We then send DNS queries for this domain from our VPS in the
    US to the VPS in China.
&lt;/p&gt;&lt;!-- l. 150 --&gt;
&lt;p class=&#39;indent&#39;&gt; Based on these TTL limited probes, we were able to observe
    that Injectors 1 and 2 are located 15 hops away from our US
    VPS. For comparison, our Chinese VPS is 25 hops from our US
    VPS. However, we observed an unusual behavior with Injector 3,
    where we did not see an injected DNS reply from Injector 3 until
    the initial TTL on our probe packet is set to 29. Given that the
    destination IP of our probe packet was only 25 hops away, this
    behavior seemed unusual. However, upon closer inspection, we
    determined that this behavior stemmed from Injector 3 echoing
    the incremented TTL of the probe packet in its injected
    reply.
&lt;/p&gt;&lt;!-- l. 152 --&gt;
&lt;p class=&#39;indent&#39;&gt;&lt;a
        href=&#39;#fig:8-injector-ip-ttl-impacts-probing&#39;&gt;Figure 8&lt;!-- tex4ht:ref: fig:type3-ttl  --&gt;&lt;/a&gt;
    illustrates this phenomenon. We find that when the
    probe packet has a TTL of 29, the injected reply has an IP
    TTL of 1 when it reaches our US host. Similarly, when
    the probe packet has a TTL of 30 the TTL of the injected
    reply is 2, and so on. The precise probe TTL needed to
    observe this behavior is &lt;span class=&#39;zptmcmr-&#39;&gt;2&lt;/span&gt;&lt;span class=&#39;zptmcmrm-&#39;&gt;n&lt;/span&gt;&lt;span
        class=&#39;zpzccmry-&#39;&gt;−&lt;/span&gt;&lt;span class=&#39;zptmcmr-&#39;&gt;1 &lt;/span&gt;where n is the number of hops
    between the probing host and the packet injector. We note,
    that this discussion implicitly assumes symmetric paths
    between the injector and the probing host. This behavior
    could potentially be used to identify asymmetric routing on
    paths (when a domain that will trigger multiple injectors is
    used), but we leave more in depth analysis of this to future
    work.
&lt;/p&gt;&lt;!-- l. 157 --&gt;
&lt;p class=&#39;indent&#39;&gt; We also compare the time between sending our DNS query
    and when we receive the injected reply to get a sense of where
    the injectors are located. Specifically, we compare the delays of
    the three injectors and find that more than 90% of the time the
    delays are within 0.2 ms of each other. This would support the
    theory that these three devices are installed in the same physical location.
&lt;/p&gt;&lt;!-- l. 161 --&gt;
&lt;p class=&#39;indent&#39;&gt; We repeat these experiments from seven hosts outside of
    China (our VPS in the US and cloud-hosted VMs in the
    Netherlands, Singapore, UK, France, Canada and India) with
    consistent results.
&lt;/p&gt;


&lt;figure
    id=&#34;fig:8-injector-ip-ttl-impacts-probing&#34;
    class=&#34;float&#34;&gt;
    &lt;div class=&#34;figure&#34;&gt;
        &lt;div class=&#34;subfigure&#34; id=&#34;fig:8a-type3-illustration-a&#34;&gt;
            &lt;p&gt;
                &lt;img src=&#34;../figures/Type3_Illustration_a-.png&#34; alt=&#34;The initial IP TTL of the query is 29.&#34;
                    style=&#34;width: 100%;&#34;&gt;
            &lt;figcaption style=&#34;text-align:center;&#34;&gt;&lt;b&gt;&lt;a href=&#34;#fig:8a-type3-illustration-a&#34;&gt;(a) The initial IP TTL of
                        the query is 29.&lt;/a&gt;&lt;/b&gt;&lt;/figcaption&gt;
            &lt;/p&gt;
            &lt;div class=&#34;subfigure&#34; id=&#34;fig:8b-type3-illustration-b&#34;&gt;
                &lt;p&gt;&lt;img src=&#34;../figures/Type3_Illustration_b-.png&#34; alt=&#34;The initial IP TTL of the query is 16.&#34;
                        style=&#34;width: 100%;&#34;&gt;
                &lt;figcaption style=&#34;text-align:center;&#34;&gt;&lt;b&gt;&lt;a href=&#34;#fig:8b-type3-illustration-b&#34;&gt;(b) The initial IP TTL
                            of the query is 16.&lt;/a&gt;&lt;/b&gt;&lt;/figcaption&gt;
                &lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;figcaption&gt;&lt;span&gt;&lt;a
                    href=&#34;#fig:8-injector-ip-ttl-impacts-probing&#34;&gt;&lt;b&gt;Figure
                        8&lt;/a&gt;&lt;/span&gt;. &lt;/span&gt;&lt;span&gt;
                Illustration of how Injector 3
                mirroring the IP
                TTL of the DNS query impacts the results of TTL-limited
                probing. &lt;a href=&#39;#fig:8a-type3-illustration-a&#39;&gt;Figure 8a&lt;!-- tex4ht:ref: fig:type3-ttl  --&gt;&lt;/a&gt; shows
                that when the IP
                TTL of
                the DNS
                query is 29 the corresponding injected packet has a high
                enough TTL to reach the sender. &lt;a
                    href=&#39;#fig:8b-type3-illustration-b&#39;&gt;Figure 8b&lt;!-- tex4ht:ref: fig:type3-ttl  --&gt;&lt;/a&gt;
                shows
                that when
                the IP TTL of the DNS query is below 29, the initial IP TTL
                of the forged response is too small to reach the sender.
                &lt;/b&gt;&lt;/span&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;h2 class=&#34;sectionHead&#34; id=&#34;5&#34;&gt;&lt;a id=&#34;sec:5-multipath-results&#34; href=&#34;#sec:5-multipath-results&#34;&gt;5 Multi-path Results&lt;/a&gt;
&lt;/h2&gt;
&lt;!-- l. 4 --&gt;
&lt;p class=&#39;noindent&#39;&gt;In &lt;a href=&#39;#sec:2-methodology&#39;&gt;Section 2&lt;!-- tex4ht:ref: sec:method  --&gt;&lt;/a&gt;, we describe our
    method to
    send our DNS queries to
    36K Chinese prefixes. Our goal here is to confirm that our results
    are robust, to the location of the host that we focus on for
    our longitudinal experiment. &lt;a
        href=&#39;#fig:9-unique-ip-prefixes-response-types-injectorx&#39;&gt;Figure 9&lt;!-- tex4ht:ref: fig:ipprefixes  --&gt;&lt;/a&gt;
    shows the result:
    each bar corresponds to the combination of injectors that
    were observed and the height of the bar corresponds to the
    percent of prefixes where this combination of injectors was
    observed.
&lt;/p&gt;&lt;!-- l. 8 --&gt;
&lt;p class=&#39;indent&#39;&gt; Of the 36K prefixes we direct our query towards, we find that
    62% of them observe all three DNS injectors. We observe
    12% of cases where two of the three injectors are observed,
    and 13% of cases where only one of the three injectors are
    observed. For each IP address, we send 100 queries which
    suggests that these cases are not just caused by transient
    packet loss. We also observe some injectors that are not
    seen in our longitudinal data in this broader study (denoted
    by Injector X in &lt;a
        href=&#39;#fig:9-unique-ip-prefixes-response-types-injectorx&#39;&gt;Fig.
        9&lt;!-- tex4ht:ref: fig:ipprefixes  --&gt;&lt;/a&gt;).
    In total, there are around 4% of
    the prefixes where we observe injectors not matching our
    fingerprints.
&lt;/p&gt;&lt;!-- l. 14 --&gt;
&lt;p class=&#39;indent&#39;&gt; Interestingly, we see 8% of the prefixes, registered to
    134 ASes, where no DNS injector is triggered. Using the
    RIPE NCC AS visibility tool &lt;span class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:ripe-as-visibility&#39;&gt;24&lt;/a&gt;]&lt;/span&gt;, we find 22% of
    these
    prefixes have less than 15% visibility, suggesting our queries
    may never reach these prefixes. For the remaining prefixes,
    we use the RIR-based IP-to-ASN mapping provided by
    Team Cymru &lt;span class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:team-cymru-ip-to-asn&#39;&gt;27&lt;/a&gt;]&lt;/span&gt; and find that half of these
    prefixes are
    registered outside of China (e.g., a Chinese-based company
    registering an IP address with ARIN). In these cases, the
    prefixes may be located outside of China and not subject
    to censorship. It worth noting that there are still 1,027 IP
    prefixes that seem to be within China’s territory, but with no
    injected packet observed. These IP prefixes correspond to
    120 ASes. Upon closer inspection we find that these ASes
    tend to be related to technology companies or government
    agencies.
&lt;/p&gt;
&lt;figure class=&#39;figure&#39;
    id=&#34;fig:9-unique-ip-prefixes-response-types-injectorx&#34;&gt;

    &lt;img src=&#39;../figures/ipprefixes-.png&#39; alt /&gt;
    &lt;figcaption&gt;&lt;a
            href=&#34;#fig:9-unique-ip-prefixes-response-types-injectorx&#34;&gt;&lt;b&gt;Figure
                9&lt;/a&gt;: Number of unique IP prefixes
        responding with
        different types of responses. InjectorX refers to the injectors
        that have fingerprints other than the summarized ones.&lt;/b&gt;&lt;/figcaption&gt;

&lt;/figure&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;6&#34;&gt;&lt;a id=&#34;sec:6-conclusion&#34; href=&#34;#sec:6-conclusion&#34;&gt;6 Conclusion&lt;/a&gt;&lt;/h2&gt;
&lt;!-- l. 4 --&gt;
&lt;p class=&#39;noindent&#39;&gt;In this work, we analyze the DNS poisoning behavior of the
    GFW across nine months. We observe groups of IPs used
    to censor specific groups of domains and identify three
    distinct DNS packet injectors. We localize and characterize
    the behavior of these injectors and identify one injector
    mirroring the TTL of the probe packets which has implications
    for studies that use TTL-limited packets to localize DNS
    censors.
&lt;/p&gt;&lt;!-- l. 11 --&gt;
&lt;p class=&#39;indent&#39;&gt; We have released our code and dataset to maintain
    reproducibility and to stimulate future work, obtainable at
    &lt;a class=&#39;url&#39;
        href=&#39;https://gfw.report/publications/foci20_dns/en/&#39;&gt;https://gfw.report/publications/foci20_dns/en/&lt;/a&gt;.
&lt;/p&gt;&lt;!-- l. 88 --&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;sec:acknowledgments&#34;&gt;&lt;a href=&#34;#sec:acknowledgments&#34;&gt;Acknowledgments&lt;/a&gt;
&lt;/h2&gt;
&lt;!-- l. 90 --&gt;
&lt;p class=&#39;noindent&#39;&gt;We would like to thank our shepherd Anita Nikolich for her
    thorough feedback and guidance. We also thank Nicholas Weaver
    for helpful discussions about the injectors’ behavior. This work
    funded by a Google Faculty Research Award, NSF CAREER
    grant CNS1553301, NSF grants CNS1740895 and CNS1719386,
    and by the Open Technology Fund under an Information
    Controls Fellowship.
&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;sec:references&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a href=&#34;#sec:references&#34;&gt;References&lt;/a&gt;
&lt;/h2&gt;

&lt;div class=&#34;bibliography&#34;&gt;
    &lt;ol class=&#34;citation-numbering&#34;&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Anonymous2014a&#34;&gt;&lt;/a&gt; Anonymous. Towards a comprehensive picture of the Great Firewall’s DNS
            censorship. In
            &lt;em&gt;Free and Open Communications on the Internet&lt;/em&gt;, USENIX, 2014.
            &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci14/foci14-anonymous.pdf&#34;&gt;
                https://www.usenix.org/system/files/conference/foci14/foci14-anonymous.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:gfwreport2020b&#34;&gt;&lt;/a&gt; Anonymous. GFW Archaeology: gfw-looking-glass.sh, March 2020.
            &lt;a class=&#34;url&#34;
                href=&#34;https://gfw.report/blog/gfw_looking_glass/en/&#34;&gt;https://gfw.report/blog/gfw_looking_glass/en/.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Aryan2013a&#34;&gt;&lt;/a&gt; Simurgh Aryan, Homa Aryan, and J. Alex Halderman. Internet censorship in Iran:
            A first look. In
            &lt;em&gt;Free and Open Communications on the Internet&lt;/em&gt;, USENIX, 2013.
            &lt;a class=&#34;url&#34;
                href=&#34;https://censorbib.nymity.ch/pdf/Aryan2013a.pdf&#34;&gt;https://censorbib.nymity.ch/pdf/Aryan2013a.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:rfc8020&#34;&gt;&lt;/a&gt; S. Bortzmeyer and S. Huque. NXDOMAIN: There Really Is Nothing Underneath. RFC
            8020, IETF, November 2016.
            &lt;a class=&#34;url&#34; href=&#34;https://tools.ietf.org/html/rfc8020&#34;&gt;https://tools.ietf.org/html/rfc8020.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:censored-plannet-Satellite-Iris&#34;&gt;&lt;/a&gt; CensoredPlanet: Satellite and Iris. Available at
            &lt;a class=&#34;url&#34;
                href=&#34;https://censoredplanet.org/projects/satellite&#34;&gt;https://censoredplanet.org/projects/satellite.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:as2org&#34;&gt;&lt;/a&gt; Center for Applied Internet Data Analysis. Inferred AS to Organization Mapping
            Dataset. Web page, Accessed 2020.
            &lt;a class=&#34;url&#34;
                href=&#34;https://www.caida.org/data/as-organizations/&#34;&gt;https://www.caida.org/data/as-organizations/.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:pfx2as&#34;&gt;&lt;/a&gt; Center for Applied Internet Data Analysis. Routeviews Prefix to AS mappings Dataset
            for IPv4 and IPv6. Web page, Accessed 2020.
            &lt;a class=&#34;url&#34;
                href=&#34;http://www.caida.org/data/routing/routeviews-prefix2as.xml&#34;&gt;http://www.caida.org/data/routing/routeviews-prefix2as.xml.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Chaabane2014a&#34;&gt;&lt;/a&gt; Abdelberi Chaabane, Terence Chen, Mathieu Cunche, Emiliano De Cristofaro,
            Arik Friedman, and Mohamed Ali Kaafar. Censorship in the wild: Analyzing Internet filtering in Syria. In
            &lt;em&gt;Internet Measurement Conference&lt;/em&gt;, ACM, 2014.
            &lt;a class=&#34;url&#34;
                href=&#34;http://conferences2.sigcomm.org/imc/2014/papers/p285.pdf&#34;&gt;http://conferences2.sigcomm.org/imc/2014/papers/p285.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Chai2019a&#34;&gt;&lt;/a&gt; Zimo Chai, Amirhossein Ghafari, and Amir Houmansadr. On the importance of
            encrypted-SNI (ESNI) to censorship circumvention. In
            &lt;em&gt;Free and Open Communications on the Internet&lt;/em&gt;, USENIX, 2019.
            &lt;a class=&#34;url&#34;
                href=&#34;https://www.usenix.org/system/files/foci19-paper_chai_update.pdf&#34;&gt;https://www.usenix.org/system/files/foci19-paper_chai_update.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Duan2012a&#34;&gt;&lt;/a&gt; Haixin Duan, Nicholas Weaver, Zongxu Zhao, Meng Hu, Jinjin Liang, Jian Jiang,
            Kang Li, and Vern Paxson. Hold-On: Protecting against on-path DNS poisoning. In
            &lt;em&gt;Securing and Trusting Internet Names&lt;/em&gt;, National Physical Laboratory, 2012.
            &lt;a class=&#34;url&#34;
                href=&#34;http://conferences.npl.co.uk/satin/papers/satin2012-Duan.pdf&#34;&gt;http://conferences.npl.co.uk/satin/papers/satin2012-Duan.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Farnan2016a&#34;&gt;&lt;/a&gt; Oliver Farnan, Alexander Darer, and Joss Wright. Poisoning the well –
            exploring the Great Firewall’s poisoned DNS responses. In
            &lt;em&gt;Workshop on Privacy in the Electronic Society&lt;/em&gt;, ACM, 2016.
            &lt;a class=&#34;url&#34; href=&#34;https://dl.acm.org/authorize?N25517&#34;&gt;https://dl.acm.org/authorize?N25517.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Filasto2012a&#34;&gt;&lt;/a&gt; Arturo Filastò and Jacob Appelbaum. OONI: Open observatory of network
            interference. In
            &lt;em&gt;Free and Open Communications on the Internet&lt;/em&gt;, USENIX, 2012.
            &lt;a class=&#34;url&#34;
                href=&#34;https://www.usenix.org/system/files/conference/foci12/foci12-final12.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci12/foci12-final12.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:fortinet&#34;&gt;&lt;/a&gt; FortiGuard Labs Web Filter, Accessed 2018.
            &lt;a class=&#34;url&#34; href=&#34;https://fortiguard.com/webfilter&#34;&gt;https://fortiguard.com/webfilter.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:gfwrev2009a&#34;&gt;&lt;/a&gt; gfwrev. 深入理解GFW: DNS污染, November 2009.
            &lt;a class=&#34;url&#34;
                href=&#34;https://gfwrev.blogspot.com/2009/11/gfwdns.html&#34;&gt;https://gfwrev.blogspot.com/2009/11/gfwdns.html.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Gill2015a&#34;&gt;&lt;/a&gt; Phillipa Gill, Masashi Crete-Nishihata, Jakub Dalek, Sharon Goldberg, Adam
            Senft, and Greg Wiseman. Characterizing web censorship worldwide: Another look at the OpenNet Initiative
            data. &lt;em&gt;Transactions on the Web&lt;/em&gt;, 9(1), 2015.
            &lt;a class=&#34;url&#34;
                href=&#34;https://censorbib.nymity.ch/pdf/Gill2015a.pdf&#34;&gt;https://censorbib.nymity.ch/pdf/Gill2015a.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Hoang2019a&#34;&gt;&lt;/a&gt; Nguyen Phong Hoang, Sadie Doreen, and Michalis Polychronakis. Measuring I2P
            censorship at a global scale. In
            &lt;em&gt;Free and Open Communications on the Internet&lt;/em&gt;, USENIX, 2019.
            &lt;a class=&#34;url&#34;
                href=&#34;https://www.usenix.org/system/files/foci19-paper_hoang.pdf&#34;&gt;https://www.usenix.org/system/files/foci19-paper_hoang.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:hoang2020&#34;&gt;&lt;/a&gt; Nguyen Phong Hoang, Arian Akhavan Niaki, Nikita Borisov, Phillipa Gill, and
            Michalis Polychronakis. Assessing the Privacy Benefits of Domain Name Encryption. In
            &lt;em&gt;ACM ASIACCS 2020&lt;/em&gt;.
            &lt;a class=&#34;url&#34; href=&#34;https://arxiv.org/pdf/1911.00563.pdf&#34;&gt;https://arxiv.org/pdf/1911.00563.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Lowe2007a&#34;&gt;&lt;/a&gt; Graham Lowe, Patrick Winters, and Michael L. Marcus. The great DNS wall of
            China. Technical report, New York University, 2007.
            &lt;a class=&#34;url&#34;
                href=&#34;https://censorbib.nymity.ch/pdf/Lowe2007a.pdf&#34;&gt;https://censorbib.nymity.ch/pdf/Lowe2007a.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:rfc1035&#34;&gt;&lt;/a&gt; P. Mockapetris. DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION. RFC 1035, IETF,
            November 1987.
            &lt;a class=&#34;url&#34; href=&#34;https://tools.ietf.org/html/rfc1035&#34;&gt;https://tools.ietf.org/html/rfc1035.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Nabi2013a&#34;&gt;&lt;/a&gt; Zubair Nabi. The anatomy of web censorship in Pakistan. In
            &lt;em&gt;Free and Open Communications on the Internet&lt;/em&gt;, USENIX, 2013.
            &lt;a class=&#34;url&#34;
                href=&#34;https://censorbib.nymity.ch/pdf/Nabi2013a.pdf&#34;&gt;https://censorbib.nymity.ch/pdf/Nabi2013a.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Niaki2020a&#34;&gt;&lt;/a&gt; Arian Akhavan Niaki, Shinyoung Cho, Zachary Weinberg, Nguyen Phong Hoang, Abbas
            Razaghpanah, Nicolas Christin, and Phillipa Gill. ICLab: A global, longitudinal internet censorship
            measurement platform. In
            &lt;em&gt;Symposium on Security &amp; Privacy&lt;/em&gt;, IEEE, 2020.
            &lt;a class=&#34;url&#34;
                href=&#34;https://people.cs.umass.edu/~phillipa/papers/oakland2020.pdf&#34;&gt;https://people.cs.umass.edu/~phillipa/papers/oakland2020.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Pearce2017b&#34;&gt;&lt;/a&gt; Paul Pearce, Ben Jones, Frank Li, Roya Ensafi, Nick Feamster, Nick Weaver, and
            Vern Paxson. Global measurement of DNS manipulation. In
            &lt;em&gt;USENIX Security Symposium&lt;/em&gt;, USENIX, 2017.
            &lt;a class=&#34;url&#34;
                href=&#34;https://www.usenix.org/system/files/conference/usenixsecurity17/sec17-pearce.pdf&#34;&gt;https://www.usenix.org/system/files/conference/usenixsecurity17/sec17-pearce.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:ptacek1998insertion&#34;&gt;&lt;/a&gt; Thomas H Ptacek and Timothy N Newsham. Insertion, evasion, and denial
            of service: Eluding network intrusion detection. Technical report, Secure Networks inc Calgary Alberta,
            1998.
            &lt;a class=&#34;url&#34;
                href=&#34;https://users.ece.cmu.edu/~adrian/731-sp04/readings/Ptacek-Newsham-ids98.pdf&#34;&gt;https://users.ece.cmu.edu/~adrian/731-sp04/readings/Ptacek-Newsham-ids98.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:ripe-as-visibility&#34;&gt;&lt;/a&gt; RIPE NCC AS Visibility Tool, Accessed 2020.
            &lt;a class=&#34;url&#34; href=&#34;https://stat.ripe.net&#34;&gt;https://stat.ripe.net.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:scheitle2018long&#34;&gt;&lt;/a&gt; Quirin Scheitle, Oliver Hohlfeld, Julien Gamba, Jonas Jelten, Torsten
            Zimmermann, Stephen D Strowes, and Narseo Vallina-Rodriguez. A long way to the top: Significance, structure,
            and stability of internet top lists. In
            &lt;em&gt;Proceedings of the Internet Measurement Conference 2018&lt;/em&gt;, 2018.
            &lt;a class=&#34;url&#34;
                href=&#34;https://dl.acm.org/doi/pdf/10.1145/3278532.3278574&#34;&gt;https://dl.acm.org/doi/pdf/10.1145/3278532.3278574.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Sparks2012a&#34;&gt;&lt;/a&gt; Sparks, Neo, Tank, Smith, and Dozer. The collateral damage of Internet
            censorship by DNS injection. &lt;em&gt;SIGCOMM Computer Communication Review&lt;/em&gt;, 42(3):21–27, 2012.
            &lt;a class=&#34;url&#34;
                href=&#34;http://conferences.sigcomm.org/sigcomm/2012/paper/ccr-paper266.pdf&#34;&gt;http://conferences.sigcomm.org/sigcomm/2012/paper/ccr-paper266.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:team-cymru-ip-to-asn&#34;&gt;&lt;/a&gt; Team Cymru IP to ASN Mapping Service, Accessed 2020.
            &lt;a class=&#34;url&#34;
                href=&#34;https://team-cymru.com/community-services/ip-asn-mapping/&#34;&gt;https://team-cymru.com/community-services/ip-asn-mapping/.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Verkamp2012a&#34;&gt;&lt;/a&gt; John-Paul Verkamp and Minaxi Gupta. Inferring mechanics of web censorship
            around the world. In
            &lt;em&gt;Free and Open Communications on the Internet&lt;/em&gt;, USENIX, 2012.
            &lt;a class=&#34;url&#34;
                href=&#34;https://www.usenix.org/system/files/conference/foci12/foci12-final1.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci12/foci12-final1.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Xu2011a&#34;&gt;&lt;/a&gt; Xueyang Xu, Z. Morley Mao, and J. Alex Halderman. Internet censorship in China:
            Where does the filtering occur? In
            &lt;em&gt;Passive and Active Measurement Conference&lt;/em&gt;, Springer, 2011.
            &lt;a class=&#34;url&#34;
                href=&#34;https://web.eecs.umich.edu/~zmao/Papers/china-censorship-pam11.pdf&#34;&gt;https://web.eecs.umich.edu/~zmao/Papers/china-censorship-pam11.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Yan2006a&#34;&gt;&lt;/a&gt; Boru Yan, Binxing Fang, Bin Li, and Yao Wang. DNS欺骗攻击的检测和防范. 计算机工程,
            32(21):130–132, 2006.
            &lt;a class=&#34;url&#34;
                href=&#34;https://web.archive.org/web/20200726140258/https://tomcat.one/files/papers/DNS%E6%AC%BA%E9%AA%97%E6%94%BB%E5%87%BB%E7%9A%84%E6%A3%80%E6%B5%8B%E5%92%8C%E9%98%B2%E8%8C%83_%E9%97%AB%E4%BC%AF%E5%84%92.pdf&#34;&gt;https://web.archive.org/web/20200726140258/https://tomcat.one/files/papers/DNS%E6%AC%BA%E9%AA%97%E6%94%BB%E5%87%BB%E7%9A%84%E6%A3%80%E6%B5%8B%E5%92%8C%E9%98%B2%E8%8C%83_%E9%97%AB%E4%BC%AF%E5%84%92.pdf.&lt;/a&gt;
        &lt;/li&gt;
    &lt;/ol&gt;
&lt;/div&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>三重审查：揭秘防火长城的DNS审查行为</title>
        <link>https://gfw.report/publications/foci20_dns/zh/</link>
        <pubDate>Tue, 11 Aug 2020 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/publications/foci20_dns/zh/</guid>
        
        <description>&lt;!-- use CSS file --&gt;

&lt;!-- Used to render latex syntax --&gt;
&lt;script type=&#34;text/javascript&#34; async
  src=&#34;https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML&#34;&gt;
&lt;/script&gt;

&lt;!-- Used to render Table of Content --&gt;
&lt;link href=&#34;./css/tocbot.css&#34; rel=&#39;stylesheet&#39; type=&#39;text/css&#39; /&gt;
&lt;script src=&#34;./js/tocbot.min.js&#34;&gt;&lt;/script&gt;
&lt;script&gt;
    document.addEventListener(&#39;DOMContentLoaded&#39;, function() {
    tocbot.init({
        tocSelector: &#39;.js-toc&#39;,
        contentSelector: &#39;.js-toc-content&#39;,
        headingSelector: &#39;h2, h3&#39;,
        collapseDepth: 3,
        activeLinkClass: &#39;&#39;
    });
    });
&lt;/script&gt;

&lt;h1 class=&#34;titleHead&#34;&gt;三重审查：揭秘防火长城的DNS审查行为&lt;/h1&gt;


&lt;div class=&#34;authors&#34;&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Anonymous&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Arian Akhavan Niaki&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;University of Massachusetts Amherst&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Nguyen Phong Hoang&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;Stony Brook University&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Phillipa Gill&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;University of Massachusetts Amherst&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&#34;author&#34;&gt;
        &lt;p class=&#34;author-name&#34;&gt;Amir Houmansadr&lt;/p&gt;
        &lt;p class=&#34;author-affiliation&#34;&gt;University of Massachusetts Amherst&lt;/p&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;!-- Table of Contents place holder --&gt;
&lt;div class=&#34;js-toc&#34;&gt;&lt;/div&gt;


&lt;h2 class=&#34;sectionHead&#34; id=&#34;sec:abstract&#34;&gt;&lt;a href=&#34;#sec:abstract&#34;&gt;摘要&lt;/a&gt;&lt;/h2&gt;
&lt;!-- l. 4 --&gt;
&lt;p class=&#39;noindent&#39;&gt;
    中国的防火长城（GFW）长期以来一直使用DNS数据包注入来审查互联网访问。在这项工作中，我们使用Alexa前100万个域名作为测试列表分析了GFW在九个月内的DNS注入行为。我们首先专注于理解GFW使用的公共可路由IP，并观察到用于过滤特定域名集合的IP组。我们还注意到，2019年11月，GFW注入的公共IP数量急剧下降。然后，我们对我们测量中观察到的三种不同的注入器进行了指纹识别。值得注意的是，其中一个注入器将其注入数据包中的IP
    TTL值与探测数据包中的TTL值保持一致，这对于使用TTL限制的探测来定位审查者具有重要意义。最后，我们确认我们的观察结果通常适用于中国注册的IP前缀。
&lt;/p&gt;


&lt;h2 class=&#34;sectionHead&#34; id=&#34;1&#34;&gt;&lt;a id=&#34;sec:1-intro&#34; href=&#34;#sec:1-intro&#34;&gt;1 引言&lt;/a&gt;&lt;/h2&gt;
&lt;!-- l. 5 --&gt;
&lt;p class=&#39;noindent&#39;&gt;许多国家都以注入DNS响应的方式实施审查 &lt;span class=&#39;cite&#39;&gt; [&lt;a href=&#34;#cite:Aryan2013a&#34;&gt;3&lt;/a&gt;, &lt;a
            href=&#34;#cite:&#34;&gt;8&lt;/a&gt;, &lt;a href=&#39;#cite:Gill2015a&#39;&gt;15&lt;/a&gt;, &lt;a href=&#39;#cite:Niaki2020a&#39;&gt;21&lt;/a&gt;, &lt;a
            href=&#39;#cite:Verkamp2012a&#39;&gt;28&lt;/a&gt;]&lt;/span&gt;，而中国防火长城（GFW）使用DNS注入的情况尤为引人关注，成为了研究的热点之一&lt;span class=&#39;cite&#39;&gt; [&lt;a
            href=&#39;#cite:Anonymous2014a&#39;&gt;1&lt;/a&gt;, &lt;a href=&#39;#cite:gfwreport2020b&#39;&gt;2&lt;/a&gt;, &lt;a
            href=&#39;#cite:Duan2012a&#39;&gt;10&lt;/a&gt;, &lt;a href=&#39;#cite:Farnan2016a&#39;&gt;11&lt;/a&gt;, &lt;a href=&#39;#cite:gfwrev2009a&#39;&gt;14&lt;/a&gt;, &lt;a
            href=&#39;#cite:Hoang2019a&#39;&gt;16&lt;/a&gt;-&lt;a href=&#39;#cite:Lowe2007a&#39;&gt;18&lt;/a&gt;, &lt;a href=&#39;#cite:Pearce2017b&#39;&gt;22&lt;/a&gt;, &lt;a
            href=&#39;#cite:Sparks2012a&#39;&gt;26&lt;/a&gt;, &lt;a href=&#39;#cite:Yan2006a&#39;&gt;30&lt;/a&gt;]&lt;/span&gt;。虽然其他国家倾向于使用NXDOMAIN或保留的IP地址空间 &lt;span
        class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:Aryan2013a&#39;&gt;3&lt;/a&gt;, &lt;a href=&#39;#cite:rfc8020&#39;&gt;4&lt;/a&gt;, &lt;a
            href=&#39;#cite:Chaabane2014a&#39;&gt;8&lt;/a&gt;, &lt;a
            href=&#39;#cite:Nabi2013a&#39;&gt;20&lt;/a&gt;]&lt;/span&gt;，但中国使用各种组织拥有的公共IP地址范围的情况非常引人注目。这种使用公共IP地址的做法可能会使中国基于DNS的审查的检测变得复杂 &lt;span
        class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:censored-plannet-Satellite-Iris&#39;&gt;5&lt;/a&gt;, &lt;a href=&#39;#cite:Filasto2012a&#39;&gt;12&lt;/a&gt;, &lt;a
            href=&#39;#cite:Niaki2020a&#39;&gt;21&lt;/a&gt;]&lt;/span&gt;，并且可能使规避GFW的意外DNS缓存污染变得具有挑战性 &lt;span class=&#39;cite&#39;&gt; [&lt;a
            href=&#39;#cite:Duan2012a&#39;&gt;10&lt;/a&gt;, &lt;a href=&#39;#cite:Sparks2012a&#39;&gt;26&lt;/a&gt;]&lt;/span&gt;。
&lt;/p&gt;&lt;!-- l. 18 --&gt;
&lt;p class=&#39;indent&#39;&gt;虽然关于中国的DNS审查已经有了许多研究 &lt;span class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;1&lt;/a&gt;, &lt;a
            href=&#39;#cite:gfwreport2020b&#39;&gt;2&lt;/a&gt;, &lt;a href=&#39;#cite:Duan2012a&#39;&gt;10&lt;/a&gt;, &lt;a href=&#39;#cite:Farnan2016a&#39;&gt;11&lt;/a&gt;, &lt;a
            href=&#39;#cite:gfwrev2009a&#39;&gt;14&lt;/a&gt;, &lt;a href=&#39;#cite:Hoang2019a&#39;&gt;16&lt;/a&gt;-&lt;a href=&#39;#cite:Lowe2007a&#39;&gt;18&lt;/a&gt;, &lt;a
            href=&#39;#cite:Pearce2017b&#39;&gt;22&lt;/a&gt;, &lt;a
            href=&#39;#cite:Sparks2012a&#39;&gt;26&lt;/a&gt;]&lt;/span&gt;（部分原因是GFW会向国外的客户端注入回复），但在这项研究中，我们采取了纵向的方法，专注于中国使用公共IP进行过滤的情况。我们对中国的DNS注入器进行了为期九个月的测量，这使我们能够观察到GFW使用的公共IP地址集合的变化（&lt;a
        href=&#39;#sec:2-methodology&#39;&gt;&lt;span
        class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;2&lt;!-- tex4ht:ref: sec:method  --&gt;&lt;/a&gt;）。我们进一步进行了有针对性的测量，以指纹识别GFW的DNS数据包注入器的行为，并考虑了我们的结果在中国的自治系统（AS）通告的3.6万个前缀中的普适性（&lt;a href=&#39;#sec:5-multipath-results&#39;&gt;&lt;span
            class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;5&lt;!-- tex4ht:ref: sec:multi_path  --&gt;&lt;/a&gt;）。
&lt;/p&gt;&lt;!-- l. 29 --&gt;
&lt;p class=&#39;indent&#39;&gt;我们的研究揭示了中国过滤系统的几个先前未知的特性：
&lt;/p&gt;&lt;!-- l. 32 --&gt;
&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;IP组。&lt;/span&gt;首先，我们观察到一组IP地址被用于注入回复到特定的域名集合（&lt;a
        href=&#39;#sec:3-characterizing-dns-injection&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;3&lt;!-- tex4ht:ref: sec:forged_ips  --&gt;&lt;/a&gt;）。这些组可能指向被一个共同的基础设施或阻断流程阻断的域名组。我们在阻断的域名和随时间使用的阻断IP上讨论了这些组（&lt;a href=&#39;#sec:3.2-injected-ips&#39;&gt;&lt;span
            class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;3.2&lt;!-- tex4ht:ref: sec:ipgroups  --&gt;&lt;/a&gt;）
&lt;/p&gt;&lt;!-- l. 38 --&gt;
&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;三种不同的注入器。&lt;/span&gt;我们还观察到单个DNS查询可能会导致GFW注入的多个DNS回复。通过使用IP ID、IP TTL、DNS
    TTL和DNS标志，我们能够对这些多个回复进行指纹识别，并确定三种不同的用于DNS请求的数据包注入器（&lt;a
        href=&#39;#sec:4.1-fingerprinting-the-injectors&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;4.1&lt;!-- tex4ht:ref: sec:fingerprints  --&gt;&lt;/a&gt;）。
&lt;/p&gt;&lt;!-- l. 43 --&gt;
&lt;p class=&#39;noindent&#39;&gt;&lt;span
        class=&#39;ptmb8t-&#39;&gt;注入数据包中的TTL回显。&lt;/span&gt;在对审查器进行指纹识别的过程中，我们观察到其中一个数据包注入器实际上会回显探测数据包的TTL，这对于使用TTL限制的探测数据包定位网络审查的常用技术具有重要意义（&lt;a
        href=&#39;#sec:4.3-localizing-the-injectors&#39;&gt;&lt;span
        class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;4.3&lt;!-- tex4ht:ref: sec:localize  --&gt;&lt;/a&gt;）。
&lt;/p&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;2&#34;&gt;&lt;a id=&#34;sec:2-methodology&#34; href=&#34;#sec:2-methodology&#34;&gt;2 方法&lt;/a&gt;&lt;/h2&gt;
&lt;!-- l. 5 --&gt;
&lt;p class=&#39;noindent&#39;&gt;我们现在描述我们用于纵向监测中国基于DNS的审查的方法论（&lt;a
        href=&#39;#sec:2.1-baseline-longitudinal-experiment&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;2.1&lt;!-- tex4ht:ref: sec:baseline  --&gt;&lt;/a&gt;）以及我们如何扩展此方法来了解不同地区的过滤差异（&lt;a
        href=&#39;#sec:2.2-multipath-experiment&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;2.2&lt;!-- tex4ht:ref: sec:mpe  --&gt;&lt;/a&gt;）。我们还讨论了在进行实验时采取的解决道德问题的步骤（&lt;a
        href=&#39;#sec:2.3-ethics&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;2.3&lt;!-- tex4ht:ref: sec:ethics  --&gt;&lt;/a&gt;）。
&lt;/p&gt;&lt;!-- l. 9 --&gt;


&lt;h3 class=&#34;subsectionHead&#34; id=&#34;2-1&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:2.1-baseline-longitudinal-experiment&#34;
        href=&#34;#sec:2.1-baseline-longitudinal-experiment&#34;&gt;2.1
        &lt;/span&gt;基线纵向实验&lt;/a&gt;&lt;/h3&gt;
&lt;!-- l. 11 --&gt;
&lt;p class=&#39;noindent&#39;&gt;
    我们使用了一种常用的策略，即从中国以外的主机向位于中国的IP地址（特别是那些不托管DNS服务器的地址）发出可能敏感的域名的DNS查询。这样一来，当我们的数据包穿过GFW时，就可以触发GFW，而选择不托管DNS服务器的IP地址意味着我们查询的任何响应都可以被推断为是GFW注入的。我们从一个位于美国学术网络的运行Ubuntu
    18.04
    LTS的虚拟专用服务器（VPS）发出查询。然后，我们向一个位于中国的我们控制的VPS发送具有与我们的美国主机相同配置的DNS查询。我们使用标准DNS端口（53）执行查询。我们在端口1-65535上进行了初步测试，只观察到在端口53上发送的DNS查询上进行了审查。
&lt;/p&gt;&lt;!-- l. 23 --&gt;
&lt;p class=&#39;indent&#39;&gt;
    有了这个源主机和目标主机，然后我们为一组测试域名发出DNS查询。在我们的情况下，我们从Alexa前100万个网站列表（于2019年2月22日访问）中提取了一组100万个域名。对于任何没有前缀“www.”的域名，我们都添加了此前缀，因为GFW在缺少此前缀时不一致地注入DNS回复 &lt;span
        class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;1&lt;/a&gt;, &lt;a
            href=&#39;#cite:Chai2019a&#39;&gt;9&lt;/a&gt;]&lt;/span&gt;。我们在2019年9月至2020年5月之间每两个小时查询这些域名。总计，我们发送了28亿次DNS查询，并观察到GFW伪造了1.196亿次响应。
&lt;/p&gt;&lt;!-- l. 32 --&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;2-2&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:2.2-multipath-experiment&#34;
        href=&#34;#sec:2.2-multipath-experiment&#34;&gt;2.2
        &lt;/span&gt;多路径实验&lt;/a&gt;&lt;/h3&gt;
&lt;!-- l. 34 --&gt;
&lt;p class=&#39;noindent&#39;&gt;
    我们基线方法的一个局限性是，我们只会观察到美国的VPS和中国的VPS之间的路径上的过滤。为了补充这种方法，我们进行了额外的实验，将DNS查询指向广泛范围的中国IP前缀。我们通过使用CAIDA的AS-to-organization数据集 &lt;span
        class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:as2org&#39;&gt;6&lt;/a&gt;]&lt;/span&gt;来识别中国注册的自治系统编号（ASN），进而确定中国IP前缀。然后，我们使用CAIDA的prefix-to-AS映射工具 &lt;span
        class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:pfx2as&#39;&gt;7&lt;/a&gt;]&lt;/span&gt;来收集这些自治系统通告的IP前缀，总共有36,629个前缀。
&lt;/p&gt;&lt;!-- l. 43 --&gt;
&lt;p class=&#39;indent&#39;&gt;在每个前缀内，我们随机选择一个IP地址，确保此IP地址没有托管会响应DNS查询的主机。为了确定这一点，我们向候选IP地址发送10个对非敏感域名 &lt;span
        class=&#39;pcrr8tn-&#39;&gt;www.baidu.com
    &lt;/span&gt;的查询。如果我们的DNS查询没有任何回复，我们推断此IP不托管DNS服务器，然后继续我们的测试。如果我们在50次尝试后找不到未响应的IP地址，则将IP前缀排除在测试之外。总计，我们选择了36,146个IP前缀，属于417个中国自治系统。
&lt;/p&gt;&lt;!-- l. 51 --&gt;
&lt;p class=&#39;indent&#39;&gt;对于这个测试，我们专注于一个单一的域名 &lt;span class=&#39;pcrr8tn-&#39;&gt;www.google.sm
    &lt;/span&gt;，我们观察到这个域名触发了我们基线实验中观察到的三个数据包注入器的审查（&lt;a
        href=&#39;#sec:4-understanding-the-gfw-injectors&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;4&lt;!-- tex4ht:ref: sec:three_processes  --&gt;&lt;/a&gt;），因为我们的目标是理解多个网络路径的行为。我们尝试向我们识别的每个中国前缀查询此域名100次。
&lt;/p&gt;&lt;!-- l. 2 --&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;2-3&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:2.3-ethics&#34; href=&#34;#sec:2.3-ethics&#34;&gt;2.3
        &lt;/span&gt;道德伦理&lt;/a&gt;&lt;/h3&gt;
&lt;!-- l. 4 --&gt;
&lt;p class=&#39;noindent&#39;&gt;
    对于我们的基线实验，我们发送DNS查询的两个主机都是我们控制的机器。对于我们的多路径实验，我们首先验证所选IP地址上是否运行了DNS服务。我们还注意到，我们的实验是从中国以外的主机发起的，因此对于GFW来说，查询似乎来自外部（学术）网络，而不是中国境内的任何主机。最后，我们的多路径实验限制了发送到每个IP地址的流量量为1
    MB。
&lt;/p&gt;&lt;!-- l. 2 --&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;3&#34;&gt;&lt;a id=&#34;sec:3-characterizing-dns-injection&#34; href=&#34;#sec:3-characterizing-dns-injection&#34;&gt;3
        描述DNS注入&lt;/a&gt;&lt;/h2&gt;
&lt;!-- l. 5 --&gt;
&lt;p class=&#39;noindent&#39;&gt;在本节中，我们描述随时间过滤的域名（&lt;a
        href=&#39;#sec:3.1-censored-domains&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;3.1&lt;!-- tex4ht:ref: sec:domains  --&gt;&lt;/a&gt;）以及注入回复中的IP地址（&lt;a href=&#39;#sec:3.2-injected-ips&#39;&gt;&lt;span
            class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;3.2&lt;!-- tex4ht:ref: sec:ipgroups  --&gt;&lt;/a&gt;）。
&lt;/p&gt;&lt;!-- l. 14 --&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3-1&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:3.1-censored-domains&#34;
        href=&#34;#sec:3.1-censored-domains&#34;&gt;3.1
        &lt;/span&gt;被审查的域名&lt;/a&gt;&lt;/h3&gt;

&lt;figure class=&#39;float&#39; id=&#39;fig:1-censored-domain-name-changes-sept-to-may&#39;&gt;
    &lt;div id=&#34;figure&#34;&gt;
        &lt;div class=&#39;subfigure&#39; id=&#34;fig:1a-domain-churn-gfws-all&#34;&gt;
            &lt;p&gt; &lt;img alt=&#39;观察到的被审查域名数量。&#39; src=&#39;../figures/domain_churn_gfws_all-.png&#39; /&gt;

            &lt;figcaption style=&#34;text-align:center;&#34;&gt;&lt;b&gt;&lt;a href=&#34;#fig:1a-domain-churn-gfws-all&#34;&gt;(a) 观察到的被审查域名数量。&lt;/a&gt;&lt;/b&gt;
            &lt;/figcaption&gt;
            &lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&#39;subfigure&#39; id=&#34;fig:1b-domain-churn-b&#34;&gt;
            &lt;p&gt; &lt;img alt=&#39;观察到的被审查域名数量。&#39; src=&#39;../figures/domain_churn_b-.png&#39; /&gt;

            &lt;figcaption style=&#34;text-align:center;&#34;&gt;&lt;b&gt;&lt;a href=&#34;#fig:1b-domain-churn-b&#34;&gt;(b) 每天新增和删除的被审查域名数量。&lt;/a&gt;&lt;/b&gt;
            &lt;/figcaption&gt;
            &lt;/p&gt;
        &lt;/div&gt;

    &lt;/div&gt;
    &lt;figcaption style=&#34;text-align: center;&#34;&gt;&lt;span&gt;&lt;a
                href=&#34;#fig:1-censored-domain-name-changes-sept-to-may&#34;&gt;&lt;b&gt;图1&lt;/a&gt;&lt;/span&gt;: &lt;/span&gt;&lt;span&gt;
            从2019年9月至2020年5月，Alexa前100万名中被审查的域名变化。
            &lt;/b&gt;&lt;/span&gt;&lt;/figcaption&gt;

&lt;/figure&gt;

&lt;div class=&#39;table&#39;&gt;

    &lt;!-- l. 40 --&gt;
    &lt;p class=&#39;indent&#39;&gt; &lt;/p&gt;
    &lt;figure class=&#39;float&#39; id=&#39;x1-7004r1&#39;&gt;&lt;span
            id=&#39;tbl:1-fortiguard-categories-alexa-domains-censored-percentage&#39;&gt;&lt;/span&gt;

        &lt;div class=&#39;tabular&#39;&gt;
            &lt;table class=&#39;tabular&#39; id=&#39;TBL-2&#39;&gt;
                &lt;colgroup id=&#39;TBL-2-1g&#39;&gt;
                    &lt;col id=&#39;TBL-2-1&#39; /&gt;
                    &lt;col id=&#39;TBL-2-2&#39; /&gt;
                    &lt;col id=&#39;TBL-2-3&#39; /&gt;
                    &lt;col id=&#39;TBL-2-4&#39; /&gt;
                &lt;/colgroup&gt;
                &lt;tr id=&#39;TBL-2-1-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-1-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;类别 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-1-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt;&lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;Alexa%&lt;/span&gt; &lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-1-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;类别 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-1-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt;&lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;被审查%&lt;/span&gt; &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-2-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-2-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;商业 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-2-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;27.7 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-2-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;代理规避 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-2-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;46.0 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-3-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-3-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;信息技术 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-3-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;13.3 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-3-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;个人网站 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-3-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;43.0 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-4-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-4-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;购物 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-4-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;5.9 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-4-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;明显暴力 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-4-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;20.5 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-5-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-5-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;教育 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-5-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;5.7 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-5-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;极端主义团体 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-5-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;10.0 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-6-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-6-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;个人网站 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-6-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;4.4 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-6-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;其他成人内容 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-6-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;9.4 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-7-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-7-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;新闻和媒体 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-7-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;4.1 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-7-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;内容服务器 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-7-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;9.3 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-8-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-8-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;娱乐 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-8-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;3.5 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-8-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;动态 DNS &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-8-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;7.3 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-9-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-9-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;色情 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-9-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;2.8 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-9-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;色情 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-9-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;6.2 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-10-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-10-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;健康和健身 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-10-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;2.7 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-10-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;歧视 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-10-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;5.3 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-2-11-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-11-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;政府和法律组织 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-11-2&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;2.6 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-11-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;即时通讯 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-2-11-4&#39; style=&#39;white-space:nowrap; text-align:right;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;4.2 &lt;/span&gt;&lt;/td&gt;

                &lt;/tr&gt;
            &lt;/table&gt;
        &lt;/div&gt;

        &lt;figcaption class=&#39;caption&#39; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#39;id&#39;&gt;&lt;a
                    href=&#34;#tbl:1-fortiguard-categories-alexa-domains-censored-percentage&#34;&gt;表1:&lt;/a&gt;&lt;/span&gt;&lt;span
                class=&#39;content&#39;&gt; FortiGuard类别。Alexa百万域名测试列表上最常见的10个类别以及每个类别中被审查域名的百分比。
            &lt;/span&gt;&lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-7004r1  --&gt;

    &lt;/figure&gt;
&lt;/div&gt;

&lt;p class=&#39;indent&#39;&gt; 我们看到，GFW 对被审查的域名数量存在逐渐增加的趋势。在我们进行的九个月的测量研究中，被审查的域名数量从23,995增加到24,636（增长了2.8%）。&lt;a
        href=&#39;#fig:1a-domain-churn-gfws-all&#39;&gt;图1a&lt;/a&gt;显示了随时间变化的被审查唯一域名的数量。有趣的是，先前的研究&lt;span class=&#39;cite&#39;&gt; [&lt;a
            href=&#39;#cite:Anonymous2014a&#39;&gt;1&lt;/a&gt;]&lt;/span&gt;也表明，他们在2014年的研究中看到了被审查域名数量的增长，增长了10%（也使用了Alexa百万域名作为他们的测试域名）。
&lt;/p&gt;&lt;!-- l. 72 --&gt;
&lt;p class=&#39;indent&#39;&gt; &lt;a href=&#39;#fig:1b-domain-churn-b&#39;&gt;图1b&lt;/a&gt;描绘了每天从Alexa百万域名中被添加和移除的域名数量。我们手动分析了从被阻止集合中移除超过20个域名的日期，在11月18日，移除了一个包含关键词 &lt;span
        class=&#39;pcrr8tn-&#39;&gt;youtube.com&lt;/span&gt; 的50个域名，而在11月22日，移除了一个包含关键词 &lt;span
        class=&#39;pcrr8tn-&#39;&gt;line.me&lt;/span&gt; 的22个域名。这表明GFW仍然通过关键词来审查域名，而不是维护一个固定的域名集合。
&lt;/p&gt;&lt;!-- l. 76 --&gt;
&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;被审查域名的类别。 &lt;/span&gt;我们利用由FortiNet运营的“FortiGuard” URL分类服务 &lt;span class=&#39;cite&#39;&gt;[&lt;a
            href=&#39;#cite:fortinet&#39;&gt;13&lt;/a&gt;]&lt;/span&gt; 对Alexa百万域名进行分类。Alexa列表中排名靠前的类别列在&lt;a
        href=&#39;#tbl:1-fortiguard-categories-alexa-domains-censored-percentage&#39;&gt;表1&lt;/a&gt;的左列中。我们进一步分析了Alexa百万域名列表中每个类别中被审查域名的百分比。在&lt;a
        href=&#39;#tbl:1-fortiguard-categories-alexa-domains-censored-percentage&#39;&gt;表1&lt;/a&gt;的右列中显示了具有最高被审查域名百分比的前10个类别。我们可以看到，“代理规避”类别中有46%的域名被GFW审查。对于“个人网站”类别中的高数量（42.9%被审查的域名），是因为“个人网站”类别中42.7%的被审查域名都包含
        &lt;span class=&#39;pcrr8tn-&#39;&gt;.blogspot.com&lt;/span&gt; 或 &lt;span
        class=&#39;pcrr8tn-&#39;&gt;.tumblr.com&lt;/span&gt; 关键词，这些域名似乎被GFW过滤了。我们进一步分析发现，这实际上是一个基于关键词的阻止列表，即任何以
        &lt;span class=&#39;pcrr8tn-&#39;&gt;.blogspot.com&lt;/span&gt; 或 &lt;span class=&#39;pcrr8tn-&#39;&gt;.tumblr.com&lt;/span&gt; 结尾的域名都将被GFW审查。
&lt;/p&gt;

&lt;figure class=&#39;figure&#39;
    id=&#34;fig:2-top-asns-injected-ip-addresses&#34;&gt;

    &lt;!-- l. 88 --&gt;
    &lt;img alt=&#39;头部自治系统编号和GFW使用的注入IP地址数目。&#39;
        src=&#39;../figures/top_asn_ip_drop.png&#39; /&gt;

    &lt;figcaption style=&#34;text-align: center;&#34;&gt;&lt;span&gt;&lt;span&gt;&lt;a
                    href=&#34;#fig:2-top-asns-injected-ip-addresses&#34;&gt;&lt;b&gt;图2&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;: &lt;/span&gt;&lt;span&gt;头部自治系统编号和GFW使用的注入IP地址数目。&lt;/span&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;3-2&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt;&lt;a id=&#34;sec:3.2-injected-ips&#34;
        href=&#34;#sec:3.2-injected-ips&#34;&gt;3.2 被注入的IP&lt;/a&gt;&lt;/h3&gt;
&lt;!-- l. 96 --&gt;
&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;纵向趋势。&lt;/span&gt;我们观察到GFW注入的类型A DNS记录返回了一组不同的1,510个IP地址。虽然我们观察到的大部分响应都是类型A
    DNS记录，但我们观察到了单个域名（&lt;span class=&#39;pcrr8tn-&#39;&gt;www.sunporno.com&lt;/span&gt;）的注入的CNAME记录。本文重点研究了A类型记录，并计划在未来的工作中深入研究GFW使用CNAME记录的情况。
&lt;/p&gt;&lt;!-- l. 102 --&gt;
&lt;p class=&#39;indent&#39;&gt;&lt;a
        href=&#39;#fig:2-top-asns-injected-ip-addresses&#39;&gt;图2&lt;!-- tex4ht:ref: fig:top_asns  --&gt;&lt;/a&gt;显示了由GFW注入的IP地址所属的前几个自治系统。我们观察到与注入IP地址关联的总共有41个自治系统。其中大部分自治系统对应于美国的组织，尤其是Facebook、WZCOM、Dropbox和Twitter。我们注意到在 2019年11月23日，注入的IP地址数量从1,510个（关联了41个自治系统）骤降到了仅有216个（关联了21个自治系统）。我们在&lt;a href=&#39;#sec:4-understanding-the-gfw-injectors&#39;&gt;第4节&lt;!-- tex4ht:ref: sec:three_processes  --&gt;&lt;/a&gt;中进一步调查了这一注入 IP 数量的下降。
&lt;/p&gt;&lt;!-- l. 112 --&gt;
&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;注入IP的分组。&lt;/span&gt;我们注意到被注入的IP的一个特性是，某些被封锁的域名子集解析为一组固定的公共IP。也就是说，一组公共IP被用来过滤给定的一组被封锁的域名。&lt;a
        href=&#39;#tbl:2-sensitive-domains-ip-groups-injectors-after-decrease&#39;&gt;表2&lt;!-- tex4ht:ref: tab:ip_grouping  --&gt;&lt;/a&gt; 描述了我们确定的六个不同的域名组。我们进一步对每个组中的域名进行了分类。组1、2和3中的域名中，顶级类别属于“代理规避”类别，而组4和5中的97%的域名包含关键词
        &lt;span class=&#39;pcrr8tn-&#39;&gt;google&lt;/span&gt; ，属于“搜索引擎”类别。组6包括了Alexa百万域名中被封锁的其余网站，这些网站大多与 &lt;span
        class=&#39;pcrr8tn-&#39;&gt;blogspot&lt;/span&gt; 和 &lt;span class=&#39;pcrr8tn-&#39;&gt;tumblr&lt;/span&gt; 相关。我们分析了11月23日从IP池中删除的IP，并发现接收到这些IP的99%的域名目前接收到了197个注入的IP（组 6），其中绝大多数（99%）的域名中含有关键词
        &lt;span class=&#39;pcrr8tn-&#39;&gt;tumblr.com&lt;/span&gt;。
&lt;/p&gt;


&lt;div class=&#39;table&#39;&gt;

    &lt;!-- l. 126 --&gt;
    &lt;p class=&#39;indent&#39;&gt; &lt;/p&gt;
    &lt;figure class=&#39;float&#39; id=&#39;x1-8001r2&#39;&gt;&lt;span
            id=&#39;tbl:2-sensitive-domains-ip-groups-injectors-after-decrease&#39;&gt;&lt;/span&gt;

        &lt;div class=&#39;tabular&#39;&gt;
            &lt;table class=&#39;tabular&#39; id=&#39;TBL-3&#39;&gt;
                &lt;colgroup id=&#39;TBL-3-1g&#39;&gt;
                    &lt;col id=&#39;TBL-3-1&#39; /&gt;
                    &lt;col id=&#39;TBL-3-2&#39; /&gt;
                    &lt;col id=&#39;TBL-3-3&#39; /&gt;
                    &lt;col id=&#39;TBL-3-4&#39; /&gt;
                &lt;/colgroup&gt;
                &lt;tr id=&#39;TBL-3-1-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-1-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;组别 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-1-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;域名数量 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-1-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;IP数量 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-1-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;顶级类别% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-2-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-2-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;1
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-2-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;8
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-2-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;3
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-2-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;代理规避 50.0% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-3-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-3-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;商业 25.0% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-4-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-4-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;个人网站 12.5%&lt;/span&gt;&lt;/td&gt;

                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-5-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-5-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;2
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-5-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;53
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-5-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;4
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-5-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;代理规避 36.0% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-6-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-6-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;新闻和媒体 9.4% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-7-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-7-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;即时通讯 7.5%&lt;/span&gt;&lt;/td&gt;

                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-8-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-8-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;3
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-8-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;48
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-8-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;10
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-8-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;代理规避 79.2% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-9-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-9-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;信息技术 10.4% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-10-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-10-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;信息与计算机安全 2.1% &lt;/span&gt;&lt;/td&gt;

                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-11-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-11-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;2&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;4
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-11-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;2&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;33 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-11-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;2&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;4
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-11-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;搜索引擎 96.9% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-12-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-12-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;动态DNS 3.1% &lt;/span&gt;&lt;/td&gt;

                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-13-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-13-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;5
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-13-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;54 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-13-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;201 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-13-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;搜索引擎 96.3% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-14-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-14-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;商业 1.8% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-15-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-15-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;未知 1.8% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-16-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-16-1&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;6
                        &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-16-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;~24K &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-16-3&#39; style=&#39;white-space:nowrap; text-align:left;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;197 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-16-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;个人网站 76.7% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-17-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-17-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;色情 6.3% &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-3-18-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-3-18-4&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;信息技术 2.8% &lt;/span&gt;&lt;/td&gt;

                &lt;/tr&gt;
            &lt;/table&gt;
        &lt;/div&gt;

        &lt;figcaption class=&#39;caption&#39;&gt;&lt;span class=&#39;id&#39;&gt;&lt;a
                    href=&#34;#tbl:2-sensitive-domains-ip-groups-injectors-after-decrease&#34;&gt;表2:&lt;/a&gt;
            &lt;/span&gt;&lt;span class=&#39;content&#39;&gt;关于减少注入IP地址数量后，敏感域名、伪造IP分组和注入器之间关系的概述。
            &lt;/span&gt;&lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-8001r2  --&gt;

    &lt;/figure&gt;
&lt;/div&gt;

&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;被注入的IP地址的可达性。 &lt;/span&gt;考虑到中国正在使用公共可路由的IP地址，一个自然的问题是这些IP地址是否托管内容或者在更广泛的互联网上是可达的。我们通过在中国和美国的VPS上初始化端口80和端口443上的TCP握手来测试注入IP地址的可达性。我们每天进行这个实验并持续七天，并将结果平均在&lt;a
        href=&#39;#fig:3-reachability-of-ports-and-injected-ips&#39;&gt;图3&lt;/a&gt;中呈现。我们注意到每天的结果看起来都很相似。在大多数情况下（60.9%），TCP握手尝试在美国和中国的源主机上都超时，这表明在我们测量时可能没有从这些IP地址提供内容。这些IP地址过去可能提供过内容，这导致它们被添加到被注入IP地址的集合中。
&lt;/p&gt;
&lt;figure class=&#39;figure&#39;
    id=&#34;fig:3-reachability-of-ports-and-injected-ips&#34;&gt;

    &lt;img alt=&#39;从中国和美国到注入IP地址的端口80和443的可达性。&#39; src=&#39;../figures/reachability-.png&#39; /&gt;

    &lt;figcaption style=&#34;text-align: center;&#34;&gt;&lt;a
            href=&#34;#fig:3-reachability-of-ports-and-injected-ips&#34;&gt;&lt;b&gt;图3&lt;/a&gt;: 从中国和美国到注入IP地址的端口80和443的可达性。数字是平均值，持续七天。 &lt;/b&gt;&lt;/figcaption&gt;

&lt;/figure&gt;
&lt;h2 class=&#34;sectionHead&#34; id=&#34;4&#34;&gt;&lt;a id=&#34;sec:4-understanding-the-gfw-injectors&#34;
        href=&#34;#sec:4-understanding-the-gfw-injectors&#34;&gt;4 理解GFW注入器&lt;/a&gt;&lt;/h2&gt;
&lt;!-- l. 5 --&gt;
&lt;p class=&#39;noindent&#39;&gt;我们现在描述观察到多个注入的DNS回复的情况。我们能够对这些回复进行指纹识别，并识别出三个不同的注入过程 (&lt;a
        href=&#39;#sec:4.1-fingerprinting-the-injectors&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;4.1&lt;!-- tex4ht:ref: sec:fingerprints  --&gt;&lt;/a&gt;)。我们描述了注入器的纵向趋势 (&lt;a
        href=&#39;#sec:4.2-longitudinal-trends&#39;&gt;&lt;span
        class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;4.2&lt;!-- tex4ht:ref: sec:inject_longitudinal  --&gt;&lt;/a&gt;)。最后，我们还定位了这些注入器，并观察到一个注入器反映了探测TTL值的奇特镜像情况 (&lt;a
        href=&#39;#sec:4.3-localizing-the-injectors&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;4.3&lt;!-- tex4ht:ref: sec:localize  --&gt;&lt;/a&gt;)。
&lt;/p&gt;

&lt;figure
    id=&#34;fig:4-ipid-ttl-values-dns-injector-behaviors&#34;
    class=&#34;float&#34;&gt;
    &lt;div class=&#34;figure&#34;&gt;
        &lt;div class=&#34;subfigure&#34; id=&#34;fig:4a-ipid-ipttl-of-injector1-400-packets&#34;&gt;
            &lt;p&gt;
                &lt;img src=&#34;../figures/ipid_ipttl_of_injector1_400_packets-.png&#34; alt=&#34;注入器 1&#34;&gt;
            &lt;figcaption style=&#34;text-align:center;&#34;&gt;&lt;b&gt;&lt;a href=&#34;#fig:4a-ipid-ipttl-of-injector1-400-packets&#34;&gt;(a) 注入器1&lt;/a&gt;&lt;/b&gt;&lt;/figcaption&gt;
            &lt;/p&gt;
            &lt;div class=&#34;subfigure&#34; id=&#34;fig:4b-ipid-ipttl-of-injector2-400-packets&#34;&gt;
                &lt;p&gt;&lt;img src=&#34;../figures/ipid_ipttl_of_injector2_400_packets-.png&#34; alt=&#34;注入器 2&#34;&gt;
                &lt;figcaption style=&#34;text-align:center;&#34;&gt;&lt;b&gt;&lt;a href=&#34;#fig:4b-ipid-ipttl-of-injector2-400-packets&#34;&gt;(b)
                            注入器2&lt;/a&gt;&lt;/b&gt;&lt;/figcaption&gt;
                &lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&#34;subfigure&#34; id=&#34;fig:4c-ipid-ipttl-of-injector3-400-packets&#34;&gt;
                &lt;p&gt;&lt;img src=&#34;../figures/ipid_ipttl_of_injector3_400_packets-.png&#34; alt=&#34;注入器 3&#34;&gt;
                &lt;figcaption style=&#34;text-align:center;&#34;&gt;&lt;b&gt;&lt;a href=&#34;#fig:4c-ipid-ipttl-of-injector3-400-packets&#34;&gt;(c)
                            注入器3&lt;/a&gt;&lt;/b&gt;&lt;/figcaption&gt;
                &lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;figcaption&gt;&lt;span&gt;&lt;a
                    href=&#34;#fig:4-ipid-ttl-values-dns-injector-behaviors&#34;&gt;&lt;b&gt;图4&lt;/a&gt;&lt;/span&gt;: &lt;/span&gt;&lt;span&gt;
                我们测量中观察到的三种DNS注入器行为的IPID和TTL值。注入器1类似于之前在 &lt;span class=&#39;cite&#39;&gt; [&lt;a
                        href=&#39;#cite:Anonymous2014a&#39;&gt;1&lt;/a&gt;]&lt;/span&gt; 中观察到的情况。
                我们观察到第三个注入器反映了IP TTL值，导致当我们的查询的初始IP TTL值不变时，出现了固定的值。
                &lt;/b&gt;&lt;/span&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4-1&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:4.1-fingerprinting-the-injectors&#34;
        href=&#34;#sec:4.1-fingerprinting-the-injectors&#34;&gt;4.1
        &lt;/span&gt;通过指纹识别注入器&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&#39;table&#39;&gt;
    &lt;!-- l. 45 --&gt;
    &lt;p class=&#39;indent&#39;&gt; &lt;/p&gt;
    &lt;figure class=&#39;float&#39; id=&#39;x1-10001r3&#39;&gt;&lt;span
            id=&#39;tbl:3-summary-dns-injectors-dns-aa-ip-df-flags&#39;&gt;&lt;/span&gt;

        &lt;div class=&#39;tabular&#39;&gt;
            &lt;table class=&#39;tabular&#39; id=&#39;TBL-4&#39;&gt;
                &lt;colgroup id=&#39;TBL-4-1g&#39;&gt;
                    &lt;col id=&#39;TBL-4-1&#39; /&gt;
                    &lt;col id=&#39;TBL-4-2&#39; /&gt;
                    &lt;col id=&#39;TBL-4-3&#39; /&gt;
                    &lt;col id=&#39;TBL-4-4&#39; /&gt;
                    &lt;col id=&#39;TBL-4-5&#39; /&gt;
                &lt;/colgroup&gt;
                &lt;tr id=&#39;TBL-4-1-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-1-1&#39; style=&#39;white-space:nowrap; text-align:center;&#39;&gt; &lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;注入器 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-1-2&#39; style=&#39;white-space:nowrap; text-align:left;&#39;&gt; &lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;描述 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-1-3&#39; style=&#39;white-space:nowrap; text-align:center;&#39;&gt; &lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;IP数量&lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-1-4&#39; style=&#39;white-space:nowrap; text-align:center;&#39;&gt; &lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;域名数量 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-1-5&#39; style=&#39;white-space:nowrap; text-align:center;&#39;&gt; &lt;span
                            class=&#39;ptmb8t-x-x-80&#39;&gt;IP组&lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr id=&#39;TBL-4-3-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-3-1&#39; style=&#39;white-space:nowrap; text-align:center;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;1 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-3-2&#39; style=&#39;white-space:nowrap; text-align:left; border-bottom:none;&#39;&gt;
                        &lt;span class=&#39;ptmr8t-x-x-80&#39;&gt;DNS: TTL=60; AA=1 &lt;/span&gt;
                    &lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-3-3&#39; style=&#39;white-space:nowrap; text-align:center;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;4 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-3-4&#39; style=&#39;white-space:nowrap; text-align:center;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;88 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-3-5&#39; style=&#39;white-space:nowrap; text-align:center;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;4, 5, 6 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-4-4-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-4-2&#39;
                        style=&#39;white-space:nowrap; text-align:left; border-top:none; border-bottom:none;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;IP: DF=0 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-4-5-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-5-2&#39; style=&#39;white-space:nowrap; text-align:left; border-top:none;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;递增的IP TTL &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;


                &lt;tr id=&#39;TBL-4-6-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-6-1&#39; style=&#39;white-space:nowrap; text-align:center;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;2 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-6-2&#39; style=&#39;white-space:nowrap; text-align:left; border-bottom:none;&#39;&gt;
                        &lt;span class=&#39;ptmr8t-x-x-80&#39;&gt;DNS: AA=0 &lt;/span&gt;
                    &lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-6-3&#39; style=&#39;white-space:nowrap; text-align:center;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;1,506 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-6-4&#39; style=&#39;white-space:nowrap; text-align:center;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;24,729 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-6-5&#39; style=&#39;white-space:nowrap; text-align:center; border-bottom:none;&#39;&gt;
                        &lt;span class=&#39;ptmr8t-x-x-80&#39;&gt;1, 2, 3 &lt;/span&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-4-7-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-7-2&#39;
                        style=&#39;white-space:nowrap; text-align:left; border-top:none; border-bottom:none;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;IP: DF=1 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-7-5&#39; style=&#39;white-space:nowrap; text-align:center; border-top:none&#39;
                        rowspan=&#34;2&#34;&gt; &lt;span class=&#39;ptmr8t-x-x-80&#39;&gt;5, 6 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-4-8-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-8-2&#39; style=&#39;white-space:nowrap; text-align:left; border-top: none;&#39;&gt;
                        &lt;span class=&#39;ptmr8t-x-x-80&#39;&gt;随机化的IP TTL &lt;/span&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-4-9-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-9-1&#39; style=&#39;white-space:nowrap; text-align:center;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;3 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-9-2&#39; style=&#39;white-space:nowrap; text-align:left; border-bottom:none;&#39;&gt;
                        &lt;span class=&#39;ptmr8t-x-x-80&#39;&gt;DNS: AA=0 &lt;/span&gt;
                    &lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-9-3&#39; style=&#39;white-space:nowrap; text-align:center;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;958 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-9-4&#39; style=&#39;white-space:nowrap; text-align:center;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;22,948 &lt;/span&gt;&lt;/td&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-9-5&#39; style=&#39;white-space:nowrap; text-align:center;&#39; rowspan=&#34;3&#34;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;1, 2, 3, 5 &lt;/span&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-4-10-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-10-2&#39;
                        style=&#39;white-space:nowrap; text-align:left; border-top: none; border-bottom:none;&#39;&gt; &lt;span
                            class=&#39;ptmr8t-x-x-80&#39;&gt;IP: DF=0; ID=0 &lt;/span&gt;&lt;/td&gt;

                &lt;/tr&gt;
                &lt;tr id=&#39;TBL-4-11-&#39; style=&#39;vertical-align:baseline;&#39;&gt;
                    &lt;td class=&#39;td11&#39; id=&#39;TBL-4-11-2&#39; style=&#39;white-space:nowrap; text-align:left; border-top:none;&#39;&gt;
                        &lt;span class=&#39;ptmr8t-x-x-80&#39;&gt;固定的IP TTL &lt;/span&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
            &lt;/table&gt;
        &lt;/div&gt;

        &lt;figcaption class=&#39;caption&#39; style=&#34;text-align: center;&#34;&gt;&lt;span class=&#39;id&#39;&gt;&lt;a
                    href=&#34;#tbl:3-summary-dns-injectors-dns-aa-ip-df-flags&#34;&gt;表3:&lt;/a&gt;
            &lt;/span&gt;&lt;span class=&#39;content&#39;&gt;三个DNS注入器的摘要。“DNS AA”指DNS权威回答标志。“IP DF”指IP“不分段”标志。
            &lt;/span&gt;&lt;/figcaption&gt;&lt;!-- tex4ht:label?: x1-10001r3  --&gt;

    &lt;/figure&gt;
&lt;/div&gt;
&lt;figure class=&#39;figure&#39;
    id=&#34;fig:5-domains-receiving-injected-responses-combinations&#34;&gt;


    &lt;img alt=&#34;三个观察到的DNS注入器注入的不同响应组合接收到的域名数量的文氏图。&#34; src=&#39;../figures/qname_of_3_gfw_implementations-.png&#39; /&gt;
    &lt;figcaption style=&#34;text-align: center;&#34;&gt;&lt;a
            href=&#34;#fig:5-domains-receiving-injected-responses-combinations&#34;&gt;&lt;b&gt;图5&lt;/b&gt;&lt;/a&gt;: 三个观察到的DNS注入器注入的不同响应组合接收到的域名数量的文氏图。&lt;/figcaption&gt;


&lt;/figure&gt;
&lt;figure class=&#39;figure&#39; id=&#34;fig:6-cdf-censored-domains-popularity-ranking-injector&#34;&gt;


    &lt;img alt=&#39;CDF of the popularity ranking of censored domains by each injector.&#39;
        src=&#39;../figures/ranking_injectors-.png&#39; /&gt;

    &lt;figcaption style=&#34;text-align: center;&#34;&gt;&lt;span&gt;&lt;span&gt;&lt;a
                    href=&#34;#fig:6-cdf-censored-domains-popularity-ranking-injector&#34;&gt;&lt;b&gt;图6&lt;/a&gt;&lt;/span&gt;:
        &lt;/span&gt;&lt;span&gt;各注入器对被审查域名的受欢迎程度排名的累积分布。&lt;/b&gt;
        &lt;/span&gt;&lt;/figcaption&gt;


&lt;/figure&gt;
&lt;!-- l. 89 --&gt;
&lt;p class=&#39;indent&#39;&gt; 在我们的测量中，我们观察到单个DNS查询可能导致多个注入的DNS回复。经过仔细检查，我们能够根据IP不分段 (DF)、IP TTL、DNS权威回答 (AA) 和DNS TTL字段在这些多个注入的回复中识别出三种不同的指纹。&lt;a
        href=&#39;#tbl:3-summary-dns-injectors-dns-aa-ip-df-flags&#39;&gt;表3&lt;/a&gt;总结了三个注入器的指纹，&lt;a
        href=&#39;#fig:4-ipid-ttl-values-dns-injector-behaviors&#39;&gt;图4&lt;/a&gt;绘制了这三个注入器在查询被迅速连续发送时的IPID和TTL值。&lt;span class=&#39;footnote-mark&#39;&gt;&lt;a
            href=&#39;#fn:queries-are-sent-in-rapid-succession&#39;&gt;&lt;sup class=&#39;textsuperscript&#39;&gt;1&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a
        id=&#39;x1-10004f1&#39;&gt;&lt;/a&gt; 此外，我们还发现这三个注入器在格式化它们的DNS回复方面也略有不同。具体来说，注入器1在DNS回复中原样使用查询中的域，而注入器2和3使用“压缩指针” &lt;span
        class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:rfc1035&#39;&gt;19&lt;/a&gt;]&lt;/span&gt; 减少响应中查询域的重复，这可能是这些注入器在操作中使用不同代码库的迹象。
&lt;/p&gt;&lt;!-- l. 94 --&gt;

&lt;div id=&#34;footnotes&#34; class=&#34;footnotes&#34;&gt;
    &lt;ol&gt;
        &lt;li class=&#39;footnote-text&#39;&gt;
            &lt;a id=&#39;fn:queries-are-sent-in-rapid-succession&#39;&gt;&lt;/a&gt;
            &lt;span class=&#39;footnote-mark&#39;&gt;
                &lt;sup class=&#39;textsuperscript&#39;&gt;1&lt;/sup&gt;
            &lt;/span&gt;&lt;span class=&#39;footnotes-text&#39;&gt;在这个测试中，我们使用一个多线程的Python程序尽可能快地注入数据包，同时使用tcpdump来捕获响应数据包。&lt;/span&gt;
        &lt;/li&gt;
    &lt;/ol&gt;
&lt;/div&gt;

&lt;p class=&#39;indent&#39;&gt; 与之前的工作相似 &lt;span class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;1&lt;/a&gt;]&lt;/span&gt;，我们观察到注入器1在连续数据包之间具有递增的IP TTL值。然而，我们发现这个注入器在过滤的域名数量方面要少得多。&lt;a
        href=&#39;#fig:5-domains-receiving-injected-responses-combinations&#39;&gt;图5&lt;/a&gt;显示了每个注入器观察到的收到注入回复的域名数量。我们可以看到，注入器1最接近2014年观察到的注入器，仅过滤了总共88个域名。
&lt;/p&gt;&lt;!-- l. 96 --&gt;
&lt;p class=&#39;indent&#39;&gt; 有趣的是，我们没有观察到只触发注入器3的域名，它只对注入器2的域名子集进行操作。当我们考虑注入器与IP/域名组之间的关系时 (参见&lt;a
        href=&#39;#tbl:3-summary-dns-injectors-dns-aa-ip-df-flags&#39;&gt;表3&lt;!-- tex4ht:ref: tab:injectorsummary  --&gt;&lt;/a&gt;)，我们发现注入器1是唯一一个在第四个IP/域名组中过滤IP的注入器，其中有33个域名，主要属于“搜索引擎”类别
    (参见&lt;a
        href=&#39;#tbl:2-sensitive-domains-ip-groups-injectors-after-decrease&#39;&gt;表2&lt;!-- tex4ht:ref: tab:ip_grouping  --&gt;&lt;/a&gt;)。
&lt;/p&gt;&lt;!-- l. 101 --&gt;
&lt;p class=&#39;indent&#39;&gt; 虽然&lt;a
        href=&#39;#fig:5-domains-receiving-injected-responses-combinations&#39;&gt;图5&lt;/a&gt;给出了每个注入器过滤的域名数量的概念，但它并不一定反映了注入器触发的频率。为此，我们考虑了每个注入器操作的域名的受欢迎程度。 &lt;a
        href=&#39;#fig:6-cdf-censored-domains-popularity-ranking-injector&#39;&gt;图6&lt;/a&gt;显示了每个注入器相对于它们的Alexa排名对过滤域名的累积百分比。在这里，我们看到由注入器1过滤的域名往往比其他注入器过滤的域名更受欢迎。由注入器1过滤的域名中，97%包含关键字&lt;span
        class=&#39;pcrr8tn-&#39;&gt;google&lt;/span&gt;，其中90%在Alexa前350K个域中。而由注入器2和3过滤的域名中，大多数 (80%) 是 &lt;span
        class=&#39;pcrr8tn-&#39;&gt;*.blogspot&lt;/span&gt;和&lt;span class=&#39;pcrr8tn-&#39;&gt;.*tumblr&lt;/span&gt;域名，位于Alexa前100万列表的长尾中&lt;span
        class=&#39;cite&#39;&gt; [&lt;a href=&#39;#cite:scheitle2018long&#39;&gt;25&lt;/a&gt;]&lt;/span&gt;。
&lt;/p&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4-2&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:4.2-longitudinal-trends&#34;
        href=&#34;#sec:4.2-longitudinal-trends&#34;&gt;4.1
        &lt;/span&gt;纵向趋势&lt;/a&gt;&lt;/h3&gt;
&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;注入器的停止间隔。&lt;/span&gt;&lt;a
        href=&#39;#fig:7-total-injected-packets-per-day&#39;&gt;图7&lt;/a&gt;显示了每天注入的总数据包数。由于我们测量的频率，我们无法发现少于两小时的间隔。在以两小时为基础进行数据分析时，我们发现，尽管注入器2已连续工作，但注入器1和注入器3偶尔会停止工作几个小时。具体来说，注入器1的三个停止间隔分别是2019年9月18日的13:00至15:22，2019年9月19日的9:26至13:00，以及2019年9月19日的17:06至10:22。注入器3的唯一停止间隔是5月1日的2:36至8:00（北京时间）。我们注意到，实际的停止往往是我们发现的子间隔。所有这些偶尔发生的停止都持续不6小时，其中大部分发生在中国的工作时间内。&lt;/p&gt;
&lt;figure class=&#39;figure&#39;
    id=&#34;fig:7-total-injected-packets-per-day&#34;&gt;
    &lt;img alt=&#39;每天注入的总数据包数每个注入器在时间上接收。&#39; src=&#39;../figures/injected_packets_per_day_per_injector-.png&#39; /&gt;
    &lt;figcaption style=&#34;text-align: center;&#34;&gt;&lt;a
            href=&#34;#fig:7-total-injected-packets-per-day&#34;&gt;&lt;b&gt;图7&lt;/b&gt;&lt;/a&gt;：每天注入的总数据包数每个注入器在时间上接收。所有的间隔都是由于测量中的中断。&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p class=&#39;noindent&#39;&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;注入器和在&lt;/span&gt;&lt;a
        href=&#39;#fig:2-top-asns-injected-ip-addresses&#39;&gt;&lt;span
            class=&#39;ptmb8t-&#39;&gt;图2&lt;/span&gt;&lt;/a&gt;&lt;span class=&#39;ptmb8t-&#39;&gt;中看到的IP丢失之间的关系。 &lt;/span&gt;我们分析了注入器随时间使用的IP，特别是在2019年11月注入的不同IP数量减少之前和之后。减少对注入器1没有影响，因为它始终使用相同的四个不同IP。然而，注入器2和注入器3最初分别使用了958和1,506个IP来发送注入的DNS回复。在降低后，注入器2和3都使用相同的IP池（共有212个IP）来发送它们的注入DNS回复。&lt;/p&gt;
&lt;h3 class=&#34;subsectionHead&#34; id=&#34;4-3&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:4.3-localizing-the-injectors&#34;
        href=&#34;#sec:4.3-localizing-the-injectors&#34;&gt;4.3&lt;/a&gt; 定位注入器&lt;/h3&gt;
&lt;p class=&#39;noindent&#39;&gt;接下来，我们尝试定位在&lt;a href=&#39;#sec:4.1-fingerprinting-the-injectors&#39;&gt;&lt;span class=&#39;zpzccmry-&#39;&gt;§&lt;/span&gt;4.1&lt;/a&gt;中识别出的三个注入器。我们使用常用的方法发送具有递增IP
    TTL 值的数据包，直到我们收到注入的DNS回复，以确定数据包注入器位于路径上的位置 &lt;span class=&#39;cite&#39;&gt;[&lt;a href=&#39;#cite:Anonymous2014a&#39;&gt;1&lt;/a&gt;, &lt;a
            href=&#39;#cite:Lowe2007a&#39;&gt;18&lt;/a&gt;, &lt;a href=&#39;#cite:Pearce2017b&#39;&gt;23&lt;/a&gt;, &lt;a href=&#39;#cite:Sparks2012a&#39;&gt;26&lt;/a&gt;, &lt;a
            href=&#39;#cite:Xu2011a&#39;&gt;29&lt;/a&gt;]&lt;/span&gt;。对于此测试，我们关注一个触发了所有三个注入器的单个域名：&lt;span
        class=&#39;pcrr8tn-&#39;&gt;www.google.sm&lt;/span&gt;。然后，我们从美国的VPS发送针对此域的DNS查询到中国的VPS。&lt;/p&gt;
&lt;p class=&#39;indent&#39;&gt;根据这些TTL限制的探测，我们能够观察到注入器1和注入器2位于离我们美国VPS 15跳的位置。为了比较，我们的中国VPS距离美国VPS 25跳。然而，我们观察到了注入器3的异常行为，我们直到我们的探测数据包的初始TTL设置为29时才收到注入的DNS回复。考虑到我们探测数据包的目的地IP只有25跳的距离，这种行为似乎很不寻常。然而，经过进一步的检查，我们确定这种行为源自注入器3在其注入的回复中回显了探测数据包的递增TTL。&lt;/p&gt;
&lt;p class=&#39;indent&#39;&gt; &lt;a
        href=&#39;#fig:8-injector-ip-ttl-impacts-probing&#39;&gt;图8&lt;/a&gt;说明了这一现象。我们发现当探测数据包的TTL为29时，到达我们美国主机时，注入的回复的IP TTL为1。同样，当探测数据包的TTL为30时，注入回复的TTL为2，依此类推。观察到这种行为所需的精确探测TTL是&lt;span class=&#39;zptmcmr-&#39;&gt;2&lt;/span&gt;&lt;span class=&#39;zptmcmrm-&#39;&gt;n&lt;/span&gt;&lt;span
        class=&#39;zpzccmry-&#39;&gt;−&lt;/span&gt;&lt;span class=&#39;zptmcmr-&#39;&gt;1 &lt;/span&gt;，其中n是探测主机和数据包注入器之间的跳数。我们注意到，这种讨论隐含地假设了注入器和探测主机之间的路径是对称的。这种行为可能潜在地用于识别路径上的非对称路由（当使用将触发多个注入器的域名时），但我们将更深入地分析留给未来的工作。&lt;/p&gt;
&lt;p class=&#39;indent&#39;&gt;我们还比较了发送DNS查询和收到注入回复之间的时间，以了解注入器的位置。具体地，我们比较了三个注入器的延迟，并发现超过90%的时间，延迟相差不到0.2毫秒。这支持了这三个设备安装在同一物理位置的理论。&lt;/p&gt;
&lt;p class=&#39;indent&#39;&gt;我们从中国以外的七个主机（我们在美国的VPS和在荷兰、新加坡、英国、法国、加拿大和印度的云托管VM）重复了这些实验，并得到了一致的结果。&lt;/p&gt;
&lt;figure
    id=&#34;fig:8-injector-ip-ttl-impacts-probing&#34;
    class=&#34;float&#34;&gt;
    &lt;div class=&#34;figure&#34;&gt;
        &lt;div class=&#34;subfigure&#34; id=&#34;fig:8a-type3-illustration-a&#34;&gt;
            &lt;p&gt;
                &lt;img src=&#34;../figures/Type3_Illustration_a-.png&#34; alt=&#34;查询的初始IP TTL为29。&#34; style=&#34;width: 100%;&#34;&gt;
            &lt;figcaption style=&#34;text-align:center;&#34;&gt;&lt;b&gt;&lt;a href=&#34;#fig:8a-type3-illustration-a&#34;&gt;(a) 查询的初始IP TTL为29。&lt;/a&gt;&lt;/b&gt;
            &lt;/figcaption&gt;
            &lt;/p&gt;
            &lt;div class=&#34;subfigure&#34; id=&#34;fig:8b-type3-illustration-b&#34;&gt;
                &lt;p&gt;&lt;img src=&#34;../figures/Type3_Illustration_b-.png&#34; alt=&#34;查询的初始IP TTL为16。&#34; style=&#34;width: 100%;&#34;&gt;
                &lt;figcaption style=&#34;text-align:center;&#34;&gt;&lt;b&gt;&lt;a href=&#34;#fig:8b-type3-illustration-b&#34;&gt;(b) 查询的初始IP
                            TTL为16。&lt;/a&gt;&lt;/b&gt;&lt;/figcaption&gt;
                &lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;figcaption&gt;&lt;span&gt;&lt;a
                    href=&#34;#fig:8-injector-ip-ttl-impacts-probing&#34;&gt;&lt;b&gt;图8&lt;/a&gt;&lt;/span&gt;. &lt;/span&gt;&lt;span&gt;
                图示了注入器3模仿DNS查询的IP TTL如何影响有限TTL探测的结果。 &lt;a href=&#39;#fig:8a-type3-illustration-a&#39;&gt;图8a&lt;/a&gt;显示当DNS查询的IP
                TTL为29时，相应的注入数据包的TTL足够高以到达发送方。 &lt;a href=&#39;#fig:8b-type3-illustration-b&#39;&gt;图8b&lt;/a&gt;显示当DNS查询的IP TTL低于29时，伪造响应的初始IP TTL太小，无法到达发送方。
                &lt;/b&gt;&lt;/span&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;h2 class=&#34;sectionHead&#34; id=&#34;5&#34;&gt;&lt;a id=&#34;sec:5-multipath-results&#34; href=&#34;#sec:5-multipath-results&#34;&gt;5 多路径结果&lt;/a&gt;
&lt;/h2&gt;
&lt;!-- l. 4 --&gt;
&lt;p class=&#39;noindent&#39;&gt;在&lt;a href=&#39;#sec:2-methodology&#39;&gt;第2节&lt;/a&gt;中，我们描述了向3.6万个中国前缀发送DNS查询的方法。我们的目标是确认我们的结果对我们用于长期实验的主机位置的稳健性。 &lt;a
        href=&#39;#fig:9-unique-ip-prefixes-response-types-injectorx&#39;&gt;图9&lt;/a&gt;显示了结果：每个柱形对应于观察到的注入器组合，柱形的高度对应于观察到该注入器组合的前缀百分比。
&lt;/p&gt;&lt;!-- l. 8 --&gt;
&lt;p class=&#39;indent&#39;&gt;我们将我们的查询目标指向了3.6万个前缀中的62%
    ，观察到了所有三个DNS注入器的情况。我们观察到12%的情况下观察到了三个注入器中的两个，以及13%的情况下只观察到了三个注入器中的一个。对于每个IP地址，我们发送100个查询，这表明这些情况不仅仅是由于瞬时的数据包丢失导致的。我们还观察到一些注入器在这个更广泛的研究中没有出现在我们的纵向数据中（在&lt;a
        href=&#39;#fig:9-unique-ip-prefixes-response-types-injectorx&#39;&gt;图9&lt;/a&gt;中以Injector
    X表示）。总共有大约4%的前缀观察到了与我们的指纹不匹配的注入器。
&lt;/p&gt;&lt;!-- l. 14 --&gt;
&lt;p class=&#39;indent&#39;&gt;有趣的是，我们发现了8%的前缀，注册了134个自治系统（AS），其中没有触发DNS注入器。使用RIPE
    NCC的AS可见性工具，我们发现其中22%的前缀的可见性低于15%，这表明我们的查询可能永远不会到达这些前缀。对于剩下的前缀，我们使用Team
    Cymru提供的基于RIR的IP到ASN映射，并发现其中一半的前缀是注册在中国以外的地区（例如，一个中国公司在ARIN注册了一个IP地址）。在这些情况下，前缀可能位于中国以外，不受审查。值得注意的是，仍然有1027个IP前缀似乎位于中国境内，但没有观察到注入的数据包。这些IP前缀对应着120个自治系统。经过进一步检查，我们发现这些自治系统往往与技术公司或政府机构有关。
&lt;/p&gt;
&lt;figure class=&#39;figure&#39;
    id=&#34;fig:9-unique-ip-prefixes-response-types-injectorx&#34;&gt;

    &lt;img src=&#39;../figures/ipprefixes-.png&#39; alt /&gt;
    &lt;figcaption style=&#34;text-align: center;&#34;&gt;&lt;a
            href=&#34;#fig:9-unique-ip-prefixes-response-types-injectorx&#34;&gt;&lt;b&gt;图9&lt;/a&gt;: 响应不同类型的唯一IP前缀的数量。 InjectorX指的是具有与总结不同指纹的注入器。&lt;/b&gt;&lt;/figcaption&gt;

&lt;/figure&gt;
&lt;h2 class=&#34;sectionHead&#34; id=&#34;6&#34;&gt;&lt;a id=&#34;sec:6-conclusion&#34; href=&#34;#sec:6-conclusion&#34;&gt;6 结论&lt;/a&gt;&lt;/h2&gt;
&lt;!-- l. 4 --&gt;
&lt;p class=&#39;noindent&#39;&gt;
    在这项工作中，我们分析了GFW在九个月内的DNS投毒行为。我们观察到一组IP地址被用于审查特定组域名，并识别出三种不同的DNS数据包注入器。我们定位和描述了这些注入器的行为，并确定了一种模仿探测数据包TTL的注入器，这对使用TTL受限数据包来定位DNS审查具有重要意义。
&lt;/p&gt;&lt;!-- l. 11 --&gt;
&lt;p class=&#39;indent&#39;&gt;我们已经发布了我们的代码和数据集，以保持可重现性并激发未来的工作，可在&lt;a class=&#39;url&#39;
        href=&#39;https://gfw.report/publications/foci20_dns/en/&#39;&gt;https://gfw.report/publications/foci20_dns/en/&lt;/a&gt;获取。
&lt;/p&gt;&lt;!-- l. 88 --&gt;

&lt;h2 class=&#34;sectionHead&#34; id=&#34;sec:acknowledgments&#34;&gt;&lt;a id=&#34;sec:acknowledgments&#34; href=&#34;#sec:acknowledgments&#34;&gt;致谢&lt;/a&gt;
&lt;/h2&gt;
&lt;!-- l. 90 --&gt;
&lt;p class=&#39;noindent&#39;&gt;我们要感谢我们的导师Anita Nikolich对我们的认真反馈和指导。我们还要感谢Nicholas Weaver对注入器行为的有益讨论。这项工作得到了Google教师研究奖、NSF
    CAREER基金CNS1553301、NSF基金CNS1740895和CNS1719386的资助，以及开放技术基金会在信息控制奖学金下的支持。
&lt;/p&gt;
&lt;h2 class=&#34;sectionHead&#34; id=&#34;sec:references&#34;&gt;&lt;span class=&#34;titlemark&#34;&gt;&lt;/span&gt; &lt;a id=&#34;sec:references&#34; href=&#34;#sec:references&#34;&gt;引用&lt;/a&gt;
&lt;/h2&gt;

&lt;div class=&#34;bibliography&#34;&gt;
    &lt;ol class=&#34;citation-numbering&#34;&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Anonymous2014a&#34;&gt;&lt;/a&gt; Anonymous. Towards a comprehensive picture of the Great Firewall’s DNS
            censorship. In
            &lt;em&gt;Free and Open Communications on the Internet&lt;/em&gt;, USENIX, 2014.
            &lt;a class=&#34;url&#34; href=&#34;https://www.usenix.org/system/files/conference/foci14/foci14-anonymous.pdf&#34;&gt;
                https://www.usenix.org/system/files/conference/foci14/foci14-anonymous.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:gfwreport2020b&#34;&gt;&lt;/a&gt; Anonymous. GFW Archaeology: gfw-looking-glass.sh, March 2020.
            &lt;a class=&#34;url&#34;
                href=&#34;https://gfw.report/blog/gfw_looking_glass/en/&#34;&gt;https://gfw.report/blog/gfw_looking_glass/en/.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Aryan2013a&#34;&gt;&lt;/a&gt; Simurgh Aryan, Homa Aryan, and J. Alex Halderman. Internet censorship in Iran:
            A first look. In
            &lt;em&gt;Free and Open Communications on the Internet&lt;/em&gt;, USENIX, 2013.
            &lt;a class=&#34;url&#34;
                href=&#34;https://censorbib.nymity.ch/pdf/Aryan2013a.pdf&#34;&gt;https://censorbib.nymity.ch/pdf/Aryan2013a.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:rfc8020&#34;&gt;&lt;/a&gt; S. Bortzmeyer and S. Huque. NXDOMAIN: There Really Is Nothing Underneath. RFC
            8020, IETF, November 2016.
            &lt;a class=&#34;url&#34; href=&#34;https://tools.ietf.org/html/rfc8020&#34;&gt;https://tools.ietf.org/html/rfc8020.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:censored-plannet-Satellite-Iris&#34;&gt;&lt;/a&gt; CensoredPlanet: Satellite and Iris. Available at
            &lt;a class=&#34;url&#34;
                href=&#34;https://censoredplanet.org/projects/satellite&#34;&gt;https://censoredplanet.org/projects/satellite.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:as2org&#34;&gt;&lt;/a&gt; Center for Applied Internet Data Analysis. Inferred AS to Organization Mapping
            Dataset. Web page, Accessed 2020.
            &lt;a class=&#34;url&#34;
                href=&#34;https://www.caida.org/data/as-organizations/&#34;&gt;https://www.caida.org/data/as-organizations/.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:pfx2as&#34;&gt;&lt;/a&gt; Center for Applied Internet Data Analysis. Routeviews Prefix to AS mappings Dataset
            for IPv4 and IPv6. Web page, Accessed 2020.
            &lt;a class=&#34;url&#34;
                href=&#34;http://www.caida.org/data/routing/routeviews-prefix2as.xml&#34;&gt;http://www.caida.org/data/routing/routeviews-prefix2as.xml.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Chaabane2014a&#34;&gt;&lt;/a&gt; Abdelberi Chaabane, Terence Chen, Mathieu Cunche, Emiliano De Cristofaro,
            Arik Friedman, and Mohamed Ali Kaafar. Censorship in the wild: Analyzing Internet filtering in Syria. In
            &lt;em&gt;Internet Measurement Conference&lt;/em&gt;, ACM, 2014.
            &lt;a class=&#34;url&#34;
                href=&#34;http://conferences2.sigcomm.org/imc/2014/papers/p285.pdf&#34;&gt;http://conferences2.sigcomm.org/imc/2014/papers/p285.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Chai2019a&#34;&gt;&lt;/a&gt; Zimo Chai, Amirhossein Ghafari, and Amir Houmansadr. On the importance of
            encrypted-SNI (ESNI) to censorship circumvention. In
            &lt;em&gt;Free and Open Communications on the Internet&lt;/em&gt;, USENIX, 2019.
            &lt;a class=&#34;url&#34;
                href=&#34;https://www.usenix.org/system/files/foci19-paper_chai_update.pdf&#34;&gt;https://www.usenix.org/system/files/foci19-paper_chai_update.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Duan2012a&#34;&gt;&lt;/a&gt; Haixin Duan, Nicholas Weaver, Zongxu Zhao, Meng Hu, Jinjin Liang, Jian Jiang,
            Kang Li, and Vern Paxson. Hold-On: Protecting against on-path DNS poisoning. In
            &lt;em&gt;Securing and Trusting Internet Names&lt;/em&gt;, National Physical Laboratory, 2012.
            &lt;a class=&#34;url&#34;
                href=&#34;http://conferences.npl.co.uk/satin/papers/satin2012-Duan.pdf&#34;&gt;http://conferences.npl.co.uk/satin/papers/satin2012-Duan.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Farnan2016a&#34;&gt;&lt;/a&gt; Oliver Farnan, Alexander Darer, and Joss Wright. Poisoning the well –
            exploring the Great Firewall’s poisoned DNS responses. In
            &lt;em&gt;Workshop on Privacy in the Electronic Society&lt;/em&gt;, ACM, 2016.
            &lt;a class=&#34;url&#34; href=&#34;https://dl.acm.org/authorize?N25517&#34;&gt;https://dl.acm.org/authorize?N25517.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Filasto2012a&#34;&gt;&lt;/a&gt; Arturo Filastò and Jacob Appelbaum. OONI: Open observatory of network
            interference. In
            &lt;em&gt;Free and Open Communications on the Internet&lt;/em&gt;, USENIX, 2012.
            &lt;a class=&#34;url&#34;
                href=&#34;https://www.usenix.org/system/files/conference/foci12/foci12-final12.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci12/foci12-final12.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:fortinet&#34;&gt;&lt;/a&gt; FortiGuard Labs Web Filter, Accessed 2018.
            &lt;a class=&#34;url&#34; href=&#34;https://fortiguard.com/webfilter&#34;&gt;https://fortiguard.com/webfilter.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:gfwrev2009a&#34;&gt;&lt;/a&gt; gfwrev. 深入理解GFW: DNS污染, November 2009.
            &lt;a class=&#34;url&#34;
                href=&#34;https://gfwrev.blogspot.com/2009/11/gfwdns.html&#34;&gt;https://gfwrev.blogspot.com/2009/11/gfwdns.html.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Gill2015a&#34;&gt;&lt;/a&gt; Phillipa Gill, Masashi Crete-Nishihata, Jakub Dalek, Sharon Goldberg, Adam
            Senft, and Greg Wiseman. Characterizing web censorship worldwide: Another look at the OpenNet Initiative
            data. &lt;em&gt;Transactions on the Web&lt;/em&gt;, 9(1), 2015.
            &lt;a class=&#34;url&#34;
                href=&#34;https://censorbib.nymity.ch/pdf/Gill2015a.pdf&#34;&gt;https://censorbib.nymity.ch/pdf/Gill2015a.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Hoang2019a&#34;&gt;&lt;/a&gt; Nguyen Phong Hoang, Sadie Doreen, and Michalis Polychronakis. Measuring I2P
            censorship at a global scale. In
            &lt;em&gt;Free and Open Communications on the Internet&lt;/em&gt;, USENIX, 2019.
            &lt;a class=&#34;url&#34;
                href=&#34;https://www.usenix.org/system/files/foci19-paper_hoang.pdf&#34;&gt;https://www.usenix.org/system/files/foci19-paper_hoang.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:hoang2020&#34;&gt;&lt;/a&gt; Nguyen Phong Hoang, Arian Akhavan Niaki, Nikita Borisov, Phillipa Gill, and
            Michalis Polychronakis. Assessing the Privacy Benefits of Domain Name Encryption. In
            &lt;em&gt;ACM ASIACCS 2020&lt;/em&gt;.
            &lt;a class=&#34;url&#34; href=&#34;https://arxiv.org/pdf/1911.00563.pdf&#34;&gt;https://arxiv.org/pdf/1911.00563.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Lowe2007a&#34;&gt;&lt;/a&gt; Graham Lowe, Patrick Winters, and Michael L. Marcus. The great DNS wall of
            China. Technical report, New York University, 2007.
            &lt;a class=&#34;url&#34;
                href=&#34;https://censorbib.nymity.ch/pdf/Lowe2007a.pdf&#34;&gt;https://censorbib.nymity.ch/pdf/Lowe2007a.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:rfc1035&#34;&gt;&lt;/a&gt; P. Mockapetris. DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION. RFC 1035, IETF,
            November 1987.
            &lt;a class=&#34;url&#34; href=&#34;https://tools.ietf.org/html/rfc1035&#34;&gt;https://tools.ietf.org/html/rfc1035.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Nabi2013a&#34;&gt;&lt;/a&gt; Zubair Nabi. The anatomy of web censorship in Pakistan. In
            &lt;em&gt;Free and Open Communications on the Internet&lt;/em&gt;, USENIX, 2013.
            &lt;a class=&#34;url&#34;
                href=&#34;https://censorbib.nymity.ch/pdf/Nabi2013a.pdf&#34;&gt;https://censorbib.nymity.ch/pdf/Nabi2013a.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Niaki2020a&#34;&gt;&lt;/a&gt; Arian Akhavan Niaki, Shinyoung Cho, Zachary Weinberg, Nguyen Phong Hoang, Abbas
            Razaghpanah, Nicolas Christin, and Phillipa Gill. ICLab: A global, longitudinal internet censorship
            measurement platform. In
            &lt;em&gt;Symposium on Security &amp; Privacy&lt;/em&gt;, IEEE, 2020.
            &lt;a class=&#34;url&#34;
                href=&#34;https://people.cs.umass.edu/~phillipa/papers/oakland2020.pdf&#34;&gt;https://people.cs.umass.edu/~phillipa/papers/oakland2020.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Pearce2017b&#34;&gt;&lt;/a&gt; Paul Pearce, Ben Jones, Frank Li, Roya Ensafi, Nick Feamster, Nick Weaver, and
            Vern Paxson. Global measurement of DNS manipulation. In
            &lt;em&gt;USENIX Security Symposium&lt;/em&gt;, USENIX, 2017.
            &lt;a class=&#34;url&#34;
                href=&#34;https://www.usenix.org/system/files/conference/usenixsecurity17/sec17-pearce.pdf&#34;&gt;https://www.usenix.org/system/files/conference/usenixsecurity17/sec17-pearce.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:ptacek1998insertion&#34;&gt;&lt;/a&gt; Thomas H Ptacek and Timothy N Newsham. Insertion, evasion, and denial
            of service: Eluding network intrusion detection. Technical report, Secure Networks inc Calgary Alberta,
            1998.
            &lt;a class=&#34;url&#34;
                href=&#34;https://users.ece.cmu.edu/~adrian/731-sp04/readings/Ptacek-Newsham-ids98.pdf&#34;&gt;https://users.ece.cmu.edu/~adrian/731-sp04/readings/Ptacek-Newsham-ids98.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:ripe-as-visibility&#34;&gt;&lt;/a&gt; RIPE NCC AS Visibility Tool, Accessed 2020.
            &lt;a class=&#34;url&#34; href=&#34;https://stat.ripe.net&#34;&gt;https://stat.ripe.net.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:scheitle2018long&#34;&gt;&lt;/a&gt; Quirin Scheitle, Oliver Hohlfeld, Julien Gamba, Jonas Jelten, Torsten
            Zimmermann, Stephen D Strowes, and Narseo Vallina-Rodriguez. A long way to the top: Significance, structure,
            and stability of internet top lists. In
            &lt;em&gt;Proceedings of the Internet Measurement Conference 2018&lt;/em&gt;, 2018.
            &lt;a class=&#34;url&#34;
                href=&#34;https://dl.acm.org/doi/pdf/10.1145/3278532.3278574&#34;&gt;https://dl.acm.org/doi/pdf/10.1145/3278532.3278574.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Sparks2012a&#34;&gt;&lt;/a&gt; Sparks, Neo, Tank, Smith, and Dozer. The collateral damage of Internet
            censorship by DNS injection. &lt;em&gt;SIGCOMM Computer Communication Review&lt;/em&gt;, 42(3):21–27, 2012.
            &lt;a class=&#34;url&#34;
                href=&#34;http://conferences.sigcomm.org/sigcomm/2012/paper/ccr-paper266.pdf&#34;&gt;http://conferences.sigcomm.org/sigcomm/2012/paper/ccr-paper266.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:team-cymru-ip-to-asn&#34;&gt;&lt;/a&gt; Team Cymru IP to ASN Mapping Service, Accessed 2020.
            &lt;a class=&#34;url&#34;
                href=&#34;https://team-cymru.com/community-services/ip-asn-mapping/&#34;&gt;https://team-cymru.com/community-services/ip-asn-mapping/.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Verkamp2012a&#34;&gt;&lt;/a&gt; John-Paul Verkamp and Minaxi Gupta. Inferring mechanics of web censorship
            around the world. In
            &lt;em&gt;Free and Open Communications on the Internet&lt;/em&gt;, USENIX, 2012.
            &lt;a class=&#34;url&#34;
                href=&#34;https://www.usenix.org/system/files/conference/foci12/foci12-final1.pdf&#34;&gt;https://www.usenix.org/system/files/conference/foci12/foci12-final1.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Xu2011a&#34;&gt;&lt;/a&gt; Xueyang Xu, Z. Morley Mao, and J. Alex Halderman. Internet censorship in China:
            Where does the filtering occur? In
            &lt;em&gt;Passive and Active Measurement Conference&lt;/em&gt;, Springer, 2011.
            &lt;a class=&#34;url&#34;
                href=&#34;https://web.eecs.umich.edu/~zmao/Papers/china-censorship-pam11.pdf&#34;&gt;https://web.eecs.umich.edu/~zmao/Papers/china-censorship-pam11.pdf.&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class=&#34;bibitem&#34;&gt;
            &lt;a id=&#34;cite:Yan2006a&#34;&gt;&lt;/a&gt; Boru Yan, Binxing Fang, Bin Li, and Yao Wang. DNS欺骗攻击的检测和防范. 计算机工程,
            32(21):130–132, 2006.
            &lt;a class=&#34;url&#34;
                href=&#34;https://web.archive.org/web/20200726140258/https://tomcat.one/files/papers/DNS%E6%AC%BA%E9%AA%97%E6%94%BB%E5%87%BB%E7%9A%84%E6%A3%80%E6%B5%8B%E5%92%8C%E9%98%B2%E8%8C%83_%E9%97%AB%E4%BC%AF%E5%84%92.pdf&#34;&gt;https://web.archive.org/web/20200726140258/https://tomcat.one/files/papers/DNS%E6%AC%BA%E9%AA%97%E6%94%BB%E5%87%BB%E7%9A%84%E6%A3%80%E6%B5%8B%E5%92%8C%E9%98%B2%E8%8C%83_%E9%97%AB%E4%BC%AF%E5%84%92.pdf.&lt;/a&gt;
        &lt;/li&gt;
    &lt;/ol&gt;
&lt;/div&gt;</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>Exposing and Circumventing China&#39;s Censorship of ESNI</title>
        <link>https://gfw.report/blog/gfw_esni_blocking/en/</link>
        <pubDate>Fri, 07 Aug 2020 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/gfw_esni_blocking/en/</guid>
        
        <description>&lt;p&gt;On 2020-07-30, &lt;a href=&#34;https://www.iyouport.org/&#34;&gt;iyouport&lt;/a&gt; &lt;a href=&#34;https://mailarchive.ietf.org/arch/msg/tls/YzT5LjLJ_6WWhdnU2wVsKNKR6_I/&#34;&gt;reported&lt;/a&gt; (&lt;a href=&#34;https://web.archive.org/web/20200801221253/https://mailarchive.ietf.org/arch/msg/tls/YzT5LjLJ_6WWhdnU2wVsKNKR6_I/&#34;&gt;archive&lt;/a&gt;) the apparent blocking of TLS connections with the encrypted SNI (ESNI) extension in China.
iyouport says that the first occurrence of blocking was one day earlier, on 2020-07-29.&lt;/p&gt;
&lt;p&gt;We confirm that the Great Firewall (GFW) of China has recently begun blocking ESNI—one
of the foundational features of TLS 1.3 and HTTPS.  We empirically demonstrate
what triggers this censorship and how long residual censorship lasts.  We also
present several evasion strategies discovered by
&lt;a href=&#34;https://geneva.cs.umd.edu&#34;&gt;Geneva&lt;/a&gt; that can be run either client-side or
server-side to evade blocking.&lt;/p&gt;
&lt;h2 id=&#34;what-is-encrypted-server-name-indication-esni&#34;&gt;What is Encrypted Server Name Indication (ESNI)?&lt;/h2&gt;
&lt;p&gt;TLS is the foundation of secure communication on the web (HTTPS). It provides
authenticated encryption so that users can know with whom they are
communicating, and that their information cannot be read or tampered with by an
intermediary.  Although TLS hides the &lt;em&gt;content&lt;/em&gt; of a user&amp;rsquo;s communication, it
does not always hide &lt;em&gt;with whom&lt;/em&gt; the user is communicating; the TLS handshake
optionally contains a Server Name Indication (SNI) field that allows the user&amp;rsquo;s
client to inform the server which website it wishes to communicate with.
Nation-state censors have used the SNI field to block users from being able to
communicate with certain destinations.  China, for one, has long been censoring
HTTPS in this manner.&lt;/p&gt;
&lt;p&gt;TLS 1.3 introduced Encrypted SNI (ESNI) that, put simply, encrypts the SNI so
that intermediaries cannot view it.  (To learn more about ESNI and its
benefits, see &lt;a href=&#34;https://blog.cloudflare.com/encrypted-sni/&#34;&gt;Cloudflare&amp;rsquo;s
article&lt;/a&gt;).  ESNI has &lt;a href=&#34;https://www.usenix.org/system/files/foci19-paper_chai_update.pdf&#34;&gt;the potential
to complicate nation-states&amp;rsquo; abilities to censor HTTPS content&lt;/a&gt;; rather than be
able to block only connections to specific websites, ESNI would require censors
to block all TLS connections to specific servers.  We do confirm that this is now
happening in China!&lt;/p&gt;
&lt;h2 id=&#34;our-main-findings&#34;&gt;Our Main Findings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The GFW blocks ESNI connections by dropping packets from client to server.&lt;/li&gt;
&lt;li&gt;The blocking can be triggered bidirectionally.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;0xffce&lt;/code&gt; extension is necessary to trigger the blocking.&lt;/li&gt;
&lt;li&gt;The blocking can happen on all ports from 1 to 65535.&lt;/li&gt;
&lt;li&gt;Once the GFW blocks a connection, it will continue blocking all traffic associated with the 3-tuples of (srcIP, dstIP, dstPort) for 120 or 180 seconds.&lt;/li&gt;
&lt;li&gt;We have discovered 6 client-side and 4 server-side evasion strategies.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;how-do-we-know-these&#34;&gt;How Do We Know These?&lt;/h2&gt;
&lt;p&gt;We have made a simple Python program that performs the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;completes a TCP handshake with a specified server;&lt;/li&gt;
&lt;li&gt;and then sends a TLS ClientHello message with an ESNI extension; the fingerprint of the ClientHello is as normal as what Firefox 79.0 would send.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The program sends ClientHellos with ESNI both inside-out and outside-in, while
capturing traffic on both sides for analysis. The servers to which we send
ClientHellos complete the TCP handshake, but they do not send any data packets
back to the client, nor do  they are first to close the connection.  All
experiments were conducted between July 30th and August 6st.&lt;/p&gt;
&lt;h2 id=&#34;details-about-the-blocking&#34;&gt;Details About the Blocking&lt;/h2&gt;
&lt;h3 id=&#34;blocking-by-dropping-packets-not-injecting-rsts&#34;&gt;Blocking by dropping packets, not injecting RSTs&lt;/h3&gt;
&lt;p&gt;Comparing the traffic captured on both endpoints,
we find the GFW blocks ESNI connections by dropping packets from clients to servers.&lt;/p&gt;
&lt;p&gt;This has two differences from how the GFW censors other commonly-used
protocols.  First, the GFW censors (non-encrypted) SNI and HTTP by injecting
forged TCP RSTs to both server and client; conversely, we have observed no
injected packets from the GFW to censor ESNI traffic.  Second, the GFW drops
traffic from server to client to block Tor and &lt;a href=&#34;https://gfw.report/blog/gfw_shadowsocks&#34;&gt;Shadowsocks&lt;/a&gt; servers; however, it
drops only client-to-server packets when censoring ESNI.&lt;/p&gt;
&lt;p&gt;We further note the GFW does not distinguish the flags of TCP packets when
dropping them.  (This is different from some censorship systems in Iran which do
not drop packets with RST or FIN flags.)&lt;/p&gt;
&lt;h3 id=&#34;the-blocking-can-be-triggered-bidirectionally&#34;&gt;The blocking can be triggered bidirectionally&lt;/h3&gt;
&lt;p&gt;We find the blocking can be triggered bidirectionally.  In other words, sending
an ESNI handshake from outside the firewall to inside can get blocked in the
same way as sending it inside-out.&lt;/p&gt;
&lt;p&gt;Thanks to this bidirectional feature, one can test this ESNI-based censorship
remotely from the outside of the GFW without having control of any Chinese
server.  The GFW&amp;rsquo;s censorship on DNS, HTTP, SNI, FTP, SMTP, and Shadowsocks can
also be measured outside-in.&lt;/p&gt;
&lt;h4 id=&#34;the-gfw-censors-esni-but-not-omit-sni&#34;&gt;The GFW censors ESNI, but not omit-SNI&lt;/h4&gt;
&lt;p&gt;We confirm a TLS ClientHello without ESNI/SNI extensions cannot trigger the
blocking.  In other words, the &lt;code&gt;0xffce&lt;/code&gt; payload of the &lt;code&gt;encrypted_server_name&lt;/code&gt;
extension is necessary to trigger the blocking.&lt;/p&gt;
&lt;p&gt;We tested this by replacing the &lt;code&gt;0xffce&lt;/code&gt; in a triggering ClientHello with &lt;code&gt;0x7777&lt;/code&gt;.
After the replacement, sending such a ClientHello could not trigger the blocking
anymore.&lt;/p&gt;
&lt;p&gt;This confirmation is important because some censors have been observed blocking &lt;a href=&#34;https://github.com/net4people/bbs/issues/10#issuecomment-532035677&#34;&gt;any ClientHello message without the SNI extension&lt;/a&gt;,
which would result in the blocking of both ESNI and &lt;a href=&#34;https://tlsfingerprint.io/static/frolov2019.pdf&#34;&gt;omitting-SNI&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;new-extension-values-are-not-blocked&#34;&gt;New extension values are not blocked&lt;/h4&gt;
&lt;p&gt;As informed by an anonymous reviewer on the &lt;a href=&#34;https://pad.riseup.net/p/xCRfphD5CoxmbFcpc1s2&#34;&gt;riseup pad&lt;/a&gt;,
the currently deployed ESNI uses extension value &lt;code&gt;0xffce&lt;/code&gt; (see &lt;a href=&#34;https://datatracker.ietf.org/doc/html/draft-ietf-tls-esni-01&#34;&gt;Section 8.1&lt;/a&gt;).
However, the newer ECH uses extension value &lt;code&gt;0xff02&lt;/code&gt;, &lt;code&gt;0xff03&lt;/code&gt; and &lt;code&gt;0xff04&lt;/code&gt;(&lt;a href=&#34;https://datatracker.ietf.org/doc/html/draft-ietf-tls-esni-07&#34;&gt;Section 11.1&lt;/a&gt;).
We confirm no censorship has been observed on these extension values yet.&lt;/p&gt;
&lt;p&gt;Specifically,
we replace the &lt;code&gt;0xffce&lt;/code&gt; in a triggering ClientHello with the values of &lt;code&gt;0xff02&lt;/code&gt;, &lt;code&gt;0xff03&lt;/code&gt;, and &lt;code&gt;0xff04&lt;/code&gt; respectively.
And no blocking is observed after sending such modified ClientHellos.&lt;/p&gt;
&lt;h4 id=&#34;a-complete-tcp-handshake-is-required-before-triggering-the-blocking&#34;&gt;A complete TCP handshake is required before triggering the blocking&lt;/h4&gt;
&lt;p&gt;We find a complete TCP handshake is necessary in order to trigger the ESNI blocking.&lt;/p&gt;
&lt;p&gt;We conducted two experiments from the outside to a server in China.
In the first experiment,
without sending any &lt;code&gt;SYN&lt;/code&gt; packet,
our client sent one naked ClientHello message with ESNI extension every 2 seconds.
In the second experiment,
our client sent a &lt;code&gt;SYN&lt;/code&gt; packet and a ClientHello message with ESNI extension;
but the server would not respond with any packet (not even to complete the TCP three-way handshake).&lt;/p&gt;
&lt;p&gt;In total, we sent 10 ClientHello messages in each experiment.
The result shows no blocking or residual censorship was ever triggered; all ClientHello messages reached the server.
This means a TCP handshake is necessary before triggering ESNI-based censorship.
It also indicates, similar to the SNI-based censorship by the GFW, the censorship machine for ESNI is stateful.&lt;/p&gt;
&lt;h4 id=&#34;the-blocking-can-happen-on-all-ports&#34;&gt;The blocking can happen on all ports&lt;/h4&gt;
&lt;p&gt;We find the ESNI blocking can happen not only on port 443,
but on &lt;em&gt;all&lt;/em&gt; ports from 1 to 65535.&lt;/p&gt;
&lt;p&gt;Specifically, we sent two ESNI handshakes in a row to the port 1-65535 of a Chinese server from the outside.  For each port, we first sent an
ESNI handshake; then after the connection timeout (after 20 seconds), we tried
to complete a TCP handshake with the server again. If we do not receive any
&lt;code&gt;SYN+ACK&lt;/code&gt; from the server the second time, we consider the censorship occurred on
that port.  As a result, the ESNI blocking was observed on all ports from 1 to
65535.&lt;/p&gt;
&lt;p&gt;This feature allows us to test ESNI censorship efficiently, as we can conduct
testings on multiple ports of the same IP address simultaneously.&lt;/p&gt;
&lt;h3 id=&#34;residual-censorship&#34;&gt;Residual Censorship&lt;/h3&gt;
&lt;p&gt;We find that the GFW employs &amp;ldquo;residual censorship&amp;rdquo; of ESNI connections. This means
that, for some amount of time after triggering censorship for a given connection,
it will continue blocking &lt;em&gt;any&lt;/em&gt; connections with the same 3-tuple of source IP, destination IP, and destination port.&lt;/p&gt;
&lt;p&gt;The precise duration of residual censorship appears to vary by vantage point.
We observed residual censorship for 120 seconds at two of our vantage points,
and 180 seconds at another vantage point.&lt;/p&gt;
&lt;p&gt;Sending additional ESNI handshakes during residual censorship time does &lt;em&gt;not&lt;/em&gt; reset the timer of the censoring machine.
This is similar to the previously observed residual censorship on SNI-based blocking of the GFW.
(Conversely, each additional packet set while residual censorship in effect in
&lt;a href=&#34;https://geneva.cs.umd.edu/posts/iran-whitelister/&#34;&gt;Iran resets the timer&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;These findings are partially based on the following experiment.
From the outside, we sent one ClientHello message per second to port 443 of a
Chinese server.  The 1st, 2nd, and 121st TCP handshakes were accepted.
All other handshake attempts were unsuccessful because the &lt;code&gt;SYN&lt;/code&gt;s did not
reach the server.&lt;/p&gt;
&lt;p&gt;This result shows, similar to previously discovered SNI-based residual censorship,
the GFW also employs residual censorship for ESNI.
In addition, the fact that second handshake could complete means that it takes at least 1 second for the GFW to react and enable the blocking rules.&lt;/p&gt;
&lt;h2 id=&#34;how-can-we-circumvent-the-blocking&#34;&gt;How Can We Circumvent the Blocking?&lt;/h2&gt;
&lt;!-- callout section open --&gt;
&lt;p&gt;&lt;strong&gt;Geneva (&lt;em&gt;Gen&lt;/em&gt;etic &lt;em&gt;Eva&lt;/em&gt;sion)&lt;/strong&gt; is a genetic algorithm developed by those of
us at the University of Maryland that automatically discovers new censorship
evasion strategies.  Geneva manipulates packet streams—injecting, altering,
fragmenting, and dropping packets—in a manner that bypasses censorship without
impacting the original underlying connection.  Unlike most other anti-censorship
systems, Geneva does not require deployment at both sides of the connection:
it runs exclusively at one side (client or server).&lt;/p&gt;
&lt;p&gt;Geneva trains its genetic algorithm against live censors, and to date has found
dozens of censorship evasion strategies in various countries.  Geneva&amp;rsquo;s
strategies are expressed in a domain-specific language.  Details of the
language, along with the entire Geneva codebase, are available at the &lt;a href=&#34;https://github.com/kkevsterrr/geneva&#34;&gt;Geneva
GitHub repository&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To learn more about how Geneva (or the Geneva strategy engine) works under the
hood, see
our &lt;a href=&#34;https://geneva.cs.umd.edu/papers&#34;&gt;papers&lt;/a&gt; or &lt;a href=&#34;https://geneva.cs.umd.edu/about&#34;&gt;about&lt;/a&gt; page.&lt;/p&gt;
&lt;!-- callout section close --&gt;
&lt;p&gt;To allow Geneva to train directly against the GFW&amp;rsquo;s ESNI censorship, we wrote
a custom plugin that performs the following steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Geneva starts a TCP server on a random open port on a vantage point located outside of China. By randomizing our ports, we do not need to worry about residual censorship.&lt;/li&gt;
&lt;li&gt;Geneva drives a TCP client located inside of China to connect to the server.&lt;/li&gt;
&lt;li&gt;The client sends a TLS 1.3 ClientHello with the Encrypted SNI extension.&lt;/li&gt;
&lt;li&gt;The client sleeps for 2 seconds to allow the GFW censorship to kick in.&lt;/li&gt;
&lt;li&gt;The client sends a short test message &lt;code&gt;&amp;quot;test&amp;quot;&lt;/code&gt; to test if it has been censored.&lt;/li&gt;
&lt;li&gt;Steps 4 &amp;amp; 5 are repeated.&lt;/li&gt;
&lt;li&gt;The server confirms that it receives both the full TLS ClientHello from the client and the test messages. If it does, the strategy is rewarded with a positive fitness; if not (or if the client timed out while sending its test messages), the strategy is punished.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;With this, Geneva discovered multiple evasion strategies &lt;em&gt;in just a few hours&lt;/em&gt;.
We describe them in detail below.&lt;/p&gt;
&lt;p&gt;The Geneva strategy engine is open source on &lt;a href=&#34;http://github.com/kkevsterrr/geneva&#34;&gt;our
Github&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;All of these strategies can be run with our open-source Geneva strategy engine (&lt;a href=&#34;http://github.com/kkevsterrr/geneva&#34;&gt;repository&lt;/a&gt;).  Since they operate at the TCP layer, they can be
applied to any application that needs to use ESNI: with Geneva running, even an
unmodified web browser can become a simple censorship evasion tool.&lt;/p&gt;
&lt;p&gt;Note that Geneva is &lt;em&gt;not&lt;/em&gt; designed as a general purpose evasion tool, and does
not provide any additional encryption, privacy, or protection. It is a research
prototype and it is not optimized for speed. Use these strategies at your own
risk.&lt;/p&gt;
&lt;h3 id=&#34;evasion-strategies&#34;&gt;Evasion strategies&lt;/h3&gt;
&lt;p&gt;We trained Geneva over the span of 48 hours, both client- and server-side. In
total, we discovered 6 strategies to defeat the ESNI censorship: 4 that work
from the server, and 6 that work from the client.&lt;/p&gt;
&lt;p&gt;The following are TCP-layer strategies that can defeat the ESNI censorship when applied exclusively at the client-side.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Strategy 1: Triple &lt;code&gt;SYN&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The first client strategy works by initiating the TCP 3-way handshake with
&lt;em&gt;three&lt;/em&gt; &lt;code&gt;SYN&lt;/code&gt; packets, such that the sequence number of the third &lt;code&gt;SYN&lt;/code&gt; is
corrupted.&lt;/p&gt;
&lt;p&gt;In Geneva&amp;rsquo;s syntax, this strategy looks like this: &lt;code&gt;[TCP:flags:S]-duplicate(duplicate,tamper{TCP:seq:corrupt})-| \/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This strategy performs a desynchronization attack against the Great Firewall.
The GFW synchronizes on the corrupt sequence number, so it misses the ESNI
request.&lt;/p&gt;
&lt;p&gt;This strategy can also be applied from the server-side:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;[TCP:flags:SA]-tamper{TCP:flags:replace:S}(duplicate(duplicate,tamper{TCP:seq:corrupt}),)-| \/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Although this strategy makes it so the server never sends a &lt;code&gt;SYN+ACK&lt;/code&gt; packet,
this does not break the three-way handshake. During the three-way handshake,
instead of the server sending a &lt;code&gt;SYN+ACK&lt;/code&gt; packet as usual, the server instead
sends three &lt;code&gt;SYN&lt;/code&gt; packets (the third with a corrupt sequence number).&lt;/p&gt;
&lt;p&gt;The first &lt;code&gt;SYN&lt;/code&gt; packet serves to initiate a TCP Simultaneous Open, an archaic
feature of TCP supported by all major operating systems to handle the case in
which two TCP stacks send a &lt;code&gt;SYN&lt;/code&gt; packet at the same time. When the client
receives a &lt;code&gt;SYN&lt;/code&gt; from the server, the &lt;em&gt;client&lt;/em&gt; sends a &lt;code&gt;SYN+ACK&lt;/code&gt; packet, and
server responds with an &lt;code&gt;ACK&lt;/code&gt; to complete the handshake. This effectively
changes the traditional three-way handshake to a four-way handshake. The &lt;code&gt;SYN&lt;/code&gt;
with the corrupt sequence number causes the GFW to desynchronize (but is ignored
by the client), successfully defeating censorship without harming the
connection.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Strategy 2: Four Byte Segmentation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The next strategy we discover can also be used from client or server. In this
strategy, the client sends the ESNI request across two TCP segments, such that
the first TCP segment is less than or equal to 4 bytes long.&lt;/p&gt;
&lt;p&gt;From the client-side, in Geneva&amp;rsquo;s syntax this strategy looks like this: &lt;code&gt;[TCP:flags:PA]-fragment{tcp:4:True}-| \/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This is not the first time Geneva has discovered segmentation strategies, but
it is surprising that this strategy works in China. The Great Firewall has
been famous for its ability to reassemble TCP segments for almost a decade now (see
&lt;a href=&#34;https://github.com/NullHypothesis/brdgrd&#34;&gt;brdgrd&lt;/a&gt;). The TLS header is 5 bytes
long, so by segmenting specifically the TLS header across multiple packets, we hypothesize
this breaks the GFW&amp;rsquo;s ability to protocol fingerprint ESNI packet as TLS. This
has interesting implications for how the GFW fingerprints connections: it
suggests the component of the GFW that performs connection fingerprinting
cannot reassemble TCP segments for all protocols. This theory is supported by
other segmentation-based strategies identified by Geneva in the past (see &lt;a href=&#34;https://geneva.cs.umd.edu/papers/come-as-you-are.pdf&#34;&gt;this
paper&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;This strategy can also be triggered from the server-side. By reducing the TCP
window size during the 3-way handshake, a server can force the client to segment
their request. In Geneva&amp;rsquo;s syntax, this can be accomplished with:
&lt;code&gt;[TCP:flags:SA]-tamper{TCP:window:replace:4}-| \/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Strategy 3: TCB Teardown&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The next strategy is a classic TCB (TCP Control Block) Teardown: the client injects a &lt;code&gt;RST&lt;/code&gt; packet
with a broken checksum into the connection. This tricks the GFW into thinking
the connection has been torn down.&lt;/p&gt;
&lt;p&gt;In Geneva&amp;rsquo;s syntax, this strategy looks like: &lt;code&gt;[TCP:flags:A]-duplicate(,tamper{TCP:flags:replace:RA}(tamper{TCP:chksum:corrupt},))-| \/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;TCB Teardowns are not new: they were demonstrated almost a decade ago by &lt;a href=&#34;https://www.usenix.org/conference/foci13/workshop-program/presentation/khattak&#34;&gt;Khattak
et al.&lt;/a&gt;,
and Geneva has discovered &lt;a href=&#34;https://geneva.cs.umd.edu/papers/geneva_ccs19.pdf&#34;&gt;Teardown
attacks&lt;/a&gt; repeatedly in the
past against the GFW.&lt;/p&gt;
&lt;p&gt;Surprisingly, this strategy also can be induced from the server-side.
During the three-way handshake, the server can send a &lt;code&gt;SYN+ACK&lt;/code&gt; packet with a
corrupt acknowledgement number, thereby inducing the client to send a &lt;code&gt;RST&lt;/code&gt;.
This causes the &lt;code&gt;RST&lt;/code&gt; to have an incorrect sequence number (and an
acknowledgement number of 0, but it still is sufficient to cause a TCB Teardown.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Strategy 4: &lt;code&gt;FIN+SYN&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The next strategy appears to be another desychronization attack, but via a
different attack vector. In this strategy, the client (or the server) sends a
packet with the &lt;code&gt;FIN&lt;/code&gt; and &lt;code&gt;SYN&lt;/code&gt; flags both set during the three-way handshake.
For the client, in Geneva&amp;rsquo;s syntax: &lt;code&gt;[TCP:flags:A]-duplicate(tamper{TCP:flags:replace:FS},)-| \/&lt;/code&gt;
For the server, in Geneva&amp;rsquo;s syntax: &lt;code&gt;[TCP:flags:SA]-duplicate(tamper{TCP:flags:replace:FS},)-| \/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;In the past, we&amp;rsquo;ve found the GFW against other protocols has special handling
for &lt;code&gt;FIN&lt;/code&gt; packets when it comes to resynchronization. In this case, it looks
like the presence of the &lt;code&gt;FIN&lt;/code&gt; causes the GFW to immediately resynchronize, but
the presence of the &lt;code&gt;SYN&lt;/code&gt; causes it to think the actual seqno is &lt;code&gt;+1&lt;/code&gt; from the
actual value, making the GFW off by 1 from the real connection.&lt;/p&gt;
&lt;p&gt;We tested this hypothesis by incrementing the sequence number of the actual
request by 1 while this strategy was running, and saw that the client got censored.&lt;/p&gt;
&lt;p&gt;From the server-side, the &lt;code&gt;FIN&lt;/code&gt; flag is not required for this strategy to work.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Strategy 5: TCB Turnaround&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The TCB Turnaround strategy is simple: before the client initiates the three-way handshake, it first sends a &lt;code&gt;SYN+ACK&lt;/code&gt; packet to the server. The &lt;code&gt;SYN+ACK&lt;/code&gt; causes the GFW to confuse the roles of the client and server, thereby allowing the client to communicate unimpeded. TCB Turnaround attacks still work in Kazakhstan, but turnaround attacks do not work against the GFW for any other protocols.&lt;/p&gt;
&lt;p&gt;In Geneva&amp;rsquo;s syntax: &lt;code&gt;[TCP:flags:S]-duplicate(tamper{TCP:flags:replace:SA},)-| \/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This strategy is client-only, since by the time the &lt;code&gt;SYN&lt;/code&gt; packet arrives at the server, the censor already knows which side is the client.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Strategy 6: TCB Desynchronization&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Finally, Geneva identified simple payload-based TCB desynchronization. From the client, injecting a packet with a payload and a broken checksum is sufficient to desynchronize the GFW from the connection. Geneva has identified these in the past against the GFW&amp;rsquo;s censorship of other protocols as well.&lt;/p&gt;
&lt;p&gt;In Geneva&amp;rsquo;s syntax: &lt;code&gt;[TCP:flags:A]-duplicate(tamper{TCP:load:replace:AAAAAAAAAA}(tamper{TCP:chksum:corrupt},),)-|&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This strategy cannot be used from the server-side.&lt;/p&gt;
&lt;h3 id=&#34;summary-on-circumvention-strategies&#34;&gt;Summary on Circumvention Strategies&lt;/h3&gt;
&lt;p&gt;In total, we have discovered 6 strategies that work from the client-side, and 4
that work from the server-side. Each of these works with near 100% reliability,
and can be used to evade the ESNI censorship. Unfortunately, these specific
strategies may not be a long-term solution: as the cat and mouse game progresses,
the Great Firewall will likely to continue to improve its censorship
capabilities.&lt;/p&gt;
&lt;h2 id=&#34;unresolved-questions&#34;&gt;Unresolved Questions&lt;/h2&gt;
&lt;p&gt;It is not yet clear why we observe different durations of residual censorship
from different vantage points.  As with all such research, it is also possible
that there are some regions of China that are affected in different ways than
our vantage points.  If you observe different behavior or that some of our
evasion strategies do not work, please feel free to contact us!&lt;/p&gt;
&lt;h2 id=&#34;thanks&#34;&gt;Thanks&lt;/h2&gt;
&lt;p&gt;We want to thank all anonymous reviewers who offered us valuable and immediate questions, feedback and suggestions on the &lt;a href=&#34;https://pad.riseup.net/p/xCRfphD5CoxmbFcpc1s2&#34;&gt;riseup pad&lt;/a&gt;.
These comments guided us to prioritize the questions that interest the community the most;
and thus greatly accelerated our research.&lt;/p&gt;
&lt;p&gt;We are also thankful to the OONI and OTF community for all of their support.&lt;/p&gt;
&lt;h2 id=&#34;contacts&#34;&gt;Contacts&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://geneva.cs.umd.edu/people/&#34;&gt;Geneva team&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kevin Bock (&lt;a href=&#34;https://geneva.cs.umd.edu/keys/kevin_pgp.asc&#34;&gt;PGP key&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cs.umd.edu/~dml&#34;&gt;Dave Levin&lt;/a&gt; (&lt;a href=&#34;https://geneva.cs.umd.edu/keys/dave_pgp.asc&#34;&gt;PGP key&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://gfw.report&#34;&gt;GFW Report&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Anonymous (&lt;a href=&#34;https://gfw.report/gfw_report.asc&#34;&gt;PGP key&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://people.cs.umass.edu/~amir&#34;&gt;Amir Houmansadr&lt;/a&gt; (&lt;a href=&#34;https://people.cs.umass.edu/~amir/Amir%20Houmansadr%20(3C599DC4)%20%E2%80%93%20Public.asc&#34;&gt;PGP key&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://www.iyouport.org/&#34;&gt;iYouPort&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;onoketa (&lt;a href=&#34;http://keys.gnupg.net/pks/lookup?op=get&amp;amp;search=0xF93249C1AFD15196&#34;&gt;PGP key&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This report first appeared on &lt;a href=&#34;https://geneva.cs.umd.edu/posts/china-censors-esni/esni/&#34;&gt;censorship.ai&lt;/a&gt;. We maintain an up-to-date copy of the report on &lt;a href=&#34;https://www.iyouport.org/%e6%8a%a5%e5%91%8a%ef%bc%9a%e4%b8%ad%e5%9b%bd%e7%9a%84%e9%98%b2%e7%81%ab%e9%95%bf%e5%9f%8e%e5%b7%b2%e7%bb%8f%e5%b0%81%e9%94%81%e5%8a%a0%e5%af%86%e6%9c%8d%e5%8a%a1%e5%99%a8%e5%90%8d%e7%a7%b0%e6%8c%87/&#34;&gt;iyouport.org&lt;/a&gt;, &lt;a href=&#34;https://gfw.report/blog/gfw_esni_blocking/en/&#34;&gt;gfw.report&lt;/a&gt;, &lt;a href=&#34;https://github.com/net4people/bbs/issues/43&#34;&gt;net4people&lt;/a&gt; and &lt;a href=&#34;https://ntc.party/t/exposing-and-circumventing-chinas-censorship-of-esni/611/2&#34;&gt;ntc.party&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This report first appeared on &lt;a href=&#34;https://gfw.report/blog/gfw_looking_glass/en/&#34;&gt;GFW Report&lt;/a&gt;. We also maintain an up-to-date copy of the report on both &lt;a href=&#34;https://github.com/net4people/bbs/issues/25&#34;&gt;net4people&lt;/a&gt; and &lt;a href=&#34;https://ntc.party/t/gfw-archaeology-gfw-looking-glass-sh/394&#34;&gt;ntc.party&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We encourage you to share your comments publicly or privately. Our private contact information can be found at the footer of &lt;a href=&#34;https://gfw.report/&#34;&gt;GFW Report&lt;/a&gt;.&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>揭示和规避中国对加密SNI（ESNI）的封锁</title>
        <link>https://gfw.report/blog/gfw_esni_blocking/zh/</link>
        <pubDate>Fri, 07 Aug 2020 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/gfw_esni_blocking/zh/</guid>
        
        <description>&lt;p&gt;&lt;a href=&#34;https://www.iyouport.org&#34;&gt;iyouport&lt;/a&gt;于2020年7月30日&lt;a href=&#34;https://mailarchive.ietf.org/arch/msg/tls/YzT5LjLJ_6WWhdnU2wVsKNKR6_I/&#34;&gt;报告&lt;/a&gt; (&lt;a href=&#34;https://web.archive.org/web/20200801221253/https://mailarchive.ietf.org/arch/msg/tls/YzT5LjLJ_6WWhdnU2wVsKNKR6_I/&#34;&gt;存档&lt;/a&gt;)中国封锁了带有ESNI扩展的TLS连接。
iyouport称初次封锁见于2020年7月29日。&lt;/p&gt;
&lt;p&gt;我们确认中国的防火长城（GFW）已经开始封锁ESNI这一TLS1.3和HTTPS的基础特性。我们在本文中实证性地展示如何触发审查，并研究&amp;quot;残余审查&amp;quot;的延续时长。
我们还将展示7种用&lt;a href=&#34;https://geneva.cs.umd.edu&#34;&gt;Geneva&lt;/a&gt;发现的基于客户端或服务端的绕过审查策略。&lt;/p&gt;
&lt;h2 id=&#34;什么是加密服务器名称指示esni&#34;&gt;什么是加密服务器名称指示（ESNI）？&lt;/h2&gt;
&lt;p&gt;TLS是网络通讯的安全基础（HTTPS）。TLS提供的认证加密使得用户可以确定他们在与谁通讯，
并确保通讯信息不被中间人看到或篡改。
虽然TLS可以隐藏用户通讯的&lt;em&gt;内容&lt;/em&gt;，但其并不能总是隐藏与用户通讯的&lt;em&gt;对象&lt;/em&gt;。
比如TLS握手可以携带一个叫做加密服务器名称指示（SNI）的扩展,
这个扩展帮助客户端告诉服务器其想要访问的网站的域名。
包括中国在内的审查者利用这一扩展来检查并阻止用户访问特定的网站。&lt;/p&gt;
&lt;p&gt;TLS1.3引入了加密SNI（ESNI）。
简而言之就是用加密了的SNI阻止中间人查看客户端要访问的特定网站。
（更多ESNI的益处请见&lt;a href=&#34;https://blog.cloudflare.com/encrypted-sni/&#34;&gt;Cloudflare的介绍文章&lt;/a&gt;）。
ESNI&lt;a href=&#34;https://www.usenix.org/system/files/foci19-paper_chai_update.pdf&#34;&gt;有让审查HTTPS流量变得更加困难的潜能&lt;/a&gt;;
因为不知道用户使用ESNI访问的网站，审查者要么不封锁任何ESNI连接，要么封锁所有的ESNI连接。
我们现在确认中国的审查者选择了后者。&lt;/p&gt;
&lt;!-- 加密SNI是TLS 1.3的一个扩展，它可以对服务器名称指示（SNI）字段进行加密，以防止你的网络路径上的任何人（咖啡店、ISP、国家等）看到这个字段的内容。SNI字段目前被TLS 1.2客户端用来（以明文）宣布用户希望看到的站点；这是为了让承载多个TLS站点的服务器能够提供正确的证书。因为未加密，SNI为国家提供了一种审查HTTPS的机制。 要了解更多关于ESNI及其好处，请参见Cloudflare关于ESNI的文章：https://blog.cloudflare.com/encrypted-sni/。 --&gt;
&lt;h2 id=&#34;主要结论&#34;&gt;主要结论&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;GFW通过丢弃从客户端到服务器的数据包来阻止ESNI连接。&lt;/li&gt;
&lt;li&gt;封锁可以从GFW内外双向触发。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;0xffce&lt;/code&gt;扩展标识是触发封堵的必要条件。&lt;/li&gt;
&lt;li&gt;封锁可以发生在1到65535的所有端口上。&lt;/li&gt;
&lt;li&gt;一旦GFW阻断了一个连接，残留的审查就会继续阻断与（原IP，目标IP，目标端口）三元组相关的所有TCP流量，持续120或180秒。&lt;/li&gt;
&lt;li&gt;我们已经发现了6种可以部署于客户端和4种可以部署于服务端的规避策略。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;我们是怎么知道的&#34;&gt;我们是怎么知道的？&lt;/h2&gt;
&lt;p&gt;我们写了一个简单的Python程序，它可以：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;完成与指定服务器的TCP握手；&lt;/li&gt;
&lt;li&gt;然后发送一个带有ESNI扩展名的TLS ClientHello消息；ClientHello的指纹和Firefox 79.0所发送的一样正常。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;我们让程序发送带有ESNI的ClientHello消息。我们既尝试了从墙内向墙外发送，也尝试了从墙外向墙内发送。我们同时采集客户端和服务端两边的流量进行分析，我们确保发送ClientHello的服务器会完成TCP握手，但不会向客户端发送任何数据包，也不会首先关闭连接。所有的实验都在7月30日到8月6日之间进行。&lt;/p&gt;
&lt;h2 id=&#34;关于封锁的细节&#34;&gt;关于封锁的细节&lt;/h2&gt;
&lt;h3 id=&#34;通过丢弃数据包来阻止而不是注入rst&#34;&gt;通过丢弃数据包来阻止，而不是注入RST&lt;/h3&gt;
&lt;p&gt;对比两端捕获的流量，我们发现GFW通过丢弃从客户端到服务器的数据包来阻止ESNI连接。&lt;/p&gt;
&lt;p&gt;这与GFW对其他常用协议的阻断方式有两点不同。
首先，GFW审查SNI和HTTP的方式是向服务器和客户端注入伪造的TCP RST。但是我们没有观察到GFW注入任何数据包来阻断ESNI流量。其次，GFW通过丢弃&lt;em&gt;服务器到客户端&lt;/em&gt;的流量封锁Tor和&lt;a href=&#34;https://gfw.report/blog/gfw_shadowsocks&#34;&gt;Shadowsocks&lt;/a&gt;服务器的端口和IP；然而，GFW会丢弃&lt;em&gt;客户端到服务器&lt;/em&gt;的ESNI流量。&lt;/p&gt;
&lt;p&gt;我们还注意到，GFW在丢弃TCP包时，并不区分TCP包的标志。（这与伊朗的一些审查系统不同，后者不丢弃带有RST或FIN标志的数据包。）&lt;/p&gt;
&lt;h3 id=&#34;封堵可以双向触发&#34;&gt;封堵可以双向触发&lt;/h3&gt;
&lt;p&gt;我们发现封堵是可以双向触发的。
换句话说，从防火墙外向防火墙内发送一个ESNI握手，和从防火墙内向外发送一样，都可以触发审查。&lt;/p&gt;
&lt;p&gt;得益于这种双向性，人们可以在不控制任何位于中国的服务器的情况下，从GFW外部远程测试这种基于ESNI的审查。
我们指出，除了ESNI审查外，GFW对DNS、HTTP、SNI、FTP、SMTP和Shadowsocks的审查也可以从墙外进行测量。&lt;/p&gt;
&lt;h4 id=&#34;gfw对esni进行审查但不封锁没有sni扩展的clienthello&#34;&gt;GFW对ESNI进行审查，但不封锁没有SNI扩展的ClientHello&lt;/h4&gt;
&lt;p&gt;我们确认没有ESNI和SNI扩展的TLS ClientHello不能触发封锁。 换句话说，&lt;code&gt;encrypted_server_name &lt;/code&gt;扩展的 &lt;code&gt;0xffce &lt;/code&gt;扩展标识是触发封堵的必要条件。&lt;/p&gt;
&lt;p&gt;我们将ClientHello中的&lt;code&gt;0xffce&lt;/code&gt;替换为&lt;code&gt;0x7777&lt;/code&gt;然后进行测试。替换后，发送这样的ClientHello就不能再触发封锁了。&lt;/p&gt;
&lt;p&gt;这个确认是很重要的，因为有人观察到其他审查者可能会屏蔽&lt;a href=&#34;https://github.com/net4people/bbs/issues/10#issuecomment-532035677&#34;&gt;任何没有SNI扩展的ClientHello消息&lt;/a&gt;，这将导致ESNI和&lt;a href=&#34;https://tlsfingerprint.io/static/frolov2019.pdf&#34;&gt;无SNI&lt;/a&gt;都会被屏蔽。&lt;/p&gt;
&lt;h4 id=&#34;新的扩展值还未被封锁&#34;&gt;新的扩展值还未被封锁&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;https://pad.riseup.net/p/xCRfphD5CoxmbFcpc1s2&#34;&gt;riseup pad&lt;/a&gt;上的匿名人士指出，
现有的ESNI使用&lt;code&gt;0xffce&lt;/code&gt;作为扩展值（详见 &lt;a href=&#34;https://datatracker.ietf.org/doc/html/draft-ietf-tls-esni-01&#34;&gt;Section 8.1&lt;/a&gt;）。
但时新的ECH使用&lt;code&gt;0xff02&lt;/code&gt;，&lt;code&gt;0xff03&lt;/code&gt;和&lt;code&gt;0xff04&lt;/code&gt;作为扩展值（&lt;a href=&#34;https://datatracker.ietf.org/doc/html/draft-ietf-tls-esni-07&#34;&gt;Section 11.1&lt;/a&gt;).
我们确认这些新的扩展值还未被封锁。&lt;/p&gt;
&lt;p&gt;具体而言，
我们把一个能够触发审查的ClientHello的&lt;code&gt;0xffce&lt;/code&gt;替换为了&lt;code&gt;0xff02&lt;/code&gt;，&lt;code&gt;0xff03&lt;/code&gt;和&lt;code&gt;0xff04&lt;/code&gt;。
发送修改后的ClientHello不能触发审查。&lt;/p&gt;
&lt;h4 id=&#34;gfw需要看到一个完整的tcp握手以触发esni封锁&#34;&gt;GFW需要看到一个完整的TCP握手以触发ESNI封锁&lt;/h4&gt;
&lt;p&gt;我们发现GFW需要看到一个完整的TCP握手以触发ESNI封锁。&lt;/p&gt;
&lt;p&gt;我们从外部对中国的服务器进行了两次实验。在第一个实验中，在没有发送任何SYN包的情况下，我们的客户端每2秒发送一个带ESNI扩展的ClientHello消息。在第二个实验中，我们的客户端每2秒发送一个SYN数据包和一个带ESNI扩展的ClientHello消息；但服务器不会响应任何数据包（也不会发送SYN+ACK来完成握手）。&lt;/p&gt;
&lt;p&gt;在每次实验中，我们都发送了10条ClientHello消息。结果发现没有触发过任何审查或残余审查。所有的ClientHello消息实际上都到达了服务器。这个结果表明，在触发基于ESNI的审查之前，TCP握手是必要条件。
这也表明，与GFW基于SNI的审查机类似，ESNI的审查机也是有状态的。&lt;/p&gt;
&lt;h4 id=&#34;封锁发生在所有端口上&#34;&gt;封锁发生在所有端口上&lt;/h4&gt;
&lt;p&gt;我们发现ESNI封锁不仅会发生在443端口，也会发生在1到65535的所有端口。&lt;/p&gt;
&lt;p&gt;具体来说，我们从外部向中国服务器的1-65535的每个端口连续发送了两次ESNI握手。 对于每个端口，我们先发送一次ESNI握手；然后在连接超时后（20秒后），我们再尝试与服务器完成一次TCP握手。如果第二次没有收到服务器发来的SYN+ACK，我们就认为该端口被封锁了。
结果是，在1到65535的所有端口上都观察到了对ESNI的封锁。这个特性可以让我们高效地测试ESNI封锁，因为我们可以对同一IP地址的多个端口进行同时测试。&lt;/p&gt;
&lt;h4 id=&#34;审查残留&#34;&gt;审查残留&lt;/h4&gt;
&lt;p&gt;我们发现在阻断ESNI握手后，GFW会继续阻断与（源IP，目标IP，目标端口)3元组相关的任何连接一段时间。确切的审查残留时间可能会有所不同。我们观察到它有时持续120秒，有时持续180秒。我们注意到，在残留审查时间内发送额外的ESNI握手不会重置审查持续的定时器。这与之前观察到的基于SNI的拦截GFW的残余审查类似；而且它与伊朗的残余审查不同，在伊朗，&lt;a href=&#34;https://geneva.cs.umd.edu/posts/iran-whitelister/&#34;&gt;定时器将被重置&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;这些发现部分基于以下实验。从外部，我们每秒向中国服务器的443端口发送一条ClientHello消息。 第一秒，第二秒和第121秒的TCP握手被接受。其他所有的握手尝试都不成功，因为由于残留的审查，&lt;code&gt;SYN&lt;/code&gt;包甚至没有到达服务器。&lt;/p&gt;
&lt;p&gt;这个结果表明，与之前发现的GFW对SNI的残留审查类似，GFW也对ESNI也采用了残留审查。此外，第二秒的握手可以完成，意味着GFW至少需要1秒的时间来反应并启用拦截规则。&lt;/p&gt;
&lt;h2 id=&#34;如何规避封锁&#34;&gt;如何规避封锁？&lt;/h2&gt;
&lt;!-- callout section open --&gt;
&lt;p&gt;**Geneva(&lt;em&gt;Gen&lt;/em&gt;etic &lt;em&gt;Eva&lt;/em&gt;sion)**是我们中位于马里兰大学的研究人员开发的一种遗传算法，它在进化过程中自动发现新的审查规避策略。
它在不影响原始连接的前提下，通过注入、替换、分割或丢弃数据包流来迷惑审查者。
与大多数反审查系统不同的是，它不需要在连接的两端都进行部署：它只在一方（客户端或服务器）运行。&lt;/p&gt;
&lt;p&gt;Geneva利用审查机器来实时地训练自己的遗传算法。
截至今日，其已经找到了许多可以规避不同国家审查的策略。
Geneva的审查规避策略描述了应该如何修改流量。
由于Geneva将不断发展这些策略，因此它们用领域特定语言(domain-specific language)来表达，这些语言构成了每个策略的 &amp;ldquo;DNA&amp;rdquo;。(关于Geneva的完整代码及文档，请参见&lt;a href=&#34;https://github.com/kkevsterrr/geneva&#34;&gt;我们的Github页面&lt;/a&gt;)。&lt;/p&gt;
&lt;p&gt;要了解更多关于Geneva（或Geneva策略引擎）工作原理的信息，请参阅我们的&lt;a href=&#34;https://geneva.cs.umd.edu/papers&#34;&gt;论文&lt;/a&gt;或&lt;a href=&#34;https://geneva.cs.umd.edu/about&#34;&gt;关于&lt;/a&gt;页面。&lt;/p&gt;
&lt;!-- callout section close --&gt;
&lt;!-- Geneva由两个主要部分组成。首先，遗传算法，给定一个经历过审查的应用和一个适合度函数，它就可以演化出新的方法来击败审查系统。第二，策略引擎，它可以将给定的策略应用到活跃的网络流量上。 --&gt;
&lt;!-- Geneva的核心是一个*适合度函数*，它给规避审查的策略打上量化分数。具有较高适合度的策略更有可能在以后的世代中继续生存并传播其 &#34;遗传物质&#34;。所以，适合度函数是我们鼓励Geneva在其进化过程中追求某些步骤（并阻止它采取其他步骤）的方式。在一个较高的水平上，规避审查的策略会得到较大的适合度，而那些不规避（或打断连接）的策略则会受到低适合度的惩罚。 --&gt;
&lt;p&gt;为了让Geneva能够直接利用GFW对ESNI审查进行训练，我们写了一个自定义的插件来执行以下步骤。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Geneva在位于墙外的TCP服务器上随机开放一个端口。随机开放端口是为了避免此前审查的残留。&lt;/li&gt;
&lt;li&gt;Geneva驱动一个位于中国境内的TCP客户端连接到服务器。&lt;/li&gt;
&lt;li&gt;客户端发送一个带有加密SNI（ESNI）扩展的TLS 1.3 ClientHello。&lt;/li&gt;
&lt;li&gt;客户端休眠2秒，等待GFW审查机制启动。&lt;/li&gt;
&lt;li&gt;客户端发送一个简短的测试消息&lt;code&gt;&amp;quot;test&amp;quot;&lt;/code&gt;来测试是否已经被审查。&lt;/li&gt;
&lt;li&gt;重复步骤4和5。&lt;/li&gt;
&lt;li&gt;服务器确认是否收到了客户端发送的完整的TLS ClientHello以及测试消息。如果收到了，该策略就会得到正向的适合度奖励；如果没有收到（或者客户端在发送测试消息时超时了），该策略就会受到惩罚。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;利用这个适合度函数，Geneva可以直接针对ESNI审查制度测试和训练策略。 在&lt;em&gt;短短几个小时内&lt;/em&gt;，它就发现了多个绕过审查的策略。在本节中，我们将详细描述它们。&lt;/p&gt;
&lt;p&gt;Geneva策略引擎在&lt;a href=&#34;http://github.com/kkevsterrr/geneva&#34;&gt;我们的Github&lt;/a&gt;上是开源的，所以所有这些策略都可以被任何人部署和使用。由于它们在 TCP 层运行，因此可以应用于任何需要使用 ESNI 的应用程序：随着 Geneva 的运行，即使是未经修改的网络浏览器也可以成为一个简单的审查规避工具。&lt;/p&gt;
&lt;p&gt;请注意，Geneva&lt;em&gt;不是&lt;/em&gt;通用的翻墙软件，也不提供任何额外的加密、隐私或保护。它是一个测试版的研究原型，而且它并没有针对速度进行优化。使用这些策略，风险自担。&lt;/p&gt;
&lt;h3 id=&#34;策略&#34;&gt;策略&lt;/h3&gt;
&lt;p&gt;我们在48小时的时间里，从客户端和服务器端对Geneva进行了训练。我们总共发现了6种策略来打败对ESNI的封锁机制。其中有4个可以在服务器端使用，所有6个都可以在客户端使用。&lt;/p&gt;
&lt;p&gt;以下是TCP层的策略，只需部署在客户端，即可击败针对ESNI的封锁。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;策略 1: 三重 &lt;code&gt;SYN&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;第一种客户端策略的工作原理是用&lt;em&gt;三个&lt;/em&gt;&lt;code&gt;SYN&lt;/code&gt;数据包启动TCP的三次握手，这样第三个&lt;code&gt;SYN&lt;/code&gt;的序列号就是错误的。&lt;/p&gt;
&lt;p&gt;在Geneva的语法中，这个策略是这样的：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;[TCP:flags:S]-duplicate(duplicate,tamper{TCP:seq:corrupt})-| \/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;这种策略是对于GFW的跳出同步攻击（synchronization attack）。GFW会转而追踪这个新的错误序列号，而错过ESNI请求。&lt;/p&gt;
&lt;p&gt;这个策略也可以部署在服务端：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;[TCP:flags:SA]-tamper{TCP:flags:replace:S}(duplicate(duplicate,tamper{TCP:seq:corrupt}),)-| \/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;虽然这种策略使得服务器永远不会发送&lt;code&gt;SYN+ACK&lt;/code&gt;数据包，但这并不会破坏三次握手。在三次握手过程中，服务器没有像往常一样发送一个&lt;code&gt;SYN+ACK&lt;/code&gt;数据包，而是发送三个&lt;code&gt;SYN&lt;/code&gt;数据包（第三个数据包的校验和是错误的）。&lt;/p&gt;
&lt;p&gt;第一个&lt;code&gt;SYN&lt;/code&gt;数据包的作用是启动TCP的同步打开（Simultaneous Open），这是所有主流操作系统都支持的一个古老的TCP功能，用于处理两个TCP栈同时发送&lt;code&gt;SYN&lt;/code&gt;数据包的情况。当客户端收到服务器发送的&lt;code&gt;SYN&lt;/code&gt;时，客户端发送一个 &lt;code&gt;SYN+ACK &lt;/code&gt;数据包，服务器响应一个 &lt;code&gt;ACK &lt;/code&gt;来完成握手。这样就有效地将传统的三次握手改为四次握手。带有损坏序列号的&lt;code&gt;SYN&lt;/code&gt;使GFW跳出同步（但被客户端忽略），成功地击败了封锁机制的同时并不伤害到原有连接。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;策略2：四字节分割&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我们发现的下一个策略也可以从客户端或服务器使用。在这个策略中，客户端将ESNI请求分为两段TCP发送，第一段TCP的长度小于或等于4个字节。&lt;/p&gt;
&lt;p&gt;客户端策略的Geneva语法是这样的： &lt;code&gt;[TCP:flags:PA]-fragment{tcp:4:True}-| \/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;这已经不是Geneva第一次发现分段策略，但令人惊讶的是，这种策略在中国竟然有效。毕竟防火长城拥有著名的TCP重建能力已经有近十年了（见&lt;a href=&#34;https://github.com/NullHypothesis/brdgrd&#34;&gt;brdgrd&lt;/a&gt;）。TLS头是5个字节长，所以我们推测，像这样将TLS头分割到多个数据包中，打破了GFW将包含ESNI的数据包识别为TLS的能力。这对GFW如何通过指纹识别连接有有趣的影响：它表明GFW中负责识别的组件并不能从TCP层面中重组所有的上层协议。这一理论得到了Geneva过去所发现的其他基于分段的策略的支持（详见&lt;a href=&#34;https://geneva.cs.umd.edu/papers/come-as-you-are.pdf&#34;&gt;这篇论文&lt;/a&gt;）。&lt;/p&gt;
&lt;p&gt;这个策略也可以从服务器端触发。通过在三次握手期间减少TCP窗口大小，服务器可以强制客户端分割请求。在Geneva的语法中，可以通过以下方式实现：&lt;code&gt;[TCP:flags:SA]-tamper{TCP:window:replace:4}-| \/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;策略3：TCB Teardown&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;下一个策略是经典的TCB（TCP Control Block）Teardown：客户端向连接中注入一个带有错误的校验和的&lt;code&gt;RST&lt;/code&gt;数据包。这将欺骗GFW，使其认为连接已被中断。&lt;/p&gt;
&lt;p&gt;在Geneva的语法中，这个策略看起来是这样的： &lt;code&gt;[TCP:flags:A]-duplicate(,tamper{TCP:flags:replace:RA}(tamper{TCP:chksum:corrupt},))-| \/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;TCB Teardowns并不是什么新鲜事：&lt;a href=&#34;https://www.usenix.org/conference/foci13/workshop-program/presentation/khattak&#34;&gt;Khattak et al.&lt;/a&gt;在几乎十年前就已经演示过了，Geneva过去也多次发现了针对GFW的&lt;a href=&#34;https://geneva.cs.umd.edu/papers/geneva_ccs19.pdf&#34;&gt;Teardown攻击&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;令人惊讶的是，这种策略也可以从服务器端诱导。 在三次握手过程中，服务器可以发送一个带有错误ACK的&lt;code&gt;SYN+ACK&lt;/code&gt;数据包，从而诱导客户端发送&lt;code&gt;RST&lt;/code&gt;。这将导致&lt;code&gt;RST&lt;/code&gt;的序列号不正确（ACK为0，但仍足以引起TCB Teardown）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;策略4：&lt;code&gt;FIN+SYN&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;下一个策略似乎是另一种角度的跳出同步攻击。在这一策略中，客户端（或服务器）发送一个数据包，在三次握手过程中同时设置 &lt;code&gt;FIN &lt;/code&gt;和 &lt;code&gt;SYN&lt;/code&gt;。 客户端的Geneva语法是&lt;code&gt;[TCP:flags:A]-duplicate(tamper{TCP:flags:replace:FS},)-| \/&lt;/code&gt; 服务端的Geneva语法是  &lt;code&gt;[TCP:flags:SA]-duplicate(tamper{TCP:flags:replace:FS},)-| \/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;在过去，我们发现GFW在对其他协议进行审查时，对&lt;code&gt;FIN&lt;/code&gt;数据包有特殊的处理。
似乎&lt;code&gt;FIN&lt;/code&gt;的出现会使GFW立即同步到对当前连接的跟踪，但&lt;code&gt;SYN&lt;/code&gt;的出现会使它认为实际的序列号与实际值相差&lt;code&gt;+1&lt;/code&gt;，使GFW与实际连接偏离1。&lt;/p&gt;
&lt;p&gt;我们对以上假设进行了测试：在这个策略运行的时候，将客户端实际请求的序列号增加1后，连接被阻断了。&lt;/p&gt;
&lt;p&gt;在服务端，这个策略不需要&lt;code&gt;FIN&lt;/code&gt;就可以运行。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;策略5：TCB Turnaround&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;TCB Turnaround策略很简单：在客户端发起三次握手之前，首先向服务器发送一个&lt;code&gt;SYN+ACK&lt;/code&gt;数据包。&lt;code&gt;SYN+ACK&lt;/code&gt;使让GFW混淆了客户机和服务器的角色，从而使客户端能够不受阻碍地进行通信。TCB Turnaround攻击在哈萨克斯坦仍然有效，但在GFW上，TCB Turnaround攻击对其他协议不起作用。&lt;/p&gt;
&lt;p&gt;在Geneva的语法中：&lt;code&gt;[TCP:flags:S]-duplicate(tamper{TCP:flags:replace:SA},)-| \/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;该策略只适用于客户端，因为当&lt;code&gt;SYN&lt;/code&gt;数据包到达服务器时，GFW已经知道哪一方是客户端了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;策略6：TCB 跳出同步&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;最后，Geneva发现了简单的基于载荷的TCB跳出攻击。从客户端，注入一个带有载荷和错误的校验和的数据包就足以使GFW跳出对当前连接的同步。
Geneva在研究GFW对其他协议的审查时，已经发现过这一策略了。&lt;/p&gt;
&lt;p&gt;Geneva的语法是这样的 &lt;code&gt;[TCP:flags:A]-duplicate(tamper{TCP:load:replace:AAAAAAAAAA}(tamper{TCP:chksum:corrupt},),)-|&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;这个策略不能在服务器端使用。&lt;/p&gt;
&lt;h3 id=&#34;对审查规避策略的总结&#34;&gt;对审查规避策略的总结&lt;/h3&gt;
&lt;p&gt;我们已经找到6种可以部署在客户端，和4种可以部署在服务端的审查规避策略。
每一种都有近乎100%的可靠性，并可以用于规避针对ESNI的审查。
遗憾的是，这些策略并非是一劳永逸的：就像猫捉老鼠一般，防火长城也会继续提升其审查能力。&lt;/p&gt;
&lt;h2 id=&#34;未解决的问题&#34;&gt;未解决的问题&lt;/h2&gt;
&lt;p&gt;我们仍不清楚为何会观察到不同的残余审查时长。
与所有类似研究一样，在与我们所用节点不同的中国地区，可能存在着不同于我们所观察到的审查方式。
如果你观察到了不同于上述的审查方式，或者我们的审查规避策略对你并不奏效，
尽请联系我们。&lt;/p&gt;
&lt;h2 id=&#34;鸣谢&#34;&gt;鸣谢&lt;/h2&gt;
&lt;p&gt;我们想在此感谢所有在&lt;a href=&#34;https://pad.riseup.net/p/xCRfphD5CoxmbFcpc1s2&#34;&gt;riseup留言板&lt;/a&gt;上提问，反馈和建议的匿名人士。
这些评论帮助我们给予社区所最关心的问题更高的优先级，并从而加速了我们的研究。&lt;/p&gt;
&lt;p&gt;我们还感谢OONI和OTF社区所有人的支持。&lt;/p&gt;
&lt;h2 id=&#34;联系我们&#34;&gt;联系我们&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://geneva.cs.umd.edu/people/&#34;&gt;Geneva 团队&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kevin Bock (&lt;a href=&#34;https://geneva.cs.umd.edu/keys/kevin_pgp.asc&#34;&gt;PGP key&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cs.umd.edu/~dml&#34;&gt;Dave Levin&lt;/a&gt; (&lt;a href=&#34;https://geneva.cs.umd.edu/keys/dave_pgp.asc&#34;&gt;PGP key&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://gfw.report&#34;&gt;GFW Report&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Anonymous (&lt;a href=&#34;https://gfw.report/gfw_report.asc&#34;&gt;PGP key&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://people.cs.umass.edu/~amir&#34;&gt;Amir Houmansadr&lt;/a&gt; (&lt;a href=&#34;https://people.cs.umass.edu/~amir/Amir%20Houmansadr%20(3C599DC4)%20%E2%80%93%20Public.asc&#34;&gt;PGP key&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://www.iyouport.org/&#34;&gt;iYouPort&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;onoketa (&lt;a href=&#34;http://keys.gnupg.net/pks/lookup?op=get&amp;amp;search=0xF93249C1AFD15196&#34;&gt;PGP key&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这篇报告首发于&lt;a href=&#34;https://geneva.cs.umd.edu/posts/china-censors-esni/esni/&#34;&gt;censorship.ai&lt;/a&gt;。我们在&lt;a href=&#34;https://www.iyouport.org/%e6%8a%a5%e5%91%8a%ef%bc%9a%e4%b8%ad%e5%9b%bd%e7%9a%84%e9%98%b2%e7%81%ab%e9%95%bf%e5%9f%8e%e5%b7%b2%e7%bb%8f%e5%b0%81%e9%94%81%e5%8a%a0%e5%af%86%e6%9c%8d%e5%8a%a1%e5%99%a8%e5%90%8d%e7%a7%b0%e6%8c%87/&#34;&gt;iyouport.org&lt;/a&gt;，&lt;a href=&#34;https://gfw.report/blog/gfw_esni_blocking/en/&#34;&gt;gfw.report&lt;/a&gt;，&lt;a href=&#34;https://github.com/net4people/bbs/issues/43&#34;&gt;net4people&lt;/a&gt;和&lt;a href=&#34;https://ntc.party/t/exposing-and-circumventing-chinas-censorship-of-esni/611/2&#34;&gt;ntc.party&lt;/a&gt;上同步更新了这篇报告。&lt;/p&gt;</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>Summary on Recently Discovered V2Ray Weaknesses</title>
        <link>https://gfw.report/blog/v2ray_weaknesses/en/</link>
        <pubDate>Tue, 16 Jun 2020 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/v2ray_weaknesses/en/</guid>
        
        <description>&lt;p&gt;Several weaknesses were discovered in the V2Ray recently,
which could be used to identify V2Ray clients or servers that run VMess, TLS or HTTP protocol.
Below is our summary and understanding on these weaknesses.&lt;/p&gt;
&lt;p&gt;In general, these weaknesses fall into three categories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Inappropriate authentications in VMess, making the servers vulnerable to replay attacks.&lt;/li&gt;
&lt;li&gt;Hardcoded unique ciphersuites, leading to the rarely-seen fingerprints of the TLS ClientHello messages.&lt;/li&gt;
&lt;li&gt;Failed attempt to parrot/mimic the HTTP server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;replay-attacks-against-the-vmess-protocol&#34;&gt;Replay Attacks against the VMess Protocol&lt;/h2&gt;
&lt;p&gt;As introduced in the &lt;a href=&#34;https://www.v2ray.com/developer/protocols/vmess.html&#34;&gt;specification&lt;/a&gt; (&lt;a href=&#34;https://github.com/v2ray/manual/blob/master/eng_en/protocols/vmess.md&#34;&gt;English version&lt;/a&gt;) of the VMess protocol,
a VMess request looks like this:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;16 bytes&lt;/th&gt;
          &lt;th&gt;&lt;em&gt;X&lt;/em&gt; bytes&lt;/th&gt;
          &lt;th&gt;Other Parts&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Authentication Credential&lt;/td&gt;
          &lt;td&gt;Command&lt;/td&gt;
          &lt;td&gt;Data&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;The 16-byte &lt;code&gt;Authentication Credential&lt;/code&gt; is a HMAC associated with the &lt;code&gt;user ID&lt;/code&gt; and a &lt;code&gt;UTC timestamp&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;Command&lt;/code&gt; is encrypted using &lt;code&gt;AES-128-CFB(iv, key)&lt;/code&gt;, where the &lt;a href=&#34;https://github.com/v2ray/v2ray-core/blob/4b81ba947f89218ea7c99362b43beeeb5c3cf37b/proxy/vmess/encoding/server.go#L137&#34;&gt;&lt;code&gt;iv&lt;/code&gt; is the md5 hash value of the &lt;code&gt;UTC timestamp&lt;/code&gt;&lt;/a&gt;, and &lt;code&gt;key&lt;/code&gt; is the preshared one associated with &lt;code&gt;user ID&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following table shows the structure of &lt;code&gt;Command&lt;/code&gt; after decryption:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;1 byte&lt;/th&gt;
          &lt;th&gt;16 bytes&lt;/th&gt;
          &lt;th&gt;16 bytes&lt;/th&gt;
          &lt;th&gt;1 byte&lt;/th&gt;
          &lt;th&gt;1 byte&lt;/th&gt;
          &lt;th&gt;4 bits&lt;/th&gt;
          &lt;th&gt;4 bits&lt;/th&gt;
          &lt;th&gt;1 byte&lt;/th&gt;
          &lt;th&gt;1 byte&lt;/th&gt;
          &lt;th&gt;2 byte&lt;/th&gt;
          &lt;th&gt;1 bytes&lt;/th&gt;
          &lt;th&gt;N byte&lt;/th&gt;
          &lt;th&gt;P bytes&lt;/th&gt;
          &lt;th&gt;4 bytes&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Version&lt;/td&gt;
          &lt;td&gt;Encryption IV&lt;/td&gt;
          &lt;td&gt;Encryption Key&lt;/td&gt;
          &lt;td&gt;Response Auth V&lt;/td&gt;
          &lt;td&gt;Options&lt;/td&gt;
          &lt;td&gt;Margin P&lt;/td&gt;
          &lt;td&gt;Encrypt Method&lt;/td&gt;
          &lt;td&gt;Reserved&lt;/td&gt;
          &lt;td&gt;CMD&lt;/td&gt;
          &lt;td&gt;Port&lt;/td&gt;
          &lt;td&gt;Address Type&lt;/td&gt;
          &lt;td&gt;Address&lt;/td&gt;
          &lt;td&gt;Random Value&lt;/td&gt;
          &lt;td&gt;Checksum F&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;Encryption IV&lt;/code&gt; and the &lt;code&gt;Encryption Key&lt;/code&gt; are used to decrypt &lt;code&gt;Data&lt;/code&gt;, not &lt;code&gt;Command&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;Margin P&lt;/code&gt; and &lt;code&gt;Random Value&lt;/code&gt; are used as a padding scheme.
Specifically,
the 4-bit &lt;code&gt;Margin P&lt;/code&gt; specifies the length of the &lt;code&gt;Random Value&lt;/code&gt; to be between 0 and 15 bytes.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;Checksum F&lt;/code&gt;,
serving as a MAC,
should be the FNV1a hash of all plaintext in &lt;code&gt;Command&lt;/code&gt;,
excluding itself.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;inappropriate-authentication&#34;&gt;Inappropriate authentication&lt;/h3&gt;
&lt;p&gt;On May 31, 2020, &lt;a href=&#34;https://github.com/p4gefau1t&#34;&gt;@p4gefau1t&lt;/a&gt; &lt;a href=&#34;https://github.com/v2ray/v2ray-core/issues/2523&#34;&gt;reported&lt;/a&gt; that VMess servers could be identified by replay-based active probing,
due to the inappropriate authentications.&lt;/p&gt;
&lt;p&gt;VMess authenticates each request in two steps,
using &lt;code&gt;Authentication Credential&lt;/code&gt; and &lt;code&gt;checksum&lt;/code&gt;.
Unfortunately both of them can be circumvented.&lt;/p&gt;
&lt;p&gt;First,
the VMess server validates whether the timestamp in &lt;code&gt;Authentication Credential&lt;/code&gt; is expired.
The expiration time is &lt;a href=&#34;https://github.com/v2ray/v2ray-core/blob/4b81ba947f89218ea7c99362b43beeeb5c3cf37b/proxy/vmess/validator.go#L18&#34;&gt;120 seconds&lt;/a&gt; at maximum and 60 seconds on average
(see &lt;a href=&#34;https://github.com/v2ray/v2ray-core/blob/4b81ba947f89218ea7c99362b43beeeb5c3cf37b/proxy/vmess/encoding/server.go#L132&#34;&gt;here&lt;/a&gt; and &lt;a href=&#34;https://github.com/v2ray/v2ray-core/blob/4b81ba947f89218ea7c99362b43beeeb5c3cf37b/proxy/vmess/validator.go#L130&#34;&gt;here&lt;/a&gt; for implementation details).
That is to say,
an attacker can record and replay a legitimate &lt;code&gt;Authentication Credential&lt;/code&gt; within around 60 seconds to bypass this authentication.&lt;/p&gt;
&lt;p&gt;Second,
since the &lt;code&gt;aes-cfb&lt;/code&gt; used to encrypt the &lt;code&gt;Command&lt;/code&gt; does not provide any authentication,
a &lt;a href=&#34;https://en.wikipedia.org/wiki/Authenticated_encryption#MAC-then-Encrypt_(MtE)&#34;&gt;MAC-then-Encrypt&lt;/a&gt; mechanism is used.
As &lt;a href=&#34;https://github.com/v2ray/v2ray-core/issues/2523#issuecomment-636528060&#34;&gt;pointed out&lt;/a&gt; by @p4gefau1t,
VMess fell into the same pitfall as &lt;a href=&#34;https://printempw.github.io/why-do-shadowsocks-deprecate-ota/&#34;&gt;Shadowsocks OTA mode did&lt;/a&gt; (See the English summary on the weakness of Shadowsocks OTA mode &lt;a href=&#34;https://groups.google.com/forum/#!msg/traffic-obf/CWO0peBJLGc/Py-clLSTBwAJ&#34;&gt;here&lt;/a&gt;).
Specifically,
since the length of the &lt;code&gt;Random Value&lt;/code&gt; varies,
the server will not be able to know where the &lt;code&gt;Checksum F&lt;/code&gt; (MAC) is located,
unless it blindly trusts the value in &lt;code&gt;Margin P&lt;/code&gt; without any authentication (see &lt;a href=&#34;https://github.com/v2ray/v2ray-core/blob/4b81ba947f89218ea7c99362b43beeeb5c3cf37b/proxy/vmess/encoding/server.go#L163-L198&#34;&gt;here&lt;/a&gt; for implementation details).
In other words,
only after reading P+4 bytes,
V2Ray will be able to validate whether the decrypted content is legal.
If not legal,
the V2Ray server will close the connection.&lt;/p&gt;
&lt;p&gt;VMess server indeed has &lt;a href=&#34;https://github.com/v2ray/v2ray-core/blob/4b81ba947f89218ea7c99362b43beeeb5c3cf37b/proxy/vmess/encoding/server.go#L159&#34;&gt;a replay defense mechanism&lt;/a&gt;.
In particular, the server records the (&lt;code&gt;Encryption IV&lt;/code&gt;, &lt;code&gt;Encryption Key&lt;/code&gt;) of each request,
&lt;strong&gt;regardless of the validity of the requests&lt;/strong&gt;;
and close the connection immediately when the (&lt;code&gt;Encryption IV&lt;/code&gt;, &lt;code&gt;Encryption Key&lt;/code&gt;) is seen before.
Depending on her needs, an attacker can:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;bypass this replay defense by alternating the (ciphertext of) &lt;code&gt;Encryption IV&lt;/code&gt; or &lt;code&gt;Encryption Key&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;or intentionally trigger the replay defense to expect the inconsistency behaviors of the servers when seeing the same (&lt;code&gt;Encryption IV&lt;/code&gt;, &lt;code&gt;Encryption Key&lt;/code&gt;) first time and more times.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Exploiting these weaknesses,
many replay-based probes are creatively crafted to identify the VMess server.
We introduce them below in separate sections.&lt;/p&gt;
&lt;h3 id=&#34;replays-with-padding-length-field-changed&#34;&gt;Replays with padding length field changed&lt;/h3&gt;
&lt;p&gt;Based on &lt;a href=&#34;https://github.com/p4gefau1t&#34;&gt;@p4gefau1t&lt;/a&gt;&amp;rsquo;s &lt;a href=&#34;https://github.com/v2ray/v2ray-core/issues/2523&#34;&gt;findings&lt;/a&gt;,
&lt;a href=&#34;https://github.com/studentmain&#34;&gt;@studentmain&lt;/a&gt; proposed and &lt;a href=&#34;https://github.com/p4gefau1t&#34;&gt;@p4gefau1t&lt;/a&gt; improved an attack to identify the VMess servers.
For simplicity,
below we present this attack in a slightly different way.&lt;/p&gt;
&lt;p&gt;The malicious probe is a replay of the legitimate request, with many bytes changed as follows:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;16 bytes&lt;/th&gt;
          &lt;th&gt;41 bytes&lt;/th&gt;
          &lt;th&gt;&lt;em&gt;M&lt;/em&gt; bytes&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Auth Info&lt;/td&gt;
          &lt;td&gt;Malicious Incomplete Command&lt;/td&gt;
          &lt;td&gt;Zeros&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;br/&gt;
&lt;p&gt;The &lt;code&gt;Malicious Incomplete Command&lt;/code&gt; includes:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;1 byte&lt;/th&gt;
          &lt;th&gt;16 bytes&lt;/th&gt;
          &lt;th&gt;16 bytes&lt;/th&gt;
          &lt;th&gt;1 byte&lt;/th&gt;
          &lt;th&gt;1 byte&lt;/th&gt;
          &lt;th&gt;4 bits&lt;/th&gt;
          &lt;th&gt;4 bits&lt;/th&gt;
          &lt;th&gt;1 byte&lt;/th&gt;
          &lt;th&gt;1 byte&lt;/th&gt;
          &lt;th&gt;2 byte&lt;/th&gt;
          &lt;th&gt;1 bytes&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Version&lt;/td&gt;
          &lt;td&gt;Encryption IV&lt;/td&gt;
          &lt;td&gt;Encryption Key&lt;/td&gt;
          &lt;td&gt;Response Auth V&lt;/td&gt;
          &lt;td&gt;Options&lt;/td&gt;
          &lt;td&gt;Margin P&lt;/td&gt;
          &lt;td&gt;Encrypt Method&lt;/td&gt;
          &lt;td&gt;Reserved&lt;/td&gt;
          &lt;td&gt;CMD&lt;/td&gt;
          &lt;td&gt;Port&lt;/td&gt;
          &lt;td&gt;Address Type&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;In total,
the attacker makes 16 connections to the server.
In each connection,
the attacker:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;first sends a replay of the first 16 + 41 bytes of the legitimate connection,
with both the last byte of the &lt;code&gt;Encryption Key&lt;/code&gt; and the 4-bit &lt;code&gt;Margin P&lt;/code&gt; changed to a value different from the ones in other connections;&lt;/li&gt;
&lt;li&gt;then sends &lt;em&gt;M&lt;/em&gt; bytes of zero (or random) data one byte per second,
until the server closes the connection.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If the &lt;em&gt;M&lt;/em&gt;s recorded among 16 connections happen to be a list of non-repeated integers with the delta of max and min is 15,
then it is very likely that the server runs VMess protocol.&lt;/p&gt;
&lt;p&gt;The explanations of the attack are as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To circumvent the authentication based on &lt;code&gt;Auth Info&lt;/code&gt;,
the attacker replays an &lt;code&gt;Auth Info&lt;/code&gt; sent by the legitimate client in around 60 seconds.&lt;/li&gt;
&lt;li&gt;To circumvent the replay defense based on (&lt;code&gt;Encryption IV&lt;/code&gt;, &lt;code&gt;Encryption Key&lt;/code&gt;),
the attacker uses a different value of the &lt;code&gt;Encryption Key&lt;/code&gt; in each connection.&lt;/li&gt;
&lt;li&gt;To avoid the &lt;a href=&#34;https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Error_propagation&#34;&gt;bit errors propagating&lt;/a&gt; to the &lt;code&gt;Margin P&lt;/code&gt;,
the attacker carefully chooses the last byte of the &lt;code&gt;Encryption Key&lt;/code&gt; to alter.
This is because this byte happens to be within the same 16-byte cipher block as the &lt;code&gt;Margin P&lt;/code&gt;. (Note that,
the &lt;a href=&#34;https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Error_propagation&#34;&gt;bit error propagation&lt;/a&gt; of &lt;code&gt;AES-128-CFB&lt;/code&gt; works as follows:
changing a bit in cipher block &lt;em&gt;Ci&lt;/em&gt;, will change 1) the specific corresponding bit in plaintext block &lt;em&gt;Pi&lt;/em&gt;; 2) as well as the Random bit errors in all subsequent blocks.)&lt;/li&gt;
&lt;li&gt;The attacker then exploits the &lt;a href=&#34;https://en.wikipedia.org/wiki/Malleability_(cryptography)&#34;&gt;malleability&lt;/a&gt; of the stream cipher to enumerate all possible values of the 4-bit &lt;code&gt;Margin P&lt;/code&gt; in 16 connections.&lt;/li&gt;
&lt;li&gt;After reading the 16+41 bytes,
the server waits for the &lt;code&gt;Address&lt;/code&gt;, &lt;code&gt;Paddings&lt;/code&gt; and &lt;code&gt;Checksum&lt;/code&gt; before closing the connection due to checksum error.
Thus,
the &lt;em&gt;M&lt;/em&gt; measured here is actually &lt;code&gt;N-byte address + P-byte padding + 4-byte checksum&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The attacker can thus infer the value of &lt;code&gt;Margin P&lt;/code&gt; from &lt;em&gt;M&lt;/em&gt; because the &lt;code&gt;Paddings&lt;/code&gt; is the only field with varied length. (The length of the &lt;code&gt;Address&lt;/code&gt; is a fixed value,
because the address type is not changed.)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;replays-that-trigger-inconsistent-draining-behaviors&#34;&gt;Replays that trigger inconsistent draining behaviors&lt;/h3&gt;
&lt;p&gt;After the patches to defeat the probes above,
&lt;a href=&#34;https://github.com/nametoolong&#34;&gt;@nametoolong&lt;/a&gt; &lt;a href=&#34;https://github.com/v2ray/v2ray-core/issues/2539#issuecomment-638533283&#34;&gt;found two more types of replay-based probes&lt;/a&gt; that can still detect the VMess servers.
Both of them are related to how the server closes the connection.
Below, we introduce the first of them,
and we leave the explanations of the second attack as an exercise to reader.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/nametoolong&#34;&gt;@nametoolong&lt;/a&gt; described the probes and the behaviors of the server as follows:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    Vector 1:
    Let M1 be the first 54 bytes of a valid session.
    Let M2=M1. Tamper with M2[48] (i.e. alter the 49th byte of M2).
    Replay M1. Connection is closed immediately.
    Replay M2. Connection is not closed.
    Replay M2 again. Connection is closed immediately.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;em&gt;byte 48&lt;/em&gt; (counting from 0) that got changed is the last byte of the &lt;code&gt;Encryption Key&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In this attack,
the attacker intentionally triggers the replay defense,
and expects the inconsistent behaviors of the servers when seeing the same (&lt;code&gt;Encryption IV&lt;/code&gt;, &lt;code&gt;Encryption Key&lt;/code&gt;) for the first time and for more times. The detailed explanations are as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Since the (&lt;code&gt;Encryption IV&lt;/code&gt;, &lt;code&gt;Encryption Key&lt;/code&gt;) in M1 is the same as the one in the legitimate connection,
the server will detect this replay attack and thus close the connection immediately.&lt;/li&gt;
&lt;li&gt;When it is the first time to send M2,
since the server has never seen the altered (&lt;code&gt;Encryption IV&lt;/code&gt;, &lt;code&gt;Encryption Key&lt;/code&gt;),
it will bypass the replay defense.
The server thus waits for more bytes to come,
rather than close the connection.&lt;/li&gt;
&lt;li&gt;When it is the second time to send M2,
since the server has seen the same (&lt;code&gt;Encryption IV&lt;/code&gt;, &lt;code&gt;Encryption Key&lt;/code&gt;) before,
the server will close the connection immediately.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The V2Ray has actually been patched so that it will close the connections after reading a random number of bytes within a certain range, or after waiting for a random amount of time within a certain range.
However, this attack is possible because of the inconsistent usage of the draining methods when different types of errors happen.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/nametoolong&#34;&gt;@nametoolong&lt;/a&gt; thus suggested:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    Drain the connection on all types of errors.
    It still needs to be considered whether draining the connection itself is a attack vector.
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;our-comments&#34;&gt;Our comments&lt;/h3&gt;
&lt;p&gt;Although we do not know whether the GFW uses active probing against VMess protocol,
the attacks proposed above are feasible to the GFW.
For example,
it is &lt;a href=&#34;https://gfw.report/blog/gfw_shadowsocks/#delay-of-replay-attacks&#34;&gt;observed&lt;/a&gt; that the GFW is capable of sending replay-based probes with no delay or arbitrarily long delay.
We will investigate whether the GFW uses active probing against VMess protocol in the following work.
At the same time,
it will save us a lot of time if users can report which V2Ray servers were blocked when using what settings.&lt;/p&gt;
&lt;p&gt;It may be a good idea to use a replay defense mechanism for the &lt;code&gt;auth info&lt;/code&gt; that is based on both &lt;code&gt;expiration time&lt;/code&gt; and &lt;code&gt;nonce&lt;/code&gt;.
On one hand,
V2Ray uses a replay defense mechanism based on expiration time.
It will thus consider a replay sent within the expiration time as valid.
On the other hand,
Shadowsocks-libev uses a &lt;a href=&#34;https://github.com/shadowsocks/shadowsocks-org/issues/44&#34;&gt;replay defense mechanism based on nonce&lt;/a&gt;.
But it requires the servers to remember these nonces forever until the key is changed.
This seems to be complicated to implement as it should even still remember the nonce after a reboot of the software.
Therefore,
a replay defense mechanism based on both &lt;code&gt;expiration time&lt;/code&gt; and &lt;code&gt;nonce&lt;/code&gt; may be a good choice.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://censorbib.nymity.ch/pdf/Frolov2020a.pdf&#34;&gt;Frolov et al.&lt;/a&gt; found that various popular circumvention tools,
including obfs4, Shadowsocks Outline, Psiphon&amp;rsquo;s OSSH and Lantern&amp;rsquo;s Lampshade,
can be identified using the TCP flags and timing information when the servers close the connections.
Frolov et al. thus suggested that &lt;a href=&#34;https://censorbib.nymity.ch/pdf/Frolov2020a.pdf#page=13&#34;&gt;servers should &amp;ldquo;forever read&amp;rdquo; on errors&lt;/a&gt;,
so that the probers will be the first to close the connection.
This way,
it not only reduces the information leaked by server&amp;rsquo;s timeout value,
but also lets the server close the connection with FIN/ACK consistently (see &lt;a href=&#34;https://censorbib.nymity.ch/pdf/Frolov2020a.pdf#page=5&#34;&gt;Fig. 1 here&lt;/a&gt; for more details).&lt;/p&gt;
&lt;h2 id=&#34;unique-tls-clienthello-fingerprints&#34;&gt;Unique TLS ClientHello Fingerprints&lt;/h2&gt;
&lt;p&gt;On May 30, 2020, &lt;a href=&#34;https://github.com/p4gefau1t&#34;&gt;@p4gefau1t&lt;/a&gt; &lt;a href=&#34;https://github.com/v2ray/discussion/issues/704&#34;&gt;reported&lt;/a&gt; V2Ray clients would send TLS ClientHello messages with &lt;a href=&#34;https://tlsfingerprint.io/id/8c48b95f67260663&#34;&gt;very unique fingerprints&lt;/a&gt;.
Such unique fingerprints not only gave a censor the opportunity to identify the V2Ray clients and servers,
but also allowed a censor to &lt;a href=&#34;https://github.com/v2ray/discussion/issues/704#issuecomment-636351112&#34;&gt;accurately&lt;/a&gt; block the TLS traffic by V2Ray without much collateral damage.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/p4gefau1t&#34;&gt;@p4gefau1t&lt;/a&gt; further identified that these unique fingerprints were partially caused by the use of &lt;a href=&#34;https://github.com/v2ray/v2ray-core/blob/edb4fed387d27890902e7ee97aae0d97292f912b/transport/internet/tls/config.go#L176-L230&#34;&gt;a hardcoded ciphersuite&lt;/a&gt;.
Specifically,
this rarely seen ciphersuite would be used,
when the &lt;code&gt;AllowInsecureCiphers&lt;/code&gt; flag was its default value &lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;V2Ray developer &lt;a href=&#34;https://github.com/xiaokangwang&#34;&gt;@xiaokangwang&lt;/a&gt; &lt;a href=&#34;https://github.com/v2ray/v2ray-core/issues/2542&#34;&gt;mitigated&lt;/a&gt; this weakness by using the default settings of go-tls library since &lt;code&gt;v4.23.4&lt;/code&gt;
(see patches &lt;a href=&#34;https://github.com/v2ray/v2ray-core/pull/2510&#34;&gt;#2510&lt;/a&gt;, &lt;a href=&#34;https://github.com/v2ray/v2ray-core/pull/2512&#34;&gt;#2512&lt;/a&gt;, &lt;a href=&#34;https://github.com/v2ray/v2ray-core/issues/2518&#34;&gt;#2518&lt;/a&gt;).
&lt;a href=&#34;https://github.com/tomac4t&#34;&gt;@tomac4t&lt;/a&gt; summarized a form, comparing the &lt;a href=&#34;https://gist.github.com/tomac4t/efd739d197f9f864a10f39c01d5c893f&#34;&gt;ClientHello fingerprints&lt;/a&gt; before and after the patches using &lt;a href=&#34;tlsfingerprint.io&#34;&gt;tlsfingerprint.io&lt;/a&gt;.
However,
the fingerprints seem to be still quite unique.&lt;/p&gt;
&lt;p&gt;To our best knowledge,
as early as November, 2019,
&lt;a href=&#34;https://github.com/klzgrad/&#34;&gt;@klzgrad&lt;/a&gt; &lt;a href=&#34;https://gist.github.com/klzgrad/25b2612d266a450abca6129a7ca595a4#v2ray-v4213&#34;&gt;had already investigated the fingerprints of V2Ray v4.21.3&lt;/a&gt; as well as many other TLS-based circumvention tools.
The &lt;a href=&#34;https://gist.github.com/klzgrad/25b2612d266a450abca6129a7ca595a4&#34;&gt;result&lt;/a&gt; shows most of them have rarely seen TLS ClientHello fingerprints.&lt;/p&gt;
&lt;p&gt;Side notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;As summarized in the &lt;a href=&#34;https://tlsfingerprint.io/static/frolov2019.pdf#page=13&#34;&gt;Client Hello Fingerprinting section&lt;/a&gt;,
many works have used ClientHello messages to fingerprint different TLS implementations.
Frolov et al. &lt;a href=&#34;https://tlsfingerprint.io/static/frolov2019.pdf&#34;&gt;discovered&lt;/a&gt; that the TLS ClientHello fingerprints of many popular circumvention tools were very unique (see &lt;a href=&#34;https://tlsfingerprint.io/static/frolov2019.pdf#page=9&#34;&gt;Table 2&lt;/a&gt; for more details).
Frolov et al. thus developed &lt;a href=&#34;https://github.com/refraction-networking/utls&#34;&gt;utls&lt;/a&gt; and created &lt;a href=&#34;https://tlsfingerprint.io&#34;&gt;tlsfingerprint.io&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/p4gefau1t&#34;&gt;@p4gefau1t&lt;/a&gt; investigated this issue because &lt;a href=&#34;https://github.com/rickyzhang82&#34;&gt;@rickyzhang82&lt;/a&gt; demonstrated a &lt;a href=&#34;https://fr33land.net/2020/03/12/can-enable-tls-in-v2ray-help/&#34;&gt;machine learning model&lt;/a&gt; that can identify the TLS traffic by V2Ray with &lt;a href=&#34;https://github.com/rickyzhang82/V2Ray-Deep-Packet-Inspection&#34;&gt;0.9999 accuracy&lt;/a&gt;.
The same model, without additional training, could not accurately identify the new TLS traffic of V2Ray after the developers made changes to the fingerprint.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/DuckSoft&#34;&gt;@DuckSoft&lt;/a&gt; demonstrated that the blocking based on TLS ciphersuites can be written in &lt;a href=&#34;https://github.com/v2ray/discussion/issues/704#issuecomment-636351112&#34;&gt;one line of iptables rules&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;failed-to-mimic-the-http-server&#34;&gt;Failed to Mimic the HTTP Server&lt;/h2&gt;
&lt;p&gt;On June 2, 2020, &lt;a href=&#34;https://github.com/p4gefau1t&#34;&gt;@p4gefau1t&lt;/a&gt; &lt;a href=&#34;https://github.com/v2ray/v2ray-core/issues/2537&#34;&gt;reported&lt;/a&gt; the V2Ray failed to mimic real HTTP communications.
In particular,
the two reported issues are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Both V2Ray clients and servers will prepend a HTTP header only to the first TCP payload they send in each connection,
making the mimicking traffic easy to be detected.&lt;/li&gt;
&lt;li&gt;V2Ray servers use &lt;a href=&#34;https://github.com/v2ray/v2ray-core/blob/85633ec25ea06aff31fb1754992ebf86a3a737bd/transport/internet/headers/http/http.go#L236-L263&#34;&gt;a hardcoded 500 response for various types of failures&lt;/a&gt;,
making the mimicking server easy to be distinguished by active probes.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Since &lt;a href=&#34;https://people.cs.umass.edu/~amir/papers/parrot.pdf&#34;&gt;the parrot is dead&lt;/a&gt; since 2013,
instead of reviving the parrot,
using a real HTTP engine may be a more promising solution here.
Many circumvention tools have been using the idea of &lt;code&gt;application fronting&lt;/code&gt;, which include &lt;a href=&#34;https://github.com/caddyserver/forwardproxy&#34;&gt;forwardproxy&lt;/a&gt;,
&lt;a href=&#34;https://github.com/klzgrad/naiveproxy&#34;&gt;naiveproxy&lt;/a&gt; and &lt;a href=&#34;https://github.com/trojan-gfw/trojan&#34;&gt;trojan&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;credits&#34;&gt;Credits&lt;/h2&gt;
&lt;p&gt;All credit goes to the authors of the corresponding works.&lt;/p&gt;
&lt;h2 id=&#34;thanks&#34;&gt;Thanks&lt;/h2&gt;
&lt;p&gt;We want to thank &lt;a href=&#34;https://github.com/studentmain&#34;&gt;@studentmain&lt;/a&gt; and &lt;a href=&#34;https://github.com/p4gefau1t&#34;&gt;@p4gefau1t&lt;/a&gt; for helping us understand their proposed replay attacks, and for sharing their inspiring thoughts on the future works.
We are also grateful to David Fifield and @studentmain for offering detailed feedback on a draft of this summary.&lt;/p&gt;
&lt;h2 id=&#34;contacts&#34;&gt;Contacts&lt;/h2&gt;
&lt;p&gt;This report first appeared on &lt;a href=&#34;https://gfw.report/blog/v2ray_weaknesses/en/&#34;&gt;GFW Report&lt;/a&gt;. We also maintain an up-to-date copy of the report on both &lt;a href=&#34;https://github.com/net4people/bbs/issues/36#issuecomment-644929739&#34;&gt;net4people&lt;/a&gt; and &lt;a href=&#34;https://ntc.party/t/summary-on-recently-discovered-v2ray-weaknesses/556&#34;&gt;ntc.party&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We will investigate whether the GFW uses active probing against VMess protocol in the following work.
At the same time,
it will save us a lot of time if you, as a user, can report which circumvention services were blocked when using what settings.
We encourage you to share your comments publicly or privately. Our private contact information can be found at the footer of &lt;a href=&#34;https://gfw.report/&#34;&gt;GFW Report&lt;/a&gt;.&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>总结近期发现的V2Ray弱点</title>
        <link>https://gfw.report/blog/v2ray_weaknesses/zh/</link>
        <pubDate>Tue, 16 Jun 2020 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/v2ray_weaknesses/zh/</guid>
        
        <description>&lt;p&gt;近期数个V2Ray的弱点被发现。这些弱点可以被用来识别使用VMess、TLS或HTTP协议的V2Ray客户端和服务器。
以下是我们对这些弱点的总结和理解。&lt;/p&gt;
&lt;p&gt;总体上，这些弱点可分为三类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;VMess服务器没有正确验证客户端的请求，使得服务器可受到重放攻击。&lt;/li&gt;
&lt;li&gt;客户端硬编码了一套罕见的TLS密码套件，导致客户端发送的TLS ClientHello拥有几乎独一无二的指纹。&lt;/li&gt;
&lt;li&gt;伪装成HTTP服务器的企图失败。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;针对vmess协议的重放攻击&#34;&gt;针对VMess协议的重放攻击&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://www.v2ray.com/developer/protocols/vmess.htmlhttps://www.v2ray.com/developer/protocols/vmess.html&#34;&gt;VMess协议&lt;/a&gt;的请求构造如下：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;16 字节&lt;/th&gt;
          &lt;th&gt;&lt;em&gt;X&lt;/em&gt; 字节&lt;/th&gt;
          &lt;th&gt;余下部分&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;认证信息&lt;/td&gt;
          &lt;td&gt;指令部分&lt;/td&gt;
          &lt;td&gt;数据部分&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;认证信息&lt;/code&gt; 是一个16字节的HMAC，基于&lt;code&gt;用户 ID&lt;/code&gt;和&lt;code&gt;UTC 时间辍&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;指令部分&lt;/code&gt; 由&lt;code&gt;AES-128-CFB(iv， key)&lt;/code&gt;算法加密， 其中&lt;a href=&#34;https://github.com/v2ray/v2ray-core/blob/4b81ba947f89218ea7c99362b43beeeb5c3cf37b/proxy/vmess/encoding/server.go#L137&#34;&gt;&lt;code&gt;iv&lt;/code&gt; 是&lt;code&gt;UTC 时间辍&lt;/code&gt;的md5哈希值&lt;/a&gt;， &lt;code&gt;key&lt;/code&gt;是V2Ray用户自己设置的那个密码。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;下表为&lt;code&gt;指令部分&lt;/code&gt;解密后的结构：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;1 字节&lt;/th&gt;
          &lt;th&gt;16 字节&lt;/th&gt;
          &lt;th&gt;16 字节&lt;/th&gt;
          &lt;th&gt;1 字节&lt;/th&gt;
          &lt;th&gt;1 字节&lt;/th&gt;
          &lt;th&gt;4 位&lt;/th&gt;
          &lt;th&gt;4 位&lt;/th&gt;
          &lt;th&gt;1 字节&lt;/th&gt;
          &lt;th&gt;1 字节&lt;/th&gt;
          &lt;th&gt;2 字节&lt;/th&gt;
          &lt;th&gt;1 字节&lt;/th&gt;
          &lt;th&gt;&lt;em&gt;N&lt;/em&gt; 字节&lt;/th&gt;
          &lt;th&gt;&lt;em&gt;P&lt;/em&gt; 字节&lt;/th&gt;
          &lt;th&gt;4 字节&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;版本号 Ver&lt;/td&gt;
          &lt;td&gt;数据加密 IV&lt;/td&gt;
          &lt;td&gt;数据加密 Key&lt;/td&gt;
          &lt;td&gt;响应认证 V&lt;/td&gt;
          &lt;td&gt;选项 Opt&lt;/td&gt;
          &lt;td&gt;余量 P&lt;/td&gt;
          &lt;td&gt;加密方式 Sec&lt;/td&gt;
          &lt;td&gt;保留&lt;/td&gt;
          &lt;td&gt;指令 Cmd&lt;/td&gt;
          &lt;td&gt;端口 Port&lt;/td&gt;
          &lt;td&gt;地址类型 T&lt;/td&gt;
          &lt;td&gt;地址 A&lt;/td&gt;
          &lt;td&gt;随机值&lt;/td&gt;
          &lt;td&gt;校验 F&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;数据加密 IV&lt;/code&gt;和&lt;code&gt;数据加密 Key&lt;/code&gt;是用来加密/解密&lt;code&gt;数据部分&lt;/code&gt;的，不是用来加密/解密&lt;code&gt;指令部分&lt;/code&gt;的。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;余量 P&lt;/code&gt;和&lt;code&gt;随机值&lt;/code&gt;是填充机制的一部分。其中&lt;code&gt;余量 P&lt;/code&gt;占4位，用来表示&lt;code&gt;随机值&lt;/code&gt;的长度。长度取值在0到15字节之间。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;校验 F&lt;/code&gt;是一个&lt;a href=&#34;https://zh.wikipedia.org/zh-cn/%E8%A8%8A%E6%81%AF%E9%91%91%E5%88%A5%E7%A2%BC&#34;&gt;MAC&lt;/a&gt;。在合法的请求中，它的值应该是除自己以外所有&lt;code&gt;指令部分&lt;/code&gt;的FNV1a哈希值。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;验证客户端请求时的弱点&#34;&gt;验证客户端请求时的弱点&lt;/h3&gt;
&lt;p&gt;2020年5月31日，&lt;a href=&#34;https://github.com/p4gefau1t&#34;&gt;@p4gefau1t&lt;/a&gt;&lt;a href=&#34;https://github.com/v2ray/v2ray-core/issues/2523&#34;&gt;报告&lt;/a&gt;，由于客户端请求的合法性没有得到恰当的认证，VMess服务器可以被基于重放攻击的主动探测识别。&lt;/p&gt;
&lt;p&gt;VMess服务器分两步，分别用&lt;code&gt;认证信息&lt;/code&gt;和&lt;code&gt;校验 F&lt;/code&gt;来鉴定客户端请求的合法性。不幸的是，这两步都可以被攻击者绕过。&lt;/p&gt;
&lt;p&gt;第一步，
VMess服务器验证包含在&lt;code&gt;认证信息&lt;/code&gt;中的&lt;code&gt;时间辍&lt;/code&gt;是否已经过期。
保质期最长为&lt;a href=&#34;https://github.com/v2ray/v2ray-core/blob/4b81ba947f89218ea7c99362b43beeeb5c3cf37b/proxy/vmess/validator.go#L18&#34;&gt;120秒&lt;/a&gt;，平均值为60秒。其具体的实现细节请见&lt;a href=&#34;https://github.com/v2ray/v2ray-core/blob/4b81ba947f89218ea7c99362b43beeeb5c3cf37b/proxy/vmess/encoding/server.go#L132&#34;&gt;这里&lt;/a&gt;还有&lt;a href=&#34;https://github.com/v2ray/v2ray-core/blob/4b81ba947f89218ea7c99362b43beeeb5c3cf37b/proxy/vmess/validator.go#L130&#34;&gt;这里&lt;/a&gt;。
这也就是说，
攻击者可以先记录下正常客户端发出的合法的&lt;code&gt;认证信息&lt;/code&gt;，然后只要在60秒左右的时间内，在自己的恶意请求中使用这段合法的&lt;code&gt;认证信息&lt;/code&gt;，就可以通过服务器第一步的验证。&lt;/p&gt;
&lt;p&gt;第二步，
由于用来加密&lt;code&gt;指令部分&lt;/code&gt;的&lt;code&gt;aes-cfb&lt;/code&gt;算法本身不提供数据认证，
VMess协议使用了一个&lt;a href=&#34;https://zh.wikipedia.org/zh-cn/%E8%AE%A4%E8%AF%81%E5%8A%A0%E5%AF%86#MAC-then-Encrypt_(MtE)&#34;&gt;MAC-then-Encrypt&lt;/a&gt;的机制校验数据的真实性和完整性。
@p4gefau1t&lt;a href=&#34;https://github.com/v2ray/v2ray-core/issues/2523#issuecomment-636528060&#34;&gt;指出&lt;/a&gt;，
VMess协议掉入了&lt;a href=&#34;https://printempw.github.io/why-do-shadowsocks-deprecate-ota/&#34;&gt;与Shadowsocks OTA模式当年同样的陷阱&lt;/a&gt;。(英文版的Shadowsocks OTA模式漏洞请见&lt;a href=&#34;https://groups.google.com/forum/#!msg/traffic-obf/CWO0peBJLGc/Py-clLSTBwAJ&#34;&gt;这里&lt;/a&gt;。)
具体来讲，
由于&lt;code&gt;随机值&lt;/code&gt;的长度在每个请求中是变化的，
因此服务器被迫在还没有验证&lt;code&gt;余量 P&lt;/code&gt;的真实性之前就盲目的信任这个值。
然后服务器才能确定&lt;code&gt;校验 F&lt;/code&gt; (MAC)在请求中的位置。
(具体实现细节请见&lt;a href=&#34;https://github.com/v2ray/v2ray-core/blob/4b81ba947f89218ea7c99362b43beeeb5c3cf37b/proxy/vmess/encoding/server.go#L163-L198&#34;&gt;这里&lt;/a&gt;)
也就是说，
在未经校验的情况下读取了P+4字节后，
V2Ray才能开始验证请求的真实性和完整性。
如果验证未通过，
V2Ray服务器就会断开连接。&lt;/p&gt;
&lt;p&gt;VMess服务器确实有一个&lt;a href=&#34;https://github.com/v2ray/v2ray-core/blob/4b81ba947f89218ea7c99362b43beeeb5c3cf37b/proxy/vmess/encoding/server.go#L159&#34;&gt;对抗重放攻击的机制&lt;/a&gt;。
不管请求是否合法，
服务器都会记录下每个请求中使用的&lt;code&gt;数据加密 IV&lt;/code&gt;-&lt;code&gt;数据加密 Key&lt;/code&gt;对；
如果一个请求中的&lt;code&gt;数据加密 IV&lt;/code&gt;-&lt;code&gt;数据加密 Key&lt;/code&gt;对已经在之前的请求中使用过了，
服务器就会立即断开连接。
因此取决于其需要，攻击者可以对这个对抗重放攻击的机制做两件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;攻击者可以修改密文中对应&lt;code&gt;数据加密 IV&lt;/code&gt;或&lt;code&gt;数据加密 Key&lt;/code&gt;的部分，从而绕过这个对抗重放攻击的机制。&lt;/li&gt;
&lt;li&gt;攻击者可以故意触发这个对抗重放攻击的机制，然后观察对于同一个&lt;code&gt;数据加密 IV&lt;/code&gt;-&lt;code&gt;数据加密 Key&lt;/code&gt;对，服务器在第一次和第n&amp;gt;1次见到它时反应是否不同。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;利用以上弱点，
各种基于重放攻击的，针对VMess服务器的主动探测被创造出来。
我们现在对这些攻击按类别进行介绍。&lt;/p&gt;
&lt;h3 id=&#34;修改填充长度的重放攻击&#34;&gt;修改填充长度的重放攻击&lt;/h3&gt;
&lt;p&gt;基于&lt;a href=&#34;https://github.com/p4gefau1t&#34;&gt;@p4gefau1t&lt;/a&gt;&lt;a href=&#34;https://github.com/v2ray/v2ray-core/issues/2523&#34;&gt;发现的VMess弱点和攻击&lt;/a&gt;，
&lt;a href=&#34;https://github.com/studentmain&#34;&gt;@studentmain&lt;/a&gt;提出了一种更强的攻击来识别VMess服务器。这种攻击后又被&lt;a href=&#34;https://github.com/p4gefau1t&#34;&gt;@p4gefau1t&lt;/a&gt;再次修改增强。
为了叙述简洁，
我们用一种稍有不同的方式呈现它。&lt;/p&gt;
&lt;p&gt;该主动探测的载荷基于对合法客户端发送的密文请求的修改，其构造如下：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;16 字节&lt;/th&gt;
          &lt;th&gt;41 字节&lt;/th&gt;
          &lt;th&gt;&lt;em&gt;M&lt;/em&gt; 字节&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;认证信息&lt;/td&gt;
          &lt;td&gt;恶意修改的指令部分&lt;/td&gt;
          &lt;td&gt;零&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;br/&gt;
&lt;p&gt;&lt;code&gt;恶意修改的指令部分&lt;/code&gt;的结构如下:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;1 字节&lt;/th&gt;
          &lt;th&gt;16 字节&lt;/th&gt;
          &lt;th&gt;16 字节&lt;/th&gt;
          &lt;th&gt;1 字节&lt;/th&gt;
          &lt;th&gt;1 字节&lt;/th&gt;
          &lt;th&gt;4 位&lt;/th&gt;
          &lt;th&gt;4 位&lt;/th&gt;
          &lt;th&gt;1 字节&lt;/th&gt;
          &lt;th&gt;1 字节&lt;/th&gt;
          &lt;th&gt;2 字节&lt;/th&gt;
          &lt;th&gt;1 字节&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;版本号 Ver&lt;/td&gt;
          &lt;td&gt;数据加密 IV&lt;/td&gt;
          &lt;td&gt;数据加密 Key&lt;/td&gt;
          &lt;td&gt;响应认证 V&lt;/td&gt;
          &lt;td&gt;选项 Opt&lt;/td&gt;
          &lt;td&gt;余量 P&lt;/td&gt;
          &lt;td&gt;加密方式 Sec&lt;/td&gt;
          &lt;td&gt;保留&lt;/td&gt;
          &lt;td&gt;指令 Cmd&lt;/td&gt;
          &lt;td&gt;端口 Port&lt;/td&gt;
          &lt;td&gt;地址类型 T&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;攻击者在一次攻击中，共向服务器发起16次连接。在每次连接中攻击者：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;首先记录下某一合法请求的前16+41字节。&lt;/li&gt;
&lt;li&gt;然后将其中对应&lt;code&gt;数据加密 Key&lt;/code&gt;的最后一字节和对应&lt;code&gt;余量 P&lt;/code&gt;的部分修改为与原来不同的值，并发送。注意要保证不同连接中修改后的值都不一样。&lt;/li&gt;
&lt;li&gt;最后每隔一秒发送一字节的零（或随机）数据，直到服务器主动断开连接。记发送的零（或随机）数据的字节长度为&lt;em&gt;M&lt;/em&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果16次连接中记录的&lt;em&gt;M&lt;/em&gt;没有重复且最大值和最小值的差为15，那么被探测的服务器就很有可能是在使用VMess协议。&lt;/p&gt;
&lt;p&gt;对于该攻击的解释如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;为了绕过服务器基于&lt;code&gt;认证信息&lt;/code&gt;的校验，攻击者在大约60秒的时间内重复使用同一个来自合法客户端的&lt;code&gt;认证信息&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;为了绕过服务器基于&lt;code&gt;数据加密 IV&lt;/code&gt;-&lt;code&gt;数据加密 Key&lt;/code&gt;对的过滤器，
攻击者修改了每次连接中的&lt;code&gt;数据加密 Key&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;为了避免修改&lt;code&gt;数据加密 Key&lt;/code&gt;后&lt;a href=&#34;https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Error_propagation&#34;&gt;错误扩散&lt;/a&gt;到&lt;code&gt;余量 P&lt;/code&gt;，攻击者精心的选择了只修改&lt;code&gt;数据加密 Key&lt;/code&gt;的最后一字节。因为这一字节与&lt;code&gt;余量 P&lt;/code&gt;同属于一个16字节的密码块。（&lt;code&gt;AES-128-CFB&lt;/code&gt;算法的&lt;a href=&#34;https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Error_propagation&#34;&gt;错误扩散&lt;/a&gt;是这样的：
改变密文块&lt;em&gt;Ci&lt;/em&gt;中的任意1位，将会 1）改变其对应明文块&lt;em&gt;Pi&lt;/em&gt;中对应的1位；2)并可能随机的改变其之后所有明文块中的任意位。）&lt;/li&gt;
&lt;li&gt;攻击者利用流加密算法的&lt;a href=&#34;https://en.wikipedia.org/wiki/Malleability_(cryptography)&#34;&gt;malleability&lt;/a&gt;特性，
在16次连接中，通过遍历&lt;code&gt;余量 P&lt;/code&gt;所有的密文空间来遍历其所有的明文空间。&lt;/li&gt;
&lt;li&gt;在读取16+41字节后，
服务器会期待客户端发送&lt;em&gt;N&lt;/em&gt;字节的&lt;code&gt;地址 A&lt;/code&gt;、&lt;em&gt;P&lt;/em&gt;字节的&lt;code&gt;填充&lt;/code&gt;以及4字节的&lt;code&gt;校验 F&lt;/code&gt;。
因此&lt;em&gt;M&lt;/em&gt;的实际值为&lt;em&gt;N+P+4&lt;/em&gt;。&lt;/li&gt;
&lt;li&gt;攻击者因此可以利用&lt;em&gt;M&lt;/em&gt;猜出每次连接中&lt;code&gt;余量 P&lt;/code&gt;的明文值。 （因为&lt;code&gt;地址类型 T&lt;/code&gt;是不变的，所以&lt;code&gt;地址 A&lt;/code&gt;占用的长度为固定值。）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;触发服务器不同反应的重放攻击&#34;&gt;触发服务器不同反应的重放攻击&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/nametoolong&#34;&gt;@nametoolong&lt;/a&gt; &lt;a href=&#34;https://github.com/v2ray/v2ray-core/issues/2539#issuecomment-638533283&#34;&gt;发现了另外两种重放攻击&lt;/a&gt;，可以用来识别即使修复了上述问题的VMess服务器。&lt;/p&gt;
&lt;p&gt;这两种攻击都与服务器何时及如何关闭连接有关。
我们在这里仅介绍第一种攻击，并把第二种攻击的原理留给读者作为练习。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/nametoolong&#34;&gt;@nametoolong&lt;/a&gt;描述了第一种攻击载荷和其期待引起服务器反应：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    攻击 1：
    M1为一个合法连接的前54个字节。
    M1修改第48字节，其余字节保持不便，记作M2。
    发送M1，服务器会立即断开连接。
    发送M2，服务器不会立即断开连接。
    再次发送M2，服务器会立即断开连接。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;注：被替换的&lt;em&gt;第48字节&lt;/em&gt;（从0开始数的）即为的&lt;code&gt;数据加密 Key&lt;/code&gt;的最后一个字节。&lt;/p&gt;
&lt;p&gt;在这次攻击中，
攻击者故意触发重放防御机制，
并期待着服务器在第一次与更多次见到同一个&lt;code&gt;数据加密 IV&lt;/code&gt;-&lt;code&gt;数据加密 Key&lt;/code&gt;对时，
会有不同的反应。
具体介绍如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;因为已经在之前的合法连接中见过M1中的&lt;code&gt;数据加密 IV&lt;/code&gt;-&lt;code&gt;数据加密 Key&lt;/code&gt;对，
所以服务器会检测出M1是重放攻击，并立即断开连接。&lt;/li&gt;
&lt;li&gt;当第一次发送M2时，服务器是第一次见到其包含的&lt;code&gt;数据加密 IV&lt;/code&gt;-&lt;code&gt;数据加密 Key&lt;/code&gt;对，
所以服务器不会认定M2是重放攻击，因此会继续等待攻击者发送更多的字节，而不断开连接。&lt;/li&gt;
&lt;li&gt;当第二次发送M2时，服务器因为已经见过同样的&lt;code&gt;数据加密 IV&lt;/code&gt;-&lt;code&gt;数据加密 Key&lt;/code&gt;对，
所以服务器会认定这次的M2是重放攻击，并且立即断开连接。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;V2Ray已经将断开连接时所需的时长和所需接收的字节数随机化，
但由于不是在遇到所有类型的错误时都统一采用了这一机制，
因此给了攻击者可乘之机。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/nametoolong&#34;&gt;@nametoolong&lt;/a&gt;因此建议：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    断开连接的机制要保持统一。
    但也需要考虑断开连接这一行为本身是否会泄露什么特征。
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;我们的评论&#34;&gt;我们的评论&lt;/h3&gt;
&lt;p&gt;证据显示，以上提到的攻击以GFW现有的能力来讲是切实可行的。
比如说，GFW&lt;a href=&#34;https://gfw.report/blog/gfw_shadowsocks/zh/#%E4%B8%BB%E5%8A%A8%E6%8E%A2%E6%B5%8B%E7%9A%84%E5%BB%B6%E8%BF%9F%E6%80%A7&#34;&gt;被观察到&lt;/a&gt;可以记录合法客户端的连接，并在0.4秒到数百小时之间的延迟后，将修改过的（或未修改过的）载荷发送给被怀疑的服务器。&lt;/p&gt;
&lt;p&gt;下一步，我们将调查GFW是否已经使用了针对V2Ray的主动探测攻击。与此同时，如果你有任何翻墙服务器被封锁，我们都欢迎你或公开的或私下的与我们分享你的配置。因为这会帮助我们快速定位许多问题的根源。&lt;/p&gt;
&lt;p&gt;也许同时基于&lt;code&gt;实效性&lt;/code&gt;和&lt;code&gt;重复性&lt;/code&gt;的请求验证是抵抗GFW重放攻击的好办法。
一方面，
V2Ray在&lt;code&gt;认证信息&lt;/code&gt;中仅使用了基于&lt;code&gt;实效性&lt;/code&gt;的重放攻击防御措施。
但这会导致在一定时间内的任何重放攻击都是有效的。
另一方面，
Shadowsocks-libev使用了一个&lt;a href=&#34;https://github.com/shadowsocks/shadowsocks-org/issues/44&#34;&gt;基于nonce的重放过滤器&lt;/a&gt;。
但为了让仅基于nonce的重放过滤器有效检测重放攻击，
服务端被不现实的要求（在主密钥更换之前）必须要一直记住所有&lt;strong&gt;合法&lt;/strong&gt;连接中的nonce，即使是服务端重启之后！
因此，
同时基于&lt;code&gt;实效性&lt;/code&gt;和&lt;code&gt;重复性&lt;/code&gt;的防御机制似乎是抵抗GFW重放攻击的更有效办法。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://censorbib.nymity.ch/pdf/Frolov2020a.pdf&#34;&gt;Frolov et al.&lt;/a&gt;发现,
包括obfs4, Shadowsocks Outline, 赛风的OSSH和蓝灯的Lampshade在内的许多翻墙协议或工具都可以被服务器断开连接的方式所识别。
具体而言，不同的主动探测可能导致服务器以不同的TCP包或不同的时长来断开连接。
Frolov et al.给出的建议是让&lt;a href=&#34;https://censorbib.nymity.ch/pdf/Frolov2020a.pdf#page=13&#34;&gt;服务器在遇到错误时“永远读取buffer”&lt;/a&gt;。
直到攻击者自己主动断开连接。
这样做一方面减少了超时信息的泄漏，
另一方面也使得服务器只会使用FIN/ACK断开连接，
而不用RST和FIN/ACK的混合方式（原理请见&lt;a href=&#34;https://censorbib.nymity.ch/pdf/Frolov2020a.pdf#page=5&#34;&gt;Fig. 1&lt;/a&gt;）。&lt;/p&gt;
&lt;h2 id=&#34;独特的tls-clienthello指纹&#34;&gt;独特的TLS ClientHello指纹&lt;/h2&gt;
&lt;p&gt;2020年5月20日，&lt;a href=&#34;https://github.com/p4gefau1t&#34;&gt;@p4gefau1t&lt;/a&gt; &lt;a href=&#34;https://github.com/v2ray/discussion/issues/704&#34;&gt;报告&lt;/a&gt;V2Ray客户端发送的TLS ClientHello有着&lt;a href=&#34;https://tlsfingerprint.io/id/8c48b95f67260663&#34;&gt;非常独特的指纹&lt;/a&gt;。
这样独特的指纹不但给了审查者怀疑和识别V2Ray客户端和服务端的机会，
而且还允许审查者在不造成大量误伤（collateral damage）的情况下&lt;a href=&#34;https://github.com/v2ray/discussion/issues/704#issuecomment-636351112&#34;&gt;精确的&lt;/a&gt;封锁V2Ray产生的TLS流量。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/p4gefau1t&#34;&gt;@p4gefau1t&lt;/a&gt;进一步识别出这些独特的指纹是由&lt;a href=&#34;https://github.com/v2ray/v2ray-core/blob/edb4fed387d27890902e7ee97aae0d97292f912b/transport/internet/tls/config.go#L176-L230&#34;&gt;一套硬编码的密码套件&lt;/a&gt;造成的。
具体而言，
当&lt;code&gt;AllowInsecureCiphers&lt;/code&gt;的值为默认的&lt;code&gt;false&lt;/code&gt;时，
那套硬编码的密码套件就会被使用。&lt;/p&gt;
&lt;p&gt;V2Ray开发者&lt;a href=&#34;https://github.com/xiaokangwang&#34;&gt;@xiaokangwang&lt;/a&gt;让V2Ray自&lt;code&gt;v4.23.4&lt;/code&gt;起，使用go-tls库默认的设置来&lt;a href=&#34;https://github.com/v2ray/v2ray-core/issues/2542&#34;&gt;缓解&lt;/a&gt;这一弱点
（更多补丁细节请见 &lt;a href=&#34;https://github.com/v2ray/v2ray-core/pull/2510&#34;&gt;#2510&lt;/a&gt;，&lt;a href=&#34;https://github.com/v2ray/v2ray-core/pull/2512&#34;&gt;#2512&lt;/a&gt;和&lt;a href=&#34;https://github.com/v2ray/v2ray-core/issues/2518&#34;&gt;#2518&lt;/a&gt;。
&lt;a href=&#34;https://github.com/tomac4t&#34;&gt;@tomac4t&lt;/a&gt;总结了一个表格，
里面使用&lt;a href=&#34;tlsfingerprint.io&#34;&gt;tlsfingerprint.io&lt;/a&gt;来比较不同版本及配置下V2Ray使用的&lt;a href=&#34;https://gist.github.com/tomac4t/efd739d197f9f864a10f39c01d5c893f&#34;&gt;ClientHello的指纹的流行程度&lt;/a&gt;。
但结果显示，
即使是已经使用go-tls库默认设置后的指纹，
在实际的流量统计中似乎仍是很少见的。&lt;/p&gt;
&lt;p&gt;据我们所知，
在2019年11月，
&lt;a href=&#34;https://github.com/klzgrad/&#34;&gt;@klzgrad&lt;/a&gt;就曾&lt;a href=&#34;https://gist.github.com/klzgrad/25b2612d266a450abca6129a7ca595a4#v2ray-v4213&#34;&gt;调查过V2Ray v4.21.3&lt;/a&gt; 以及其他基于TLS的翻墙工具的ClientHello指纹。
其&lt;a href=&#34;https://gist.github.com/klzgrad/25b2612d266a450abca6129a7ca595a4&#34;&gt;结果&lt;/a&gt;显示，
很多工具在当时被调查的版本中的ClientHello有着罕见的指纹。&lt;/p&gt;
&lt;p&gt;旁注：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如&lt;a href=&#34;https://tlsfingerprint.io/static/frolov2019.pdf#page=13&#34;&gt;Client Hello Fingerprinting section&lt;/a&gt;所总结的，
许多研究工作已经使用ClientHello的指纹来识别TLS的实现。
Frolov et al.&lt;a href=&#34;https://tlsfingerprint.io/static/frolov2019.pdf&#34;&gt;发现&lt;/a&gt;包括赛风，蓝灯及Snowflake在内的许多翻墙软件，都（曾经）有着不同的指纹（详情见这里的&lt;a href=&#34;https://tlsfingerprint.io/static/frolov2019.pdf#page=9&#34;&gt;Table 2&lt;/a&gt;）。
Frolov et al.因此开发了&lt;a href=&#34;https://github.com/refraction-networking/utls&#34;&gt;utls&lt;/a&gt;并创建了&lt;a href=&#34;https://tlsfingerprint.io&#34;&gt;tlsfingerprint.io&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/p4gefau1t&#34;&gt;@p4gefau1t&lt;/a&gt;最开始调查这个问题是因为&lt;a href=&#34;https://github.com/rickyzhang82&#34;&gt;@rickyzhang82&lt;/a&gt;使用的一个&lt;a href=&#34;https://fr33land.net/2020/03/12/can-enable-tls-in-v2ray-help/&#34;&gt;机器学习模型&lt;/a&gt;可以以&lt;a href=&#34;https://github.com/rickyzhang82/V2Ray-Deep-Packet-Inspection&#34;&gt;0.9999&lt;/a&gt;的准确率识别V2Ray的TLS流量。
在不加更多训练的情况下，这个模型不能准确的识别使用了新ClientHello指纹的V2Ray TLS流量。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/DuckSoft&#34;&gt;@DuckSoft&lt;/a&gt;展示了如何使用&lt;a href=&#34;https://github.com/v2ray/discussion/issues/704#issuecomment-636351112&#34;&gt;一行iptables规则&lt;/a&gt;来封锁掉使用某一密码套件的所有TLS流量。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;伪装成http服务器的企图失败&#34;&gt;伪装成HTTP服务器的企图失败&lt;/h2&gt;
&lt;p&gt;2020年6月2日，&lt;a href=&#34;https://github.com/p4gefau1t&#34;&gt;@p4gefau1t&lt;/a&gt; &lt;a href=&#34;https://github.com/v2ray/v2ray-core/issues/2537&#34;&gt;报告&lt;/a&gt; V2Ray没能成功模仿真正的HTTP通讯。
汇报了的问题有两个：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;V2Ray客户端和服务端都只会在第一个TCP数据包中加入HTTP头部。这种奇特的TCP连接容易被检测和怀疑。&lt;/li&gt;
&lt;li&gt;V2Ray服务器对任何请求错误都笼统的回复一个&lt;a href=&#34;https://github.com/v2ray/v2ray-core/blob/85633ec25ea06aff31fb1754992ebf86a3a737bd/transport/internet/headers/http/http.go#L236-L263&#34;&gt;硬编码的500回复&lt;/a&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;介于2013年起&lt;a href=&#34;https://people.cs.umass.edu/~amir/papers/parrot.pdf&#34;&gt;鹦鹉已死&lt;/a&gt;，
与其尝试复活鹦鹉，
不如改用真正的HTTP引擎。
现在的许多翻墙软件已经使用了&lt;code&gt;应用前置&lt;/code&gt;（&lt;code&gt;application fronting&lt;/code&gt;）的概念，这些软件包括但不限于&lt;a href=&#34;https://github.com/caddyserver/forwardproxy&#34;&gt;forwardproxy&lt;/a&gt;，
&lt;a href=&#34;https://github.com/klzgrad/naiveproxy&#34;&gt;naiveproxy&lt;/a&gt; 和&lt;a href=&#34;https://github.com/trojan-gfw/trojan&#34;&gt;trojan&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;贡献&#34;&gt;贡献&lt;/h2&gt;
&lt;p&gt;文中提到的一切贡献、成果均属于该工作的原作者。&lt;/p&gt;
&lt;h2 id=&#34;致谢&#34;&gt;致谢&lt;/h2&gt;
&lt;p&gt;我们想在此感谢&lt;a href=&#34;https://github.com/studentmain&#34;&gt;@studentmain&lt;/a&gt;和&lt;a href=&#34;https://github.com/p4gefau1t&#34;&gt;@p4gefau1t&lt;/a&gt;。
他们帮助我们理解了他们所提出的重放攻击的许多细节，并与我们分享了他们对于下一步工作的建议。
我们还想感谢David Fifield和@studentmain对于这篇总结给出的详细反馈和建议。&lt;/p&gt;
&lt;h2 id=&#34;联系&#34;&gt;联系&lt;/h2&gt;
&lt;p&gt;这篇报告首发于&lt;a href=&#34;https://gfw.report/blog/v2ray_weaknesses/zh/&#34;&gt;GFW Report&lt;/a&gt;。我们还在&lt;a href=&#34;https://github.com/net4people/bbs/issues/36#issuecomment-644929739&#34;&gt;net4people&lt;/a&gt;和&lt;a href=&#34;https://ntc.party/t/summary-on-recently-discovered-v2ray-weaknesses/556&#34;&gt;ntc.party&lt;/a&gt;同步更新了这篇报告。&lt;/p&gt;
&lt;p&gt;下一步，我们将调查GFW是否已经使用了针对V2Ray的主动探测攻击。与此同时，如果您有任何翻墙服务器被封锁，我们都欢迎您或公开的或私下的与我们分享您的配置。因为这会帮助我们快速定位许多问题的根源。我们私下的联系方式可见&lt;a href=&#34;https://gfw.report&#34;&gt;GFW Report&lt;/a&gt;的页脚。&lt;/p&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>GFW Archaeology: gfw-looking-glass.sh</title>
        <link>https://gfw.report/blog/gfw_looking_glass/en/</link>
        <pubDate>Sun, 08 Mar 2020 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/gfw_looking_glass/en/</guid>
        
        <description>&lt;p&gt;I came across &lt;a href=&#34;https://twitter.com/gfwrev/status/25220534979&#34;&gt;a one-liner script&lt;/a&gt; by &lt;a href=&#34;https://twitter.com/gfwrev&#34;&gt;@gfwrev&lt;/a&gt; and got seriously impressed by it. Although it does not work anymore, I still would like to have a writeup on it for its beauty and for the author&amp;rsquo;s creativity.&lt;/p&gt;
&lt;p&gt;The one-liner named &lt;code&gt;gfw-looking-glass.sh&lt;/code&gt; is as follows:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt; true; &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt; printf &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;\0\0\1\0\0\1\0\0\0\0\0\0\6wux.ru\300&amp;#34;&lt;/span&gt; | nc -uq1 $SOME_IP &lt;span style=&#34;color:#ae81ff&#34;&gt;53&lt;/span&gt; | hd -s20; &lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;As shown in the figure below, it was able to &lt;a href=&#34;https://twitter.com/gfwrev/status/25222642896&#34;&gt;print out part of the memory of the GFW&lt;/a&gt;. But how?&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../images/KBCrx.png&#34; alt=&#34;&amp;ldquo;Image Not Found&amp;rdquo;&#34; title=&#34;A screenshot of the output of gfw-looking-glass.sh.&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;nc&#34;&gt;nc&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;nc -uq1 $SOME_IP 53&lt;/code&gt; sends input from stdin to the port 53 of &lt;code&gt;$SOME_IP&lt;/code&gt; as a UDP packet. As &lt;a href=&#34;https://twitter.com/gfwrev/status/25221199247&#34;&gt;explained&lt;/a&gt; by @gfwrev, &lt;code&gt;$SOME_IP&lt;/code&gt; can be any host that 1) does &lt;strong&gt;not&lt;/strong&gt; response to DNS query on port 53 and 2) is on the other side of the GFW (meaning if the query is sent from China, &lt;code&gt;$SOME_IP&lt;/code&gt; should be outside of China). Requirement 1 makes sure any response was from the GFW, rather than the destination host; while requirement 2 makes sure the well-crafted DNS query would be seen by the GFW.&lt;/p&gt;
&lt;h2 id=&#34;background&#34;&gt;Background&lt;/h2&gt;
&lt;p&gt;A little bit background on DNS format and DNS compression pointer can be very helpful to understand this exploitation.&lt;/p&gt;
&lt;h4 id=&#34;general-dns-format&#34;&gt;General DNS Format&lt;/h4&gt;
&lt;p&gt;Below is the general format of DNS queries and responses:&lt;/p&gt;
&lt;!--
protocol &#34;Identification:16,flags:16,number of questions:16, number of answer RRs:16, number of authority RRs:16, number of additional RRs:16,
--&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 0                   1                   2                   3
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 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
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|         Identification        |              flags            |
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|      number of questions      |      number of answer RRs     |
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|     number of authority RRs   |    number of additional RRs   |
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|                            questions                          |
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|                 answers(varaible number of RRs)               |
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|                anthority(varaible number of RRs)              |
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|         additional information(varaible number of RRs)        |
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;questions-field-format&#34;&gt;Questions Field Format&lt;/h4&gt;
&lt;!--
protocol &#34;query name:16, query type:16, query class:16&#34; --bits 16
--&gt;
&lt;p&gt;The format of questions field is as follows (:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 0                   1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|           query name          |
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;\                               \
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|                               |
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|           query type          |
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|           query class         |
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;query-field-format&#34;&gt;Query Field Format&lt;/h4&gt;
&lt;p&gt;The query field of a query of &lt;code&gt;www.google.com&lt;/code&gt; can be represented as follows. The&lt;/p&gt;
&lt;!--
./protocol &#34;3:1,www:3,6:1,google:6,3:1,com:3,0:1,1:2,1:2&#34; --bits 20
--&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 0                   1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|3| www |6|   google  |3| com |0| 1 | 1 |
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;!-- ./protocol &#39;3:8,www:24,6:8,google:48,3:8,com:24,0:8,1:16,1:16&#39; --bits 32 --&gt;
&lt;!-- ```txt --&gt;
&lt;!--  0                   1                   2                   3 --&gt;
&lt;!--  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 --&gt;
&lt;!-- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ --&gt;
&lt;!-- |       3       |                      www                      | --&gt;
&lt;!-- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ --&gt;
&lt;!-- |       6       |                     google                    | --&gt;
&lt;!-- +-+-+-+-+-+-+-+-+                               +-+-+-+-+-+-+-+-+ --&gt;
&lt;!-- |                                               |       3       | --&gt;
&lt;!-- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ --&gt;
&lt;!-- |                      com                      |       0       | --&gt;
&lt;!-- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ --&gt;
&lt;!-- |               1               |               1               | --&gt;
&lt;!-- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ --&gt;
&lt;!-- ``` --&gt;
&lt;p&gt;When &lt;a href=&#34;https://www.freesoft.org/CIE/RFC/1035/43.htm&#34;&gt;compression pointer&lt;/a&gt; is used, one example is as follows:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt; 0                   1
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|3|  www|1|1|           offset          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
&lt;/code&gt;&lt;/pre&gt;&lt;!--
protocol &#34;3:1, www:3,1:1,1:1,offset:14&#34; --bits 20
--&gt;
&lt;p&gt;We can see &lt;code&gt;www&lt;/code&gt; is followed by a two-byte pointer, whose two higher-order bits are turned on. The 14 bits after the two high-order bits in the pointer are offset. When offset == n, it points to the nth byte of DNS query message.&lt;/p&gt;
&lt;h2 id=&#34;explainations-on-the-crafted-dns-query&#34;&gt;Explainations on the crafted DNS query&lt;/h2&gt;
&lt;p&gt;We now take a closer look at this well-crafted DNS query:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;printf &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;\0\0\1\0\0\1\0\0\0\0\0\0\6wux.ru\300&amp;#34;&lt;/span&gt; | xxd -b -c &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;00000000: 00000000 00000000 00000001 00000000  ....
00000004: 00000000 00000001 00000000 00000000  ....
00000008: 00000000 00000000 00000000 00000000  ....
0000000c: 00000110 01110111 01110101 01111000  .wux
00000010: 00101110 01110010 01110101 11000000  .ru.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The first 12 bytes is just a typical DNS query where:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ID=0;&lt;/li&gt;
&lt;li&gt;Recursion Desired Flag is set;&lt;/li&gt;
&lt;li&gt;number of questions = 1;&lt;/li&gt;
&lt;li&gt;number of answer RRs = 0;&lt;/li&gt;
&lt;li&gt;number of authority RRs = 0;&lt;/li&gt;
&lt;li&gt;number of additional RRs = 0.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The most interesting part is in the questions field from byte 12 to 19.&lt;/p&gt;
&lt;p&gt;I first thought &lt;code&gt;\6wux.ru&lt;/code&gt; was a typo, which was supposed to be &lt;code&gt;\3wux\2ru&lt;/code&gt;. But then I realized &lt;code&gt;\6wux.ru&lt;/code&gt; was intentionally used to demonstrate how GFW parses the query name. In particular, although &lt;code&gt;\6wux.ru&lt;/code&gt; does not follow the query name format, the fact it could equivalently trigger the GFW as what &lt;code&gt;\3wux\2ru&lt;/code&gt; could do suggested the GFW &lt;a href=&#34;https://gfwrev.blogspot.com/2009/11/gfwdns.html&#34;&gt;&amp;ldquo;converted query name to string before pattern matching&amp;rdquo;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As introduced in the background section, a pointer takes 2 bytes. However, the crafted query has only 1 byte of the pointer. This incomplete pointer caused the GFW treating the following byte in the buffer as part of the offset. It can be inferred the offset in this query ranges from &lt;code&gt;0&lt;/code&gt; to &lt;code&gt;2^8-1&lt;/code&gt; and when the offset was greater than the DNS query length, the GFW would jump out of the DNS query and treat some bytes in its memory as part of the domain name. The GFW seemed not to validate if the offset is smaller than the DNS query length.&lt;/p&gt;
&lt;p&gt;Now that the GFW has included its memory as part of the query name, all we have to do is to trigger the GFW to send a forged DNS response. @gfwrev used &lt;code&gt;wux.ru&lt;/code&gt; as the &lt;code&gt;kw{rnd}&lt;/code&gt; like keyword in this query. Note different keyword patterns are summarized in the Table 2 (b) of this &lt;a href=&#34;https://www.usenix.org/system/files/conference/foci14/foci14-anonymous.pdf#page=5&#34;&gt;paper&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;explainations-on-the-forged-response&#34;&gt;Explainations on the forged response&lt;/h2&gt;
&lt;p&gt;After receveing the forged DNS response, &lt;code&gt;hd -s20&lt;/code&gt; helps to truncate the first 20 bytes of it. The 20 bytes contain 12 bytes of the fields before questions field and the first 8 bytes of the questions field: &lt;code&gt;\6wux.ru\300&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The parts that are not truncated are 1) what in GFW&amp;rsquo;s memory 2) followed by a forged answers field. Taking the first hex dump in the screenshot above as one example, the 2) forged answers field is:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;c0 0c 00 01 00 01 00 00 01 2c 00 04 cb 62 07 41
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;c0 0c&lt;/code&gt; represents the domain name, it is essentially a pointer to the query name in the question field.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;00 01&lt;/code&gt; and &lt;code&gt;00 01&lt;/code&gt; tells the answer type is A and class type is 1 respetively. This is interesting because back to the time &lt;code&gt;gfw-looking-glass.sh&lt;/code&gt; worked, the &lt;a href=&#34;https://gfwrev.blogspot.com/2009/11/gfwdns.html&#34;&gt;type 1 DNS responses&lt;/a&gt; forged by the GFW would set answer type to A and class type to 1 regardless of the query type and query class type.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;00 00 01 2c&lt;/code&gt; sets the DNS TTL to 300 seconds.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;00 04&lt;/code&gt; specifies the data length is 4.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cb 62 07 41&lt;/code&gt; is the forged IP address: &lt;code&gt;203.98.7.65&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Excluding 2) the bytes for answers field, we thus know 1) the bytes in GFW&amp;rsquo;s memory.&lt;/p&gt;
&lt;p&gt;One thing interesting is the length of the questions field in these forged responses. The questions field started with 8 bytes &lt;code&gt;\6wux.ru\300&lt;/code&gt; and was followed by 122 bytes GFW memory: &lt;code&gt;cb 9e ... 65 61&lt;/code&gt;. Interestingly, the hexdump of both exploits in the screenshot have a questions field of exactly 130 bytes. Since the maximum length of a domain name and a label of domain name are 253 bytes and 63 bytes respectively, I conjectured 130 bytes was an artifitial limitation set by the GFW for each question name.&lt;/p&gt;
&lt;h2 id=&#34;sidenote&#34;&gt;Sidenote&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Story after gfw-looking-glass.sh&lt;/strong&gt; In November 2014, @gfwrev &lt;a href=&#34;https://twitter.com/gfwrev/status/533564218113789952&#34;&gt;found&lt;/a&gt; GFW &amp;ldquo;gave up checking the pointers entirely&amp;rdquo;. @gfwrev thus &lt;a href=&#34;https://gist.github.com/klzgrad/f124065c0616022b65e5&#34;&gt;created a new way to evade DNS detection by crafting compression pointers&lt;/a&gt;. The testing results in November 2014 showed both V2EX and Google DNS servers could successfully parse those crafted DNS queries containing pointers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Why was pointer left incomplete?&lt;/strong&gt; One intuitive question to ask is whether it was possible to check certain relative location of GFW device&amp;rsquo;s memory by specifying an offset greater than the query message length ourselves. Since the GFW has given checking the pointers entirely, it cannot be tested anymore.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;kw{rnd} like keywords&lt;/strong&gt; I tested a few previously known &lt;code&gt;kw{rnd}&lt;/code&gt; like keywords, but none of them can still trigger the GFW as March 2020.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Conjectured 130 bytes domain name limitation&lt;/strong&gt; As of March 2020, GFW can prase and generate forged responses with maximum length. One can test it by:&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dig &lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;python -c &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;print( &amp;#39;a.&amp;#39;*121 + &amp;#39;twitter.com&amp;#39;)&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt; @&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$SOME_IP&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;credits&#34;&gt;Credits&lt;/h2&gt;
&lt;p&gt;GFW Report did not contribute in any step of this work. All credit goes to &lt;a href=&#34;https://twitter.com/gfwrev&#34;&gt;@gfwrev&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;contacts&#34;&gt;Contacts&lt;/h2&gt;
&lt;p&gt;This report first appeared on &lt;a href=&#34;https://gfw.report/blog/gfw_looking_glass/en/&#34;&gt;GFW Report&lt;/a&gt;. We also maintain an up-to-date copy of the report on both &lt;a href=&#34;https://github.com/net4people/bbs/issues/25&#34;&gt;net4people&lt;/a&gt; and &lt;a href=&#34;https://ntc.party/t/gfw-archaeology-gfw-looking-glass-sh/394&#34;&gt;ntc.party&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We encourage you to share your comments publicly or privately. Our private contact information can be found at the footer of &lt;a href=&#34;https://gfw.report/&#34;&gt;GFW Report&lt;/a&gt;.&lt;/p&gt;</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>GFW考古：gfw-looking-glass.sh</title>
        <link>https://gfw.report/blog/gfw_looking_glass/zh/</link>
        <pubDate>Sun, 08 Mar 2020 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/gfw_looking_glass/zh/</guid>
        
        <description>&lt;p&gt;我近日被&lt;a href=&#34;https://twitter.com/gfwrev&#34;&gt;@gfwrev&lt;/a&gt;所写的&lt;a href=&#34;https://twitter.com/gfwrev/status/25220534979&#34;&gt;一行脚本&lt;/a&gt;深深吸引。尽管它已经失效，但它所流露出来的创意与美感仍值得被记录。&lt;/p&gt;
&lt;p&gt;这行名为&lt;code&gt;gfw-looking-glass.sh&lt;/code&gt;的脚本如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt; true; &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt; printf &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;\0\0\1\0\0\1\0\0\0\0\0\0\6wux.ru\300&amp;#34;&lt;/span&gt; | nc -uq1 $SOME_IP &lt;span style=&#34;color:#ae81ff&#34;&gt;53&lt;/span&gt; | hd -s20; &lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如下图所示，它可以被用来&lt;a href=&#34;https://twitter.com/gfwrev/status/25222642896&#34;&gt;打印出GFW内存中的某一部分&lt;/a&gt;。这是怎么做到的呢?&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../images/KBCrx.png&#34; alt=&#34;&amp;ldquo;未找到图片&amp;rdquo;&#34; title=&#34;gfw-looking-glass.sh 的输出截图。&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;nc&#34;&gt;nc&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;nc -uq1 $SOME_IP 53&lt;/code&gt; 会把在stdin收到的信息以UDP包的形式发送给&lt;code&gt;$SOME_IP&lt;/code&gt;的53端口。如@gfwrev所&lt;a href=&#34;https://twitter.com/gfwrev/status/25221199247&#34;&gt;解释&lt;/a&gt;的，&lt;code&gt;$SOME_IP&lt;/code&gt;可以是满足以下两个条件的任何IP地址：1）&lt;strong&gt;不会&lt;/strong&gt;回应发送到其53端口的任何信息；2）在防火长城的另一面（比如，如果从中国发送，目的地IP地址则需是在外国）。条件1确保任何回复均伪造自GFW，而非目的IP；条件2确保你精心准备的DNS请求会被GFW看到。&lt;/p&gt;
&lt;h2 id=&#34;背景介绍&#34;&gt;背景介绍&lt;/h2&gt;
&lt;p&gt;一点点有关DNS格式和DNS压缩指针的介绍对理解这个漏洞利用很有帮助。&lt;/p&gt;
&lt;h4 id=&#34;dns通用格式&#34;&gt;DNS通用格式&lt;/h4&gt;
&lt;p&gt;下图是DNS请求和回复的通用格式：&lt;/p&gt;
&lt;!--
protocol &#34;Identification:16,flags:16,number of questions:16, number of answer RRs:16, number of authority RRs:16, number of additional RRs:16,
--&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt; 0                   1                   2                   3
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Identification        |              flags            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      number of questions      |      number of answer RRs     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     number of authority RRs   |    number of additional RRs   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            questions                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 answers(varaible number of RRs)               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                anthority(varaible number of RRs)              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         additional information(varaible number of RRs)        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;questions栏格式&#34;&gt;Questions栏格式&lt;/h4&gt;
&lt;!--
protocol &#34;query name:16, query type:16, query class:16&#34; --bits 16
--&gt;
&lt;p&gt;以下是Questions栏展开后的样子：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt; 0                   1
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           query name          |
\                               \
|                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           query type          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           query class         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;query-name栏格式&#34;&gt;Query Name栏格式&lt;/h4&gt;
&lt;p&gt;当查询域名为&lt;code&gt;www.google.com&lt;/code&gt;时，它可以被以下格式所表示：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt; 0                   1
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|3| www |6|   google  |3| com |0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
&lt;/code&gt;&lt;/pre&gt;&lt;!--
protocol &#34;3:1,www:3,6:1,google:6,3:1,com:3,0:1&#34; --bits 16
--&gt;
&lt;p&gt;一个使用&lt;a href=&#34;https://www.freesoft.org/CIE/RFC/1035/43.htm&#34;&gt;压缩指针&lt;/a&gt;的例子如下：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt; 0                   1
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|3|  www|1|1|           offset          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
&lt;/code&gt;&lt;/pre&gt;&lt;!--
protocol &#34;3:1, www:3,1:1,1:1,offset:14&#34; --bits 20
--&gt;
&lt;p&gt;我们可以看到&lt;code&gt;www&lt;/code&gt;后跟随着一个两字节的指针。这个指针的两个最高位为1，剩下的14位代表offset。当offset == n时，它指向整个DNS请求的n字节。&lt;/p&gt;
&lt;h2 id=&#34;对精心准备的dns请求的解释&#34;&gt;对精心准备的DNS请求的解释&lt;/h2&gt;
&lt;p&gt;我们现在来看一看这个精心准备好的DNS请求：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;printf &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;\0\0\1\0\0\1\0\0\0\0\0\0\6wux.ru\300&amp;#34;&lt;/span&gt; | xxd -b -c &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;00000000: 00000000 00000000 00000001 00000000  ....
00000004: 00000000 00000001 00000000 00000000  ....
00000008: 00000000 00000000 00000000 00000000  ....
0000000c: 00000110 01110111 01110101 01111000  .wux
00000010: 00101110 01110010 01110101 11000000  .ru.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;其前12字节和通常的DNS请求相同：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ID=0;&lt;/li&gt;
&lt;li&gt;Recursion Desired Flag is set;&lt;/li&gt;
&lt;li&gt;questions 数量 = 1;&lt;/li&gt;
&lt;li&gt;answer RRs 数量 = 0;&lt;/li&gt;
&lt;li&gt;authority RRs 数量 = 0;&lt;/li&gt;
&lt;li&gt;additional RRs 数量 = 0.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最有意思的部分在第12到19字节。&lt;/p&gt;
&lt;p&gt;起初我以为&lt;code&gt;\6wux.ru&lt;/code&gt;是作者笔误，应为&lt;code&gt;\3wux\2ru&lt;/code&gt;。但后来意识到，&lt;code&gt;\6wux.ru&lt;/code&gt;是作者故意为之，旨在同时演示GFW是如何处理查询域名的。具体来讲，虽然&lt;code&gt;\6wux.ru&lt;/code&gt;不符合协议格式，但却仍和符合格式的&lt;code&gt;\3wux\2ru&lt;/code&gt;一样，可以触发GFW的审查。这说明&lt;a href=&#34;https://gfwrev.blogspot.com/2009/11/gfwdns.html&#34;&gt;&amp;ldquo;GFW实际上是先将域名转换为字符串进行匹配的&amp;rdquo;&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;如背景介绍中所述，一个指针占两个字节。而我们准备的DNS查询包中的指针只有一个字节。这个缺了一半的指针导致GFW将在内存中的下一个字节当作指针offset的一部分。我们可以知道这个offset的可能值为&lt;code&gt;0&lt;/code&gt;到&lt;code&gt;2^8-1&lt;/code&gt;。当offset大于整个DNS查询包的长度时，GFW会跳出查询包，并将内存中的某一部分当作域名的一部分。GFW似乎并没有检查offset已经大于整个DNS查询包的长度的情况。&lt;/p&gt;
&lt;p&gt;现在GFW已经把其一部分内存中的内容当作查询域名的一部分，我们要做的就是触发GFW以得到包含查询域名的伪造的DNS应答包。@gfwrev在此使用了&lt;code&gt;wux.ru&lt;/code&gt; 作为&lt;code&gt;kw{rnd}&lt;/code&gt;类关键词。关键词的匹配模式已经被总结在&lt;a href=&#34;https://www.usenix.org/system/files/conference/foci14/foci14-anonymous.pdf#page=5&#34;&gt;这篇论文&lt;/a&gt;的Table 2 (b)中。&lt;/p&gt;
&lt;h2 id=&#34;对gfw伪造的dns应答包的解释&#34;&gt;对GFW伪造的DNS应答包的解释&lt;/h2&gt;
&lt;p&gt;收到DNS应答后，&lt;code&gt;hd -s20&lt;/code&gt;会帮我们截去应答包的前20个字节。这前20字节包括了12字节的各种项，以及questions栏的前8个字节：&lt;code&gt;\6wux.ru\300&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;留下的部分则包含两项：1) GFW内存中的内容 2) 和紧随其后的answers栏。以截图中第一个hexdump举例，其中的2）answers栏为：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;c0 0c 00 01 00 01 00 00 01 2c 00 04 cb 62 07 41
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;c0 0c&lt;/code&gt; 代表域名。它实际上是一个指向查询域名栏开头部分的指针。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;00 01&lt;/code&gt; 和 &lt;code&gt;00 01&lt;/code&gt; 分别代表回应类型为A（IPv4地址的意思），回应class类型为IN。这很有意思因为在那个&lt;code&gt;gfw-looking-glass.sh&lt;/code&gt;还能用的年代，GFW伪造的&lt;a href=&#34;https://gfwrev.blogspot.com/2009/11/gfwdns.html&#34;&gt;一型DNS应答包&lt;/a&gt;不管查询类型或查询class类型为何，都会把回应类型设置为A，回应class类型设置为IN。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;00 00 01 2c&lt;/code&gt; 代表DNS TTL为300秒。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;00 04&lt;/code&gt; 代表数据长度为4字节。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cb 62 07 41&lt;/code&gt; 是伪造的IP地址：&lt;code&gt;203.98.7.65&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;除去以上answers栏中字节，我们就得到了GFW内存中的内容。&lt;/p&gt;
&lt;p&gt;截屏中的几个应答包questions栏长度很有意思。以截图中第一个应答包为例，questions起始于8个字节&lt;code&gt;\6wux.ru\300&lt;/code&gt;，并跟随着122字节的GFW内存中的内容：&lt;code&gt;cb 9e ... 65 61&lt;/code&gt;。截图中的两个独立的应答包的questions栏均有130字节。考虑到其不同于域名的最大长度256字节和被&lt;code&gt;.&lt;/code&gt;分割的每个子域名的最大长度63字节，我们猜测130字节可能是GFW的人为限定。&lt;/p&gt;
&lt;h2 id=&#34;备注&#34;&gt;备注&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;gfw-looking-glass.sh 之后的故事&lt;/strong&gt; @gfwrev在2014年的11月&lt;a href=&#34;https://twitter.com/gfwrev/status/533564218113789952&#34;&gt;发现&lt;/a&gt;GFW “再也不认真处理DNS域名压缩指针了”。@gfwrev因此&lt;a href=&#34;https://gist.github.com/klzgrad/f124065c0616022b65e5&#34;&gt;想出了一系列利用压缩指针绕过DNS审查的新方法&lt;/a&gt;。其测试结果显示截止2014年11月，V2EX和Google的DNS服务器可以成功处理包含压缩指针的DNS查询。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;为什么要用不完整的指针?&lt;/strong&gt; 一个很容易引起的好奇是我们能否自己指定offset来控制要观察的GFW内存的相对位置。随着GFW不再处理DNS压缩指针，除非有更多的证据出土，这一问题的历史真相已不得而知。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;kw{rnd} like keywords&lt;/strong&gt; GFW Report在2020年3月测试了几个之前已知的&lt;code&gt;kw{rnd}&lt;/code&gt;类型的关键词，但它们都无法触发GFW的审查了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;关于130字节的人为限定的猜测&lt;/strong&gt; 在2020年3月，GFW可以处理和审查最大长度（256字节）的DNS请求。测试方法如下：&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dig &lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;python -c &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;print( &amp;#39;a.&amp;#39;*121 + &amp;#39;twitter.com&amp;#39;)&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt; @&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$SOME_IP&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;贡献&#34;&gt;贡献&lt;/h2&gt;
&lt;p&gt;GFW Report未在此工作的任何阶段中作出任何贡献。一切贡献、成果均来自&lt;a href=&#34;https://twitter.com/gfwrev&#34;&gt;@gfwrev&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;联系&#34;&gt;联系&lt;/h2&gt;
&lt;p&gt;这篇报告首发于&lt;a href=&#34;https://gfw.report/blog/gfw_looking_glass/zh/&#34;&gt;GFW Report&lt;/a&gt;。我们还在&lt;a href=&#34;https://github.com/net4people/bbs/issues/25&#34;&gt;net4people&lt;/a&gt;和&lt;a href=&#34;https://ntc.party/t/gfw-archaeology-gfw-looking-glass-sh/394&#34;&gt;ntc.party&lt;/a&gt;同步更新了这篇报告。&lt;/p&gt;
&lt;p&gt;我们鼓励您公开地或私下地分享与报告中的发现和假设相关的问题、评论或证据。我们私下的联系方式可见&lt;a href=&#34;https://gfw.report&#34;&gt;GFW Report&lt;/a&gt;的页脚。&lt;/p&gt;</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>How China Detects and Blocks Shadowsocks</title>
        <link>https://gfw.report/blog/gfw_shadowsocks/en/</link>
        <pubDate>Sun, 29 Dec 2019 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/gfw_shadowsocks/en/</guid>
        
        <description>&lt;p&gt;&lt;a href=&#34;https://shadowsocks.org/en/&#34;&gt;&lt;em&gt;Shadowsocks&lt;/em&gt;&lt;/a&gt; is one of the most popular circumvention tools in China. Since May 2019, there have been numerous anecdotal reports of the blocking of Shadowsocks from Chinese users. This report contains preliminary results of research into how the Great Firewall of China (GFW) detects and blocks Shadowsocks and its variants. Using measurement experiments, we find that the GFW &lt;strong&gt;passively monitors the network&lt;/strong&gt; for suspicious connections that may be Shadowsocks, then &lt;strong&gt;actively probes&lt;/strong&gt; the corresponding servers to test whether its guess is correct. The blocking of Shadowsocks is likely &lt;strong&gt;controlled by human factors&lt;/strong&gt; that increase the severity of blocking during politically sensitive times. We suggest a &lt;strong&gt;workaround&lt;/strong&gt;—changing the sizes of network packets during the Shadowsocks handshake—that (for now) effectively mitigates active probing of Shadowsocks servers. We will continue collaborating with developers to make Shadowsocks and related tools more resistant to blocking.&lt;/p&gt;
&lt;h2 id=&#34;main-findings&#34;&gt;Main Findings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The Great Firewall (GFW) has started to identify Shadowsocks servers using &lt;strong&gt;active probing&lt;/strong&gt;. The GFW combines passive and active detection: first it monitors the network for connections that may be Shadowsocks, then sends its own probes to the server (as if it were another user) to confirm its guess. The GFW is known to use active probing against various circumvention tools, and now Shadowsocks is a member of that group as well.&lt;/li&gt;
&lt;li&gt;The active probing system sends a variety of probe types. Some are based on &lt;strong&gt;replay&lt;/strong&gt; of previously recorded, genuine Shadowsocks connections, while others bear no apparent relation to previous connections.&lt;/li&gt;
&lt;li&gt;Just as in previous research, active probes come from &lt;strong&gt;diverse source IP addresses&lt;/strong&gt; in China, making them hard to filter out. Also as in previous research, network side-channel evidence suggests that these thousands of apparent probers are not independent but are centrally controlled.&lt;/li&gt;
&lt;li&gt;Only a small number of genuine client connections (more than 13) suffice to trigger active probing against a Shadowsocks server. The server will continue to be probed as long as legitimate clients attempt to connect to it. The first replay probes usually arrive within seconds of a genuine client connection.&lt;/li&gt;
&lt;li&gt;Once active probing has identified a Shadowsocks server, the GFW may block it by dropping future packets sent by the server—either from a specific port or from all ports on the server&amp;rsquo;s IP address. Or a server may &lt;strong&gt;not&lt;/strong&gt; be immediately blocked, despite being probed. The degree of blocking of Shadowsocks servers is likely controlled by some human factors during politically sensitive periods of time.&lt;/li&gt;
&lt;li&gt;The firewall’s initial passive monitoring for suspicious connections is at least partially based on network packet sizes. Modifying packet sizes, for example by installing &lt;a href=&#34;https://github.com/NullHypothesis/brdgrd&#34;&gt;&lt;em&gt;brdgrd&lt;/em&gt;&lt;/a&gt; on the Shadowsocks server, significantly mitigates active probing by disrupting the first step of classification.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;how-do-we-know-this&#34;&gt;How Do We Know This?&lt;/h2&gt;
&lt;p&gt;We set up our own Shadowsocks servers and connected to them from inside China, while capturing traffic on both sides for analysis. All experiments were conducted between July 5, 2019 and November 11, 2019. Most of the experiments were conducted since &lt;a href=&#34;https://github.com/net4people/bbs/issues/16&#34;&gt;&lt;em&gt;the reported large-scale blocking of Shadowsocks starting September 16, 2019&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In most of the experiments, we used &lt;a href=&#34;https://github.com/shadowsocks/shadowsocks-libev&#34;&gt;&lt;em&gt;shadowsocks-libev&lt;/em&gt;&lt;/a&gt; &lt;a href=&#34;https://github.com/shadowsocks/shadowsocks-libev/tree/v3.3.1&#34;&gt;&lt;em&gt;v3.3.1&lt;/em&gt;&lt;/a&gt; as both client and server, since it is an actively maintained and representative Shadowsocks implementation. We believe the vulnerabilities we discovered applies to many Shadowsocks implementations and its variants, including &lt;a href=&#34;https://getoutline.org/&#34;&gt;&lt;em&gt;OutlineVPN&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Unless explicitly specified, all clients and servers were used without any modification to their network functions, for example firewall rules. Shadowsocks can be configured with different encryption settings. We tested servers running both Stream ciphers and AEAD ciphers.&lt;/p&gt;
&lt;h2 id=&#34;details-about-active-probes&#34;&gt;Details About Active Probes&lt;/h2&gt;
&lt;p&gt;Shadowsocks is an encrypted protocol, designed not to have any static patterns in packet contents. It has two main operating modes, both keyed by a master password: &lt;a href=&#34;https://shadowsocks.org/en/spec/Stream-Ciphers.html&#34;&gt;&lt;em&gt;Stream&lt;/em&gt;&lt;/a&gt; (deprecated) and &lt;a href=&#34;https://shadowsocks.org/en/spec/AEAD-Ciphers.html&#34;&gt;&lt;em&gt;AEAD&lt;/em&gt;&lt;/a&gt; (recommended). Both modes are meant to require the client to know the master password before using the server; however in Stream mode the client is only weakly authenticated. Both modes are susceptible to replay of previously seen authenticated packets, unless separate measures to prevent replay are taken.&lt;/p&gt;
&lt;h3 id=&#34;probe-payload-types-and-censors-intentions&#34;&gt;Probe payload types and censors&amp;rsquo; intentions&lt;/h3&gt;
&lt;p&gt;We have observed 5 types of active probes:&lt;/p&gt;
&lt;p&gt;Replay based:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Identical replay (of the first data-carrying packets in a legitimate connection);&lt;/li&gt;
&lt;li&gt;Replay with byte 0 changed;&lt;/li&gt;
&lt;li&gt;Replay with bytes 0–7 and 62–63 changed;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Seemingly random (not a replay of any genuine connection that we can identify):&lt;/p&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;Probes of length 7–50 bytes, accounting for around 70% of the random probes;&lt;/li&gt;
&lt;li&gt;Probes of length exactly 221 bytes, accounting for around 30% of the random probes.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;./blog/gfw_shadowsocks/images/image1.png&#34; alt=&#34;&amp;ldquo;Image Not Found&amp;rdquo;&#34; title=&#34;CDF: Payload Lengths of PSH/ACKs Received by Outline Server&#34;&gt;&lt;/p&gt;
&lt;p&gt;We suspect that the active probing system identifies Shadowsocks servers and its variants by comparing a server’s responses to several of these probes.&lt;/p&gt;
&lt;p&gt;Shadowsocks-libev has a &lt;a href=&#34;https://github.com/shadowsocks/shadowsocks-org/issues/44&#34;&gt;&lt;em&gt;replay filter&lt;/em&gt;&lt;/a&gt;; however most other Shadowsocks implementations do not. The replay filter blocks only exact replay, not replay that has been modified, and is not by itself enough to prevent active probing from comparing the responses to several slightly different probes.&lt;/p&gt;
&lt;h3 id=&#34;how-many-connections-are-required-to-trigger-active-probing&#34;&gt;How many connections are required to trigger active probing?&lt;/h3&gt;
&lt;p&gt;It appears that a certain threshold of genuine simultaneous connections are required to trigger active probing. For example, in one experiment, as few as 13 connections were enough to trigger the active probing. Initial result also shows it may require a slightly more connections for the Shadowsocks servers using AEAD ciphers to get probed.&lt;/p&gt;
&lt;h3 id=&#34;relationship-between-genuine-connections-and-active-probings&#34;&gt;Relationship between genuine connections and active probings&lt;/h3&gt;
&lt;p&gt;We let a client make 16 connections to a Shadowsocks server every 5 minutes. Although our connections triggered a large number of active probes, the Shadowsocks server was never blocked, for reasons we do not fully understand.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./blog/gfw_shadowsocks/images/image6.png&#34; alt=&#34;&amp;ldquo;Image Not Found&amp;rdquo;&#34; title=&#34;Number of SYN Received Across Time&#34;&gt;&lt;/p&gt;
&lt;p&gt;The figure above shows that while legitimate clients attempt to connect to the server, it receives active probes; and when they stop trying to connect, the active probing mostly stops. The number of active probes sent per legitimate connection is variable and not 1:1.&lt;/p&gt;
&lt;h3 id=&#34;delay-of-replay-attacks&#34;&gt;Delay of replay attacks&lt;/h3&gt;
&lt;p&gt;The active probing system may save a genuine connection payload and replay it later, even in response to a separate, future connection. The figure below shows the variability of the delay between legitimate connections and the ensuing replay-based probes. Because one legitimate connection may cause many (up to 47 in one case) replay attacks, we present two different cases: the orange line is samples only the first replay-based probe for a particular legitimate connection; the blue line is samples all replay-based probes.&lt;/p&gt;
&lt;p&gt;The result shows that more than 90% of the replayed probes were sent within an hour of the connection from the legitimate client. The minimum observed delay was 0.4 seconds, while the maximum was around 400 hours.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./blog/gfw_shadowsocks/images/image2.png&#34; alt=&#34;&amp;ldquo;Image Not Found&amp;rdquo;&#34; title=&#34;CDF: Delay of Replay-based Probes&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;origin-of-the-probes&#34;&gt;Origin of the probes&lt;/h3&gt;
&lt;p&gt;Throughout all the experiments we conducted so far, we have seen 35,477 active probes sent from &lt;strong&gt;10,547&lt;/strong&gt; unique IP addresses which all belong to China.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Origin ASes.&lt;/strong&gt; The two autonomous systems that account for most of the Shadowsocks probes,  AS 4837 (CHINA169-BACKBONE CNCGROUP China169 Backbone,CN) and AS 4134 (CHINANET-BACKBONE No.31,Jin-rong Street, CN), are the same as have been documented in previous work.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./blog/gfw_shadowsocks/images/image3.png&#34; alt=&#34;&amp;ldquo;Image Not Found&amp;rdquo;&#34; title=&#34;ASN of unique probing IPs throughout all experiments&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Centralized Structures.&lt;/strong&gt; Despite coming from thousands of unique IP addresses, it appears that all active probing behavior is centrally managed by only a small number of processes. The evidence for this observation comes from network side channels. The figure below shows the &lt;a href=&#34;https://tools.ietf.org/html/rfc7323#section-3&#34;&gt;&lt;em&gt;TCP timestamp&lt;/em&gt;&lt;/a&gt; value that is attached to the SYN segment of each probe. The TCP timestamp is a 32-bit counter that increases at a fixed rate. It is not an absolute timestamp, but is relative to however the TCP implementation was initialized when the operating system last booted. The figure shows that what at first seem to be thousands of independent probers actually share only a small number of linear TCP timestamp sequences. In this case there are at least nine different physical systems or processes, with one of the nine accounting for the great majority of probes. We say “at least” nine process because we can probably not distinguish two or more independent processes sharing a very close interception value. The slopes of the sequences represent a timestamp increment frequency of 250 Hz.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./blog/gfw_shadowsocks/images/image5.png&#34; alt=&#34;&amp;ldquo;Image Not Found&amp;rdquo;&#34; title=&#34;TCP TSval of SYN Segments from Probers&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;how-can-we-circumvent-the-blocking&#34;&gt;How Can We Circumvent the Blocking?&lt;/h2&gt;
&lt;p&gt;Detection of Shadowsocks proceeds in two steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Passive identification of suspected Shadowsocks connections.&lt;/li&gt;
&lt;li&gt;Actively probing the server of suspected connections.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Therefore, to avoid blocking, you can (1) evade the passive detector, or (2) respond to active probes in a way that does not result in blocking. We will show how to do (1) by installing software that alters the sizes of packets.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/NullHypothesis/brdgrd&#34;&gt;&lt;em&gt;Brdgrd&lt;/em&gt;&lt;/a&gt;  is software that you can run on a Shadowsocks server that causes the client to break its Shadowsocks handshake into smaller packets. It was originally intended to disrupt the detection of Tor relays by forcing the GFW to do complicated TCP reassembly, but here we take advantage of brdgrd’s shaping of packet sizes from client to server. It seems that the GFW at least partially relies on packet sizes to passively detect Shadowsocks connections. Modifying packet sizes can significantly mitigate active probing by disrupting the first step in classification.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./blog/gfw_shadowsocks/images/image4.png&#34; alt=&#34;&amp;ldquo;Image Not Found&amp;rdquo;&#34; title=&#34;Effectiveness of brdgrd on Server&#34;&gt;&lt;/p&gt;
&lt;p&gt;The figure shows a Shadowsocks server undergoing active probing, and then the probing going to zero within several hours of brdgrd being activated. As soon as we disabled brdgrd, active probing resumed. The second time we enabled brdgrd, the probes completely stopped for around 40 hours, but then a few more probes came.&lt;/p&gt;
&lt;p&gt;Another experiment shows that brdgrd may be even more effective if used from the very beginning, before the server has been probed for the first time.&lt;/p&gt;
&lt;p&gt;Brdgrd works by rewriting the server’s TCP window size to a rarely small value. Therefore it is likely possible to detect that brdgrd is being used. So while brdgrd can effectively reduce active probing for the time being, it cannot be regarded as a permanent solution to Shadowsocks blocking.&lt;/p&gt;
&lt;h2 id=&#34;unresolved-questions&#34;&gt;Unresolved Questions&lt;/h2&gt;
&lt;p&gt;While the fact that active probing happens is clear, it is still unclear to us how active probing affects the blocking of Shadowsocks servers. That is, we have 33 Shadowsocks servers located all over the world. While most of them experienced heavy active probing, only 3 of them were ever blocked. More interestingly, one of the servers that was blocked was used for only a very short period of time, and thus had not received as many probes as some other servers that did not get blocked.&lt;/p&gt;
&lt;p&gt;We came up with three hypotheses, attempting to explain this interesting phenomenon:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The blocking of Shadowsocks servers is likely controlled by some human factors. That is, the GFW may maintain a list of highly suspected Shadowsocks servers and it depends on human factors whether known servers are blocked (or unblocked). This hypothesis would also partly explains why more blockings have been reported during politically sensitive periods of time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Another hypothesis is that active probing was ineffective against the particular Shadowsocks implementations that we used for most of the experiments. Indeed, all three servers that got blocked were running a different implementation than others. This can be true if the GFW has been exploiting some unique server reactions that are characteristics of only a certain set of Shadowsocks implementations.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The third hypothesis is there exists some geolocation inconsistency in censorship. All three servers that got blocked were running in a datacenter different from others, and were connected from a different residential network. This can be true if the GFW pays special attention to address ranges belonging to certain known datacenters, and/or pays special attention to connections from residential networks.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;thanks&#34;&gt;Thanks&lt;/h2&gt;
&lt;p&gt;We want to thank these people for research and helpful discussion on this topic:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Shadowsocks-libev developers&lt;/li&gt;
&lt;li&gt;Vinicius Fortuna and the Outline VPN developers at Jigsaw&lt;/li&gt;
&lt;li&gt;Eric Wustrow and many other researchers from CU Boulder&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;contacts&#34;&gt;Contacts&lt;/h2&gt;
&lt;p&gt;This report first appeared on &lt;a href=&#34;https://gfw.report/blog/gfw_shadowsocks&#34;&gt;GFW Report&lt;/a&gt;. We also maintain an up-to-date copy of the report on both &lt;a href=&#34;https://github.com/net4people/bbs/issues/22&#34;&gt;net4people&lt;/a&gt; and &lt;a href=&#34;https://ntc.party/t/how-china-detects-and-blocks-shadowsocks/289&#34;&gt;ntc.party&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We encourage you to share your questions, comments or evidence on our findings and hypotheses publicly or privately. Our private contact information can be found at the footer of &lt;a href=&#34;https://gfw.report&#34;&gt;GFW Report&lt;/a&gt;.&lt;/p&gt;</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>Shadowsocks 是如何被检测和封锁的</title>
        <link>https://gfw.report/blog/gfw_shadowsocks/zh/</link>
        <pubDate>Sun, 29 Dec 2019 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/blog/gfw_shadowsocks/zh/</guid>
        
        <description>&lt;p&gt;在中国，&lt;a href=&#34;https://shadowsocks.org/en/&#34;&gt;&lt;em&gt;Shadowsocks&lt;/em&gt;&lt;/a&gt; 是最流行的翻墙软件之一。从2019年5月起，大量的中国网民反馈他们的Shadowsocks服务器被封锁了。这篇报告是我们对中国的防火长城（GFW）是如何检测和封锁Shadowsocks及其衍生翻墙软件的初步调查结果。通过网络测量实验，我们发现GFW会&lt;strong&gt;被动的监视网络流量&lt;/strong&gt;从而识别出疑似Shadowsocks的网络流量；然后对对应的Shadowscoks服务器进行&lt;strong&gt;主动探测&lt;/strong&gt;已验证其怀疑的正确与否。Shadowscoks的封锁程度可能受&lt;strong&gt;人为因素&lt;/strong&gt;在政治敏感时期的控制。我们提出一种&lt;strong&gt;规避方法&lt;/strong&gt;，即改变网络数据包在Shadowsocks握手阶段的大小。这种方法被证明可以在现阶段有效减少主动探测。我们会继续与开发者合作让Shadowsocks及其衍生工具变得更加难以封锁。&lt;/p&gt;
&lt;h2 id=&#34;主要发现&#34;&gt;主要发现&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;防火长城（GFW）已经启用主动探测的手段来识别Shadowsocks服务器。GFW采用被动监测与主动探测相结合的方式：其首先监测网络连接找出疑似Shadowsocks的连接，然后再把自己伪装成一个客户端，尝试对疑似Shadowsocks的服务器进行连接，从而验证自己的猜测。&lt;a href=&#34;https://ensa.fi/active-probing/&#34;&gt;&lt;em&gt;我们知道GFW可以对多种翻墙工具进行主动探测&lt;/em&gt;&lt;/a&gt;，现在Shadowsocks也成了其中一员。&lt;/li&gt;
&lt;li&gt;主动探测系统可以发送多种不同类型的探测。其中一些探测是基于对之前合法客户端建立的连接的&lt;strong&gt;重放&lt;/strong&gt;；而另一些探测则似乎与之前的合法连接并不相关。&lt;/li&gt;
&lt;li&gt;如同之前的研究发现，主动探测来自&lt;strong&gt;大量不同的源IP地址&lt;/strong&gt;。这使得基于源IP来过滤GFW探测包不太可行。亦如之前的研究发现，网络层面的侧通道显示这些来自数以千计的IP地址的主动探测并非完全相互独立，而是源于GFW的集中控制。&lt;/li&gt;
&lt;li&gt;很少量的（大于13个）合法连接即足以触发对于Shadowsocks服务器的主动探测。只要合法客户端还在使用服务器，主动探测就会持续下去。GFW通常在合法连接到达服务器后的数秒内发送第一个主动探测。&lt;/li&gt;
&lt;li&gt;一旦GFW主动识别出Shadowsocks服务器，GFW可能会丢弃所有发送自服务器IP地址，或服务器Shadowsocks端口的数据包。但GFW也可能不立即采取封锁措施。Shadowsocks的封锁程度可能受人为因素在政治敏感时期的控制。&lt;/li&gt;
&lt;li&gt;GFW的被动监测模块至少会根据网络数据包的长度来怀疑可疑流量。改变数据包的长度，比如所在服务端安装&lt;a href=&#34;https://github.com/NullHypothesis/brdgrd&#34;&gt;&lt;em&gt;brdgrd&lt;/em&gt;&lt;/a&gt;，即可通过干扰被动监测模块对Shadowsocks流量的识别，进而显著减少主动探测的数量。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;我们怎么知道的&#34;&gt;我们怎么知道的？&lt;/h2&gt;
&lt;p&gt;我们在境外搭建了自己的Shadowsocks服务器并从中国用客户端连接它们，与此同时，在服务器和客户端两端抓包进行分析。所有的实验都是在2019年7月5号到2019年11月11号之间进行的。其中的绝大部分实验都是在&lt;a href=&#34;https://github.com/net4people/bbs/issues/16&#34;&gt;&lt;em&gt;2019年9月16日开始的一次大规模封锁&lt;/em&gt;&lt;/a&gt;后进行的。&lt;/p&gt;
&lt;p&gt;在绝大部分实验中，我们使用了&lt;a href=&#34;https://github.com/shadowsocks/shadowsocks-libev&#34;&gt;&lt;em&gt;shadowsocks-libev&lt;/em&gt;&lt;/a&gt; &lt;a href=&#34;https://github.com/shadowsocks/shadowsocks-libev/tree/v3.3.1&#34;&gt;&lt;em&gt;v3.3.1&lt;/em&gt;&lt;/a&gt;作为客户端和服务端，因为它是一个被积极维护且具有代表性的Shadowsocks实现。我们相信我们所发现的这些弱点在其他Shadowsocks及其衍生工具，如&lt;a href=&#34;https://getoutline.org/&#34;&gt;&lt;em&gt;Outline VPN&lt;/em&gt;&lt;/a&gt;，中同样存在。&lt;/p&gt;
&lt;p&gt;若非明确指出，我们未对任何实验中的客户端及服务器的网络功能进行修改，比如更改防火墙的设置。Shadowsocks可以使用不同的加密设置，我们对&lt;a href=&#34;https://shadowsocks.org/en/spec/Stream-Ciphers.html&#34;&gt;&lt;em&gt;Stream ciphers&lt;/em&gt;&lt;/a&gt;和&lt;a href=&#34;https://shadowsocks.org/en/spec/AEAD-Ciphers.html&#34;&gt;&lt;em&gt;AEAD ciphers&lt;/em&gt;&lt;/a&gt;都进行了测试。&lt;/p&gt;
&lt;h2 id=&#34;主动探测的一些细节&#34;&gt;主动探测的一些细节&lt;/h2&gt;
&lt;p&gt;Shadowsocks是一项加密通讯协议，其数据包的内容被设计得（应）不包含任何固定特征。其两种加密模式都基于一个主密码，两种模式分别为：&lt;a href=&#34;https://shadowsocks.org/en/spec/Stream-Ciphers.html&#34;&gt;&lt;em&gt;Stream&lt;/em&gt;&lt;/a&gt;(不推荐使用)和 &lt;a href=&#34;https://shadowsocks.org/en/spec/AEAD-Ciphers.html&#34;&gt;&lt;em&gt;AEAD&lt;/em&gt;&lt;/a&gt;(推荐)。这两种加密模式虽都要求客户端事先知道主密码；但是Stream加密模式的服务器仅能对客户端进行较弱的验证。除非使用额外的技术手段，两种模式都不能防御对之前发送过的验证数据包的重放攻击。&lt;/p&gt;
&lt;h3 id=&#34;主动探测的类型及审查者意图&#34;&gt;主动探测的类型及审查者意图&lt;/h3&gt;
&lt;p&gt;我们目前观察到五种不同的主动探测荷载。&lt;/p&gt;
&lt;p&gt;基于重放的探测：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;重放某一合法连接中第一个携带数据的数据包中的荷载。&lt;/li&gt;
&lt;li&gt;重放某一合法连接中第一个携带数据的数据包中的荷载，但更改第0字节。&lt;/li&gt;
&lt;li&gt;重放某一合法连接中第一个携带数据的数据包中的荷载，但更改第0–7和第62–63字节。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;看似随机的探测（并非基于我们所观察到的合法连接）：&lt;/p&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;荷载长度为7到50字节，占所有看似随机的主动探测的70%。&lt;/li&gt;
&lt;li&gt;荷载长度为221字节，占所有看似随机的主动探测的30%。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;./blog/gfw_shadowsocks/images/image1.png&#34; alt=&#34;CDF: Payload Lengths of PSH/ACKs Received by Outline Server&#34;&gt;&lt;/p&gt;
&lt;p&gt;我们怀疑GFW的主动探测系统根据服务器对这几种不同类型的主动探测的反馈来判定其是否为Shadowsocks服务器。&lt;/p&gt;
&lt;p&gt;Shadowsocks-libev有一个&lt;a href=&#34;https://github.com/shadowsocks/shadowsocks-org/issues/44&#34;&gt;&lt;em&gt;重放过滤器&lt;/em&gt;&lt;/a&gt;; 但是大多数的Shadowsocks实现则没有。重放过滤器可以防御一模一样的重放（类型1），如果载荷的最初几字节被改变了（类型2和3）那么过滤器就无法防御了。过滤器本身也不够阻止主动探测模块去比较服务器对多种探测的反应。&lt;/p&gt;
&lt;h3 id=&#34;多少次合法连接就能触发主动探测&#34;&gt;多少次合法连接就能触发主动探测&lt;/h3&gt;
&lt;p&gt;对主动探测的触发似乎需要达到一定的阀值。比如在一项实验中，仅仅13次连接就足以引起GFW的怀疑并触发主动探测。初步结果显示，使用了AEAD的Shadowsocks，可能需要稍微多一点点的连接才会触发主动探测。&lt;/p&gt;
&lt;h3 id=&#34;合法连接与主动探测的关系&#34;&gt;合法连接与主动探测的关系&lt;/h3&gt;
&lt;p&gt;我们让客服端每5分钟对Shadowsocks服务器进行16次连接。虽然我们的服务器触发了大量的主动探测，但不知为何，其并未被GFW封锁。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./blog/gfw_shadowsocks/images/image6.png&#34; alt=&#34;Number of SYN Received Across Time&#34;&gt;&lt;/p&gt;
&lt;p&gt;上图显示在客户端与服务器有通讯的时间里，服务器会收到主动探测。当合法客户端与服务器的通讯停止下来后，大部分的主动探测也停了。值得指出的是，每小时中主动探测的数量并非固定值，与合法客服端的连接数目比也并非1:1。&lt;/p&gt;
&lt;h3 id=&#34;主动探测的延迟性&#34;&gt;主动探测的延迟性&lt;/h3&gt;
&lt;p&gt;GFW的主动探测系统可以将合法连接的载荷保存下来，然后延迟一段时间再发起一个新的连接进行重放。下图显示了合法连接与重放攻击之间的延时关系。由于一个合法的载荷可能被多次重放（某一次实验中观察到的最大值为47次），我们呈现两组关系：桔黄色的线代表基于一个合法载荷的第一次重放；蓝色的线代表所有基于重放的探测（不限定为第一次）。&lt;/p&gt;
&lt;p&gt;结果显示多于90%的重放攻击发生在合法连接发送后的一小时之内。观察到的最短的延迟仅有0.4秒，而最长延迟竟有大约400小时。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./blog/gfw_shadowsocks/images/image2.png&#34; alt=&#34;CDF: Delay of Replay-based Probes&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;主动探测的源&#34;&gt;主动探测的源&lt;/h3&gt;
&lt;p&gt;我们在目前所有实验中总计观察到3,5477次主动探测。它们来自1,0547个不同的IP地址，IP地址均属于中国。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;源自治系统&lt;/strong&gt;。主动探测来源占比最多的两个自治系统 AS 4837 (CHINA169-BACKBONE CNCGROUP China169 Backbone,CN) 和 AS 4134 (CHINANET-BACKBONE No.31,Jin-rong Street,CN)，分别为中国联通和中国电信的主干网。这一结果与之前对&lt;a href=&#34;https://ensa.fi/active-probing/imc2015.pdf#page=8&#34;&gt;&lt;em&gt;主动探测的研究&lt;/em&gt;&lt;/a&gt;一致。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./blog/gfw_shadowsocks/images/image3.png&#34; alt=&#34;ASN of unique probing IPs throughout all experiments&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;中心化结构&lt;/strong&gt;。尽管这些主动探测来源于上千个不同的IP地址，有迹象显示它们的行为均受到一小撮进程的集中管控。下图显示了每个主动探测的SYN包所携带的&lt;a href=&#34;https://tools.ietf.org/html/rfc7323#section-3&#34;&gt;&lt;em&gt;TCP timestamp&lt;/em&gt;&lt;/a&gt;值。TCP timestamp是一个32位的计数器，其以固定的速度进行增长。其不是一个绝对值，而是一个取决于TCP实现和系统上次重启时间的相对值。下图显示这些来源于上千个独立的IP地址的主动探测，共享着很少量的TCP timestamp序列。在这次实验中，至少观察到9个不同的物理系统或进程，而绝大多数主动探测似乎来源于同一进程。我们说“至少”和“似乎”是因为如果两个或以上的独立进程的截距非常相近，那么我们可能把它们误认为一个进程。序列的斜率显示timestamp的增长速度为250HZ。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./blog/gfw_shadowsocks/images/image5.png&#34; alt=&#34;TCP TSval of SYN Segments from Probers&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;如何规避针对shadowsocks的封锁&#34;&gt;如何规避针对Shadowsocks的封锁？&lt;/h2&gt;
&lt;p&gt;GFW对于Shadowsocks的检测需要两步：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;第一步，被动监测并识别疑似Shadowsocks的连接。&lt;/li&gt;
&lt;li&gt;第二步，主动探测疑似Shadowsocks的服务器。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;因此，为避免封锁，我们可以（1）设法避免被监测模块怀疑到，或者（2）让服务器以不被怀疑的方式回应主动探测。我们将展示如何通过安装改变数据包大小的软件来达到目标（1）。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/NullHypothesis/brdgrd&#34;&gt;&lt;em&gt;Brdgrd&lt;/em&gt;&lt;/a&gt; 是一款可以被安装在Shadowsocks服务器上，从而导致Shadowsocks客服端发送较小的数据包的软件。它设计之初衷是用来干扰GFW识别Tor节点，因为它迫使GFW在检测之前首先对TCP流进行复杂的重组。但这里我们利用它可以改变从客户端到服务器的数据包大小的功能。改变数据包的大小可以干扰流量识别环节，从而在极大程度上缓解主动探测。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./blog/gfw_shadowsocks/images/image4.png&#34; alt=&#34;Effectiveness of brdgrd on Server&#34;&gt;&lt;/p&gt;
&lt;p&gt;上图显示了一个受到主动探测的Shadowsocks服务器，在开启brdgrd后的数小时内不再收到主动探测。而当我们关闭brdgrd，主动探测立刻继续。我们第二次开启brdgrd，主动探测在之后的40小时里完全停止，但之后又有些许主动探测。&lt;/p&gt;
&lt;p&gt;另一组实验显示，在第一次运行Shadowoscks之初就启用brdgrd也许更加的有效。&lt;/p&gt;
&lt;p&gt;Brdgrd的原理是将TCP Window Size改写为一个小得罕见的值。因此，审查者可能可以检测出brdgrd被使用了。因此，尽管brdgrd可以在现阶段有效的减少主动探测，其不能被看作是一个一劳永逸的解决方案。&lt;/p&gt;
&lt;h2 id=&#34;尚未解决的问题&#34;&gt;尚未解决的问题&lt;/h2&gt;
&lt;p&gt;尽管我们已经清楚GFW会主动探测Shadowsocks服务器，我们仍不清楚主动探测与Shadowsocks服务器被封之间的关系。我们有33组Shadowsocks服务器分布于世界各地。尽管它们中的大多数都遭受到了大量的主动探测，但是仅有3台服务器被封锁。更有趣的是，其中一台被封锁的服务器只被使用了很短的一段时间，因此受到的主动探测数量应该比很多未被封锁的服务器要少得多。&lt;/p&gt;
&lt;p&gt;我们提出3种假设试图解释这一有趣的现象：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Shadowsocks服务器的封锁是由人为的因素控制的。也就是说，GFW也许维护了一份在不同程度上被怀疑为Shadowsocks服务器的清单，然后根据人工因素来决定对服务器进行封锁还是解封。这一假设可以解释为什么更多的服务器是在政治敏感时期被封锁的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;另一个假设是GFW的主动探测对于一些我们实验采用的Shadowsocks实现无效。确实，我们被封锁的那3台服务器都是使用了与其他实验中的Shadowsocks不同的实现。如果GFW是根据某些Shadowsocks服务器实现对主动探测的特有反应来识别判断的话，那么这一假设更有可能为真。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;第三个假设是对于Shadowsocks的封锁在地理上存在着不一致性。我们被封锁的那3台服务器所在的数据中心不同于其他大多数实验，使用的客服端也是位于一般的居民网络，而非数据中心。如果GFW更注意属于某些数据中心的IP地址，抑或更注意来自一般居民网络的客户端连接，那么这一假设更有可能为真。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;致谢&#34;&gt;致谢&lt;/h2&gt;
&lt;p&gt;我们想在此感谢以下人员对此主题的讨论和研究：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Shadowsocks-libev的开发者们&lt;/li&gt;
&lt;li&gt;Vinicius Fortuna以及来自Jigsaw的Outline VPN开发者们&lt;/li&gt;
&lt;li&gt;Eric Wustrow以及其他多名来自科罗拉多大学博尔德分校的研究人员&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;联系我们&#34;&gt;联系我们&lt;/h2&gt;
&lt;p&gt;这篇报告首发于&lt;a href=&#34;https://gfw.report/blog/gfw_shadowsocks/zh.html&#34;&gt;GFW Report&lt;/a&gt;。我们还在&lt;a href=&#34;https://github.com/net4people/bbs/issues/22&#34;&gt;net4people&lt;/a&gt;和&lt;a href=&#34;https://ntc.party/t/how-china-detects-and-blocks-shadowsocks/289&#34;&gt;ntc.party&lt;/a&gt;同步更新了这篇报告。&lt;/p&gt;
&lt;p&gt;我们鼓励您公开地或私下地分享与报告中的发现和假设相关的问题、评论或证据。我们私下的联系方式可见&lt;a href=&#34;https://gfw.report/&#34;&gt;GFW Report&lt;/a&gt;的页脚。&lt;/p&gt;</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>Great Firewall Report - GFW Report</title>
        <link>https://gfw.report/en/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/en/</guid>
        
        <description>&lt;div class=&#34;container&#34;&gt;
&lt;div class=&#34;row&#34;&gt;
    &lt;div class=&#34;col-md-7 mb-5&#34;&gt;
    &lt;h2&gt;What We Do&lt;/h2&gt;
    &lt;hr&gt;
    &lt;p&gt;GFW Report is a long-term censorship monitoring platform, aiming at advancing the understanding and spreading the awareness of Internet censorship. Our platform has a primary focus on the Internet censorship in China as it is one of the most repressive censoring regimes that has been developing and deploying notoriously sophisticated censorship techniques. &lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&#34;col-md-5 mb-5&#34;&gt;
    &lt;h2&gt;News&lt;/h2&gt;
    &lt;hr&gt;
    &lt;p&gt;September 2025:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href=&#34;./blog/geedge_and_mesa_leak/en/&#34;&gt;Geedge &amp; MESA Leak: Analyzing the Great Firewall’s Largest Document Leak&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;p&gt;August 2025:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href=&#34;./publications/usenixsecurity25/en/&#34;&gt;USENIX Security&#39;25: Exposing and Circumventing SNI-based QUIC Censorship of the Great Firewall of China&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;./blog/gfw_unconditional_rst_20250820/en/&#34;&gt;Analysis of the GFW&#39;s Unconditional Port 443 Block on August 20, 2025&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;p&gt;May 2025:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href=&#34;./publications/sp25/en/&#34;&gt;S&amp;P&#39;25: &lt;i&gt;A Wall Behind A Wall: Emerging Regional Censorship in China&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;p&gt;February 2025:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href=&#34;./publications/ndss25/en/&#34;&gt;NDSS&#39;25: &lt;i&gt;Wallbleed: A Memory Disclosure Vulnerability in the Great Firewall of China&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;p&gt;November 2023:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href=&#34;./blog/developers_deleted_repos/en/&#34;&gt;Many Popular Censorship Circumvention Tools Deleted or Archived since November 2, 2023&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;p&gt;October 2023:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href=&#34;./blog/blocking_of_1111/en/&#34;&gt;The blocking of 1.1.1.1 in China, starting from 2023-10-01&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;p&gt;April 2023:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href=&#34;./publications/usenixsecurity23/en/&#34;&gt;USENIX SECURITY&#39;23: &lt;i&gt;How the Great Firewall of China Detects and Blocks Fully Encrypted Traffic&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;p&gt;October 2022:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href=&#34;./blog/modified_shadowsocks/en/&#34;&gt;Sharing a modified Shadowsocks&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;./blog/thoughs_on_cat_and_mouse_game/en/&#34;&gt;Sharing our thoughts on the cat-and-mouse game&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;./blog/updated_trojan_go/en/&#34;&gt;Sharing a Trojan-go with updated uTLS fingerprints&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;./blog/blocking_of_tls_based_circumvention_tools/en/&#34;&gt;Large scale blocking of TLS-based censorship circumvention tools in China&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;./blog/blocking_of_google_com/en/&#34;&gt;The Great Firewall of China has blocked google.com and all its subdomains&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;p&gt;September 2021:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href=&#34;./blog/private_relay_censorship/en/&#34;&gt;Evaluating the censorship resistance of Apple&#39;s iCloud Private Relay&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;./blog/private_relay_privacy/en/&#34;&gt;Reflections on Apple&#39;s iCloud Private Relay: Does it Really Improve Privacy?&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;p&gt;January 2021:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href=&#34;./blog/ss_tutorial/en/&#34;&gt;How to Deploy a Censorship Resistant Shadowsocks-libev Server&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;./blog/ss_advise/en/&#34;&gt;A practical guide to defend against the GFW&#39;s latest active probing&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;p&gt;October 2020:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href=&#34;./publications/imc20/en/&#34;&gt;IMC&#39;20 Paper: &lt;i&gt;How China Detects and Blocks Shadowsocks&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;./talks/imc20/en/&#34;&gt;IMC&#39;20 Talk: &lt;i&gt;How China Detects and Blocks Shadowsocks&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;p&gt;August 2020:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href=&#34;./publications/foci20_dns/en/&#34;&gt;FOCI&#39;20: &lt;i&gt;Triplet Censors: Demystifying Great Firewall’s DNS Censorship Behavior&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;p&gt;August 2020:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href=&#34;./blog/gfw_esni_blocking/en/&#34;&gt;Exposing and Circumventing China&#39;s Censorship of ESNI&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;p&gt;June 2020:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href=&#34;./blog/v2ray_weaknesses/en/&#34;&gt;Summary on Recently Discovered V2Ray Weaknesses&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;p&gt;March 2020:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href=&#34;./blog/gfw_looking_glass/en/&#34;&gt;GFW Archaeology: gfw-looking-glass.sh&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;p&gt;December 2019:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href=&#34;./blog/gfw_shadowsocks&#34;&gt;Report: How China Detects and Blocks Shadowsocks&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description>

        

        

        

        
        
      </item>
    
      <item>
        <title>Great Firewall Report - GFW Report</title>
        <link>https://gfw.report/zh/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://gfw.report/zh/</guid>
        
        <description>&lt;div class=&#34;container&#34;&gt;
&lt;div class=&#34;row&#34;&gt;
    &lt;div class=&#34;col-md-7 mb-5&#34;&gt;
        &lt;h2&gt;我们的工作&lt;/h2&gt;
        &lt;hr&gt;
        &lt;p&gt;GFW Report 是一个长期的审查检测平台，旨在增进对互联网审查的理解并传播相关认知。我们的平台主要关注中国的互联网审查，因为无论是其审查技术还是审查政策，都一直是众多国家中最精妙的一个。&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&#34;col-md-5 mb-5&#34;&gt;
        &lt;h2&gt;最近消息&lt;/h2&gt;
        &lt;hr&gt;
        &lt;p&gt;2025年9月：&lt;/p&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&#34;./blog/geedge_and_mesa_leak/zh/&#34;&gt;积至公司与MESA实验室：防火长城史上最大规模文件外泄分析&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;2025年8月：&lt;/p&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&#34;./publications/usenixsecurity25/zh/&#34;&gt;USENIX Security&#39;25: 揭示并绕过中国防火长城基于SNI的QUIC封锁机制&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&#34;./blog/gfw_unconditional_rst_20250820/zh/&#34;&gt;2025年8月20日中国防火长城GFW对443端口实施无条件封禁的分析&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;2025年5月：&lt;/p&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&#34;./publications/sp25/zh/&#34;&gt;S&amp;P&#39;25: 墙中之墙：中国地区性审查的兴起&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;2025年2月：&lt;/p&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&#34;./publications/ndss25/zh/&#34;&gt;NDSS&#39;25: Wallbleed（墙出血）：中国防火长城中的内存数据泄露漏洞&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;2023年11月：&lt;/p&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&#34;./blog/developers_deleted_repos/zh/&#34;&gt;自2023年11月2日起，中国开发者在GitHub上删除或存档翻墙工具&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;2023年10月：&lt;/p&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&#34;./blog/blocking_of_1111/zh/&#34;&gt;中国的防火长城自2023年10月1日起封锁了1.1.1.1&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;2023年4月：&lt;/p&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&#34;./publications/usenixsecurity23/zh/&#34;&gt;USENIX SECURITY&#39;23: 中国的防火长城是如何检测和封锁完全加密流量的&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;2022年10月：&lt;/p&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&#34;./blog/updated_trojan_go/zh/&#34;&gt;分享一个采用uTLS指纹的Trojan-go客户端&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&#34;./blog/blocking_of_tls_based_circumvention_tools/zh/&#34;&gt;中国大规模地封锁基于TLS的翻墙工具&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&#34;./blog/modified_shadowsocks/zh/&#34;&gt;分享一个修改版的Shadowsocks&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&#34;./blog/thoughs_on_cat_and_mouse_game/zh/&#34;&gt;分享我们对猫鼠游戏的一点想法&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&#34;./blog/blocking_of_google_com/zh/&#34;&gt;中国的防火长城屏蔽了google.com及其所有的子域名&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;2021年9月：&lt;/p&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&#34;./blog/private_relay_censorship/zh/&#34;&gt;评估苹果的iCloud Private Relay的抗封锁能力&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&#34;./blog/private_relay_privacy/en/&#34;&gt;对苹果 iCloud Private Relay 的反思：它真的能增强隐私吗？&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;2021年1月：&lt;/p&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&#34;./blog/ss_tutorial/zh/&#34;&gt;如何部署一台抗封锁的Shadowsocks-libev服务器&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&#34;./blog/ss_advise/zh/&#34;&gt;防御GFW主动探测的实用指南&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;2020年10月：&lt;/p&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&#34;./publications/imc20/zh/&#34;&gt;IMC&#39;20 论文: 中国如何检测和封锁Shadowsocks&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&#34;./talks/imc20/zh/&#34;&gt;IMC&#39;20 演讲: 中国如何检测和封锁Shadowsocks&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;2020年8月：&lt;/p&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&#34;./publications/foci20_dns/zh/&#34;&gt;FOCI&#39;20: 三重审查：揭秘防火长城的DNS审查行为&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;2020年8月：&lt;/p&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&#34;./blog/gfw_esni_blocking/zh/&#34;&gt;揭示和规避中国对加密SNI（ESNI）的封锁&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;2020年6月：&lt;/p&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&#34;./blog/v2ray_weaknesses/zh/&#34;&gt;总结近期发现的V2Ray弱点&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;2020年3月：&lt;/p&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&#34;./blog/gfw_looking_glass/zh/&#34;&gt;GFW考古：gfw-looking-glass.sh&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;2019年12月：&lt;/p&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&#34;./blog/gfw_shadowsocks/zh/&#34;&gt;报告：Shadowsocks 是如何被检测和封锁的&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>

        

        

        

        
        
      </item>
    
  </channel>
</rss>