<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Android 安全 on lategege 的技术博客</title><link>https://lategege.com/tags/android-%E5%AE%89%E5%85%A8/</link><description>Recent content in Android 安全 on lategege 的技术博客</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Thu, 26 Mar 2026 18:29:00 +0800</lastBuildDate><atom:link href="https://lategege.com/tags/android-%E5%AE%89%E5%85%A8/index.xml" rel="self" type="application/rss+xml"/><item><title>网络代理与移动安全攻防：从 TUN/iptables 到 Hook/TEE 的工程化全景</title><link>https://lategege.com/p/%E7%BD%91%E7%BB%9C%E4%BB%A3%E7%90%86%E4%B8%8E%E7%A7%BB%E5%8A%A8%E5%AE%89%E5%85%A8%E6%94%BB%E9%98%B2%E4%BB%8E-tun/iptables-%E5%88%B0-hook/tee-%E7%9A%84%E5%B7%A5%E7%A8%8B%E5%8C%96%E5%85%A8%E6%99%AF/</link><pubDate>Thu, 26 Mar 2026 18:29:00 +0800</pubDate><guid>https://lategege.com/p/%E7%BD%91%E7%BB%9C%E4%BB%A3%E7%90%86%E4%B8%8E%E7%A7%BB%E5%8A%A8%E5%AE%89%E5%85%A8%E6%94%BB%E9%98%B2%E4%BB%8E-tun/iptables-%E5%88%B0-hook/tee-%E7%9A%84%E5%B7%A5%E7%A8%8B%E5%8C%96%E5%85%A8%E6%99%AF/</guid><description>&lt;img src="https://lategege.com/" alt="Featured image of post 网络代理与移动安全攻防：从 TUN/iptables 到 Hook/TEE 的工程化全景" /&gt;
 &lt;blockquote&gt;
 &lt;p&gt;这篇是工程向版本：不聊概念套话，直接给分层模型 + 可验证命令。目标是把“流量怎么走”和“结果该不该信”彻底分开。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="0-先说结论tldr"&gt;0) 先说结论（TL;DR）
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;SOCKS5 是本地入口接口，不是抗审查协议本体&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;全局代理不止是改路由&lt;/strong&gt;，常见是 &lt;code&gt;TUN + 路由&lt;/code&gt; 或 &lt;code&gt;Netfilter(iptables/nftables)&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;iptables ≠ 路由表&lt;/strong&gt;：前者改包/拦截，后者选路。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;fake-ip 的价值是夺回 DNS 控制权&lt;/strong&gt;，不是“拿假 IP 去公网通信”。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VPN 只能保证路径经过你，不保证你能看 HTTPS 明文&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hook 的本质是控制流重定向&lt;/strong&gt;，不是“改点内存”这么简单。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;支付类 App 的核心是服务端裁决 + 硬件密钥边界&lt;/strong&gt;，不是“客户端看起来对了就放行”。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="1-三个层次别混入口调度封装"&gt;1) 三个层次别混：入口、调度、封装
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;入口层&lt;/strong&gt;：SOCKS5 / HTTP / TUN&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;调度层&lt;/strong&gt;：Clash/OpenClash/sing-box（规则、分流、策略）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;封装层&lt;/strong&gt;：SS/SSR/VMess/VLESS/Trojan/TLS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://img.lategege.com:30443/images/2026/03/26/traffic-models-v5.png"&gt;&lt;/p&gt;
&lt;p&gt;一句话：你看到“本地 7890/1080”通常只是在入口层，不代表后面协议是什么。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="2-全局代理到底改了什么带命令"&gt;2) “全局代理”到底改了什么（带命令）
&lt;/h2&gt;&lt;h3 id="21-socks5http-手动代理应用层"&gt;2.1 SOCKS5/HTTP 手动代理（应用层）
&lt;/h3&gt;&lt;p&gt;应用主动把流量交给代理，系统路由本身可能不变。&lt;/p&gt;
&lt;p&gt;验证：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 看本地代理端口是否监听&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;lsof -nP -iTCP -sTCP:LISTEN &lt;span class="p"&gt;|&lt;/span&gt; grep -E &lt;span class="s1"&gt;&amp;#39;1080|7890|7891&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="22-tun-模式路由接管"&gt;2.2 TUN 模式（路由接管）
&lt;/h3&gt;&lt;p&gt;典型流程：创建 &lt;code&gt;tun0&lt;/code&gt; → 改路由 → 代理进程读 TUN fd。&lt;/p&gt;
&lt;p&gt;验证：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 看虚拟网卡&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ip a &lt;span class="p"&gt;|&lt;/span&gt; grep -A2 -E &lt;span class="s1"&gt;&amp;#39;tun|utun&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 看默认路由是否指向 tun&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ip route
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# macOS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;netstat -rn &lt;span class="p"&gt;|&lt;/span&gt; grep -E &lt;span class="s1"&gt;&amp;#39;default|utun&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="23-iptables-透明代理内核链路接管"&gt;2.3 iptables 透明代理（内核链路接管）
&lt;/h3&gt;&lt;p&gt;不要求应用配代理，内核侧重定向/标记。&lt;/p&gt;
&lt;p&gt;验证：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 查看 NAT 表规则&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo iptables -t nat -S
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo iptables -t nat -L -n -v
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# nft 环境&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo nft list ruleset
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="3-为什么说-iptables-不是路由表"&gt;3) 为什么说 iptables 不是路由表
&lt;/h2&gt;&lt;p&gt;对比：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;路由表：决定“从哪张网卡走、下一跳是谁”。&lt;/li&gt;
&lt;li&gt;iptables：决定“这个包要不要改、要不要丢、要不要重定向”。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;实操对照：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 路由决策（看某个目标会走哪）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ip route get 1.1.1.1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 包计数变化（是否命中某条劫持规则）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo iptables -t nat -L -n -v &lt;span class="p"&gt;|&lt;/span&gt; head -60
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="4-fake-ip-的关键把-dns-控制权拿回来"&gt;4) fake-ip 的关键：把 DNS 控制权拿回来
&lt;/h2&gt;&lt;p&gt;&lt;img loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://img.lategege.com:30443/images/2026/03/26/fake-ip-sequence-v3.png"&gt;&lt;/p&gt;
&lt;p&gt;fake-ip 常见逻辑：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;App 询问 &lt;code&gt;example.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;代理返回保留网段假 IP（如 &lt;code&gt;198.18.x.x&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;App 连接假 IP&lt;/li&gt;
&lt;li&gt;代理查映射表反解域名，再用可信 DNS 做真实解析并转发&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;排查命令：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 直接查本机解析结果（对比开/关代理前后）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dig example.com
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 抓 DNS 包看请求打向哪里&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo tcpdump -ni any port &lt;span class="m"&gt;53&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 如用 DoH/DoT，53 端口可能很少，需结合代理日志看&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="5-https-可见性边界路径控制--明文可见"&gt;5) HTTPS 可见性边界：路径控制 ≠ 明文可见
&lt;/h2&gt;&lt;p&gt;典型误区：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;“我有 VPN 服务器，流量都过我机子，为什么还是看不到请求正文？”&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;因为 TLS 端点通常是：&lt;code&gt;App &amp;lt;-&amp;gt; 目标服务&lt;/code&gt;。中间节点看到的是密文。&lt;/p&gt;
&lt;p&gt;可验证：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 抓到的通常是 TLS record，不是 HTTP 明文&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo tcpdump -ni any host &amp;lt;target_ip&amp;gt; and port &lt;span class="m"&gt;443&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果能看明文，一般说明你在终端侧成功做了 MITM（且 App 信任了你的证书链）。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="6-hook-的工程定义改执行路径"&gt;6) Hook 的工程定义：改“执行路径”
&lt;/h2&gt;&lt;p&gt;更准确地说：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;Hook = 在运行时把“调用 A”改成“先走你的逻辑，再决定是否回到 A”。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;常见层级：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Java 层：方法替换/拦截（ART）&lt;/li&gt;
&lt;li&gt;Native 层：PLT/GOT / inline hook&lt;/li&gt;
&lt;li&gt;网络层函数：&lt;code&gt;SSL_write&lt;/code&gt; / &lt;code&gt;send&lt;/code&gt; 等&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;判断口诀：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;改变量值，不一定是 hook&lt;/li&gt;
&lt;li&gt;改调用去向，才是 hook 的核心&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="7-支付银行类-app-为何看到了也不一定有用"&gt;7) 支付/银行类 App 为何“看到了也不一定有用”
&lt;/h2&gt;&lt;p&gt;&lt;img loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://img.lategege.com:30443/images/2026/03/26/security-layers-v3.png"&gt;&lt;/p&gt;
&lt;p&gt;真实防线是多层组合：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;环境检测&lt;/strong&gt;：root、调试、注入框架&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;运行时完整性&lt;/strong&gt;：关键路径自检、反篡改&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;密钥边界&lt;/strong&gt;：Keystore/TEE，密钥不可导出&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;服务端裁决&lt;/strong&gt;：签名复核、nonce/timestamp、设备指纹、行为风控&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;所以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你可能拿到某段明文&lt;/li&gt;
&lt;li&gt;但不代表你能伪造一个服务端接受的完整交易&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="8-一套实战排障顺序建议直接照这个查"&gt;8) 一套实战排障顺序（建议直接照这个查）
&lt;/h2&gt;&lt;h3 id="step-a先确认流量有没有经过代理"&gt;Step A：先确认“流量有没有经过代理”
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl --proxy socks5h://127.0.0.1:1080 https://ifconfig.me
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl https://ifconfig.me
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 两者出口 IP 是否不同&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="step-b再确认dns-控制权在谁手里"&gt;Step B：再确认“DNS 控制权在谁手里”
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dig +short example.com
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo tcpdump -ni any port &lt;span class="m"&gt;53&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="step-c最后确认你想看的数据在哪层"&gt;Step C：最后确认“你想看的数据在哪层”
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;抓包层只看到 TLS：正常&lt;/li&gt;
&lt;li&gt;需要明文：要么 MITM 成功，要么在应用加密前拦截&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="9-最后一句"&gt;9) 最后一句
&lt;/h2&gt;&lt;p&gt;网络代理解决的是 &lt;strong&gt;怎么走&lt;/strong&gt;。&lt;br&gt;
安全工程决定的是 &lt;strong&gt;该不该信&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;把这两件事分开，你会少走很多弯路。&lt;/p&gt;</description></item></channel></rss>