黑客是怎么看到你数据的?

29 阅读7分钟

一个程序员在咖啡厅蹭 WiFi,突然收到一封邮件提醒:"你的账号在陌生设备登录了"。他懵了——自己明明用的是陌生 WiFi,但账号却被别人登录了。他从来没连过什么钓鱼网站,密码也没泄露,怎么回事?

今天聊聊网络抓包的原理,以及怎么保护自己的隐私。


原文地址

墨渊书肆/黑客是怎么看到你数据的?


先搞清楚:数据是怎么传出去的?

快递员取件

你发一条消息,就像打电话叫快递员来取件:

  快递员  快递站  ...  收件人

网络请求也是一样的道理。你的电脑把数据交给路由器,路由器再交给下一站,一站一站传过去,最终到达服务器。

问题来了:一路上谁都能拆开看。


明文时代:谁都能看

HTTP 是明信片

早期互联网用的是 HTTP 协议,就像寄明信片——不装信封,谁都能看。

┌─────────────────────────────────┐
 寄件人:你                       
 收件人:mail.example.com        
 内容:                           
                                 
 账号:Tom                        
 密码:123456                     
                                 
└─────────────────────────────────┘

在咖啡厅、机场这些公共网络里,只要有人装了网络监控软件,就能看到你在访问什么网站、发什么内容。

那个年代的 hacker 就是这么干的。 不用什么高科技,在同一个 WiFi 下,用系统自带的网络查看器就够了。


加密时代:HTTPS 是什么?

HTTPS = HTTP + 加密

后来有了 HTTPS,就像给明信片加了信封,只有收件人能拆开看。

 ←──── 加密通道(锁着)────→ 网站
        (只有你和网站知道钥匙)

HTTPS 用的是 TLS/SSL 协议,用非对称加密的方式,让只有你和网站能解密内容。中间经过的每一站都只能看到加密后的乱码。

HTTPS 能防住谁?

  • 防不住:和你在同一网络的人(比如咖啡厅的黑客)
  • 防不住:你电脑上装了证书的抓包工具(比如 Charles)
  • 能防住:网络路径上的其他人(运营商、路由器)

也就是说,HTTPS 防的是"网络路径上的窃听",但防不住你电脑上的"内鬼"。


狡猾的黑客:中间人攻击是怎么回事?

Wireshark:网络层的监控摄像头

在介绍 Charles 之前,先说另一个工具——Wireshark

Wireshark 是网络协议分析工具,能抓到网卡上经过的所有数据包。它工作在网络层,能看到 TCP、UDP、ICMP 等各种协议,不只是 HTTP。

简单说:Wireshark 就像在网络链路上装了个监控摄像头,所有经过的车都能看到。

但 Wireshark 只能看到加密后的乱码,对 HTTPS 无能为力。它适合安全工程师分析网络攻击、查网络底层问题。

Charles:应用层的伪装者

Charles 不一样,它工作在应用层,专门针对 HTTP/HTTPS。

Charles 不暴力破解加密,而是说服你的电脑信任它

Charles 的套路:
1. 伪造"收件人"的身份证
2. 你把信给了 Charles(以为在给快递员)
3. Charles 解密看完,再用真身份证寄给收件人
4. 收件人回信,Charles 再加密寄给你

整个过程你毫不知情,还以为在和网站直接通信。

关键是:你的电脑信任了 Charles 的证书。 通常是你自己装的——公司监控软件告诉你"需要装证书才能上网",你点了确定。

Wireshark 和 Charles:各适合什么场景?

工具适合场景工作层级
Wireshark网络协议分析、安全分析、查网络底层问题网络层(能看到所有包)
CharlesWeb/移动端调试、接口分析、修改请求重放应用层(只看 HTTP/HTTPS)

Wireshark 适合安全工程师分析攻击,Charles 适合开发者调试接口。


HTTPS 真的安全吗?

证书系统是怎么被利用的?

HTTPS 的安全性依赖于证书——网站向权威机构申请证书,证明"这个网站是我"。

但如果有人拿到了假的证书呢?

正常 HTTPS 握手:
  请求网站证书  网站给你证书  你验证证书  加密通信

 Charles 劫持后:
  请求网站证书  Charles 拦截  Charles 给你假证书  你验证通过  Charles 解密  Charles 和网站建立真连接

你的电脑怎么知道证书是假的?因为证书里有一个"颁发者"信息,正常应该是 DigiCert、Google 这些知名机构。如果是 Charles Debug Proxy、TrustAny 这样的名字,就要警惕了。

银行 App 为什么安全?

很多人不知道,大多数银行、支付宝、微信支付这些 App 用的不是普通的 HTTPS,而是证书锁定(Certificate Pinning)

普通 HTTPS:你电脑里存着"信任的证书机构列表",Charles 只要拿到任何一个被信任的证书就能伪造。

证书锁定:App 里直接写死了"我只信任这个证书",Charles 伪造的证书直接被拒绝。就像公司门禁卡只能刷特定的门,换张卡刷不开。


怎么知道有人在偷看?

1. 看代理设置

打开电脑的网络设置,如果代理指向了一个陌生的 IP,立刻警觉。

正常:
代理设置  空(直连)

可疑:
代理设置  192.168.1.100:8888

2. 看证书颁发者

访问 HTTPS 网站时,点击地址栏的锁图标。如果证书颁发者是 Charles Debug ProxyTrustAnyFiddler 这些名字,说明你的流量正在被人解密。

3. 看公司网络审计

大公司通常有网络审计系统,你访问了哪些网站、什么时候访问的,都有记录。这也是为什么公司电脑会要求装证书——不是黑客,是合规需要。


怎么保护自己?

1. 公共 WiFi 不要访问敏感信息

咖啡厅、机场的 WiFi 谁都能连,不安全。黑客可能就在你旁边,用简单的工具就能抓到同网络里所有的明文流量。

重要操作尽量用手机流量。

2. 不装来路不明的证书

"安装证书才能上网"——遇到这种情况要警惕。

正常场景:

  • 公司电脑需要监控网络安全,会提前通知你安装证书
  • 抓包调试时,Charles 会提示你安装证书

异常场景:

  • 浏览器突然弹出"安装证书"框
  • 不在调试状态,突然要求安装证书

装证书之前,想一想:我现在在干什么?

3. 看网址栏的锁

现在大多数网站都默认 HTTPS 了。访问的时候瞄一眼地址栏,有锁标的说明是加密的,没锁标的要小心。

4. 开启 VPN

VPN 会在你的电脑和服务器之间建立一条加密隧道。即使在公共 WiFi 里,黑客也只能看到你连了 VPN,看不到具体在访问什么。

就像你把信封放进快递箱,再交给快递员。 快递员只能看到箱子,看不到里面是什么。

5. 重要操作用专属网络

转账、登录账号、输入密码这些操作,尽量在自己信任的网络环境下进行。家里的 WiFi比公共 WiFi 安全,自己流量最安全。


总结

互联网早期,数据像明信片一样裸奔。后来有了 HTTPS,数据装进了信封。

但信封可以被伪造。Charles 这类工具就是用证书伪造的方式,让加密形同虚设。

保护自己其实不难:公共网络不传敏感信息、不装来路不明的证书、看好网址栏的锁、重要操作用信任的网络

网络安全不是工程师的事,是每个人的事。