首页 > 技术文章 > [golang] 抓包注入分析

landv 2019-07-31 11:11 原文

视频信息 

Packet Capture, Analysis, and Injection with Go
by John Leon
at GopherCon 2016

https://www.youtube.com/watch?v=APDnbmTKjgM

代码:https://github.com/gophercon/2016-talks/tree/master/JohnLeon-PacketCapturingWithGo
博文:http://www.devdungeon.com/content/packet-capture-injection-and-analysis-gopacket

什么是抓包 

抓包是分析网络上的流量。

有线网络和无线网络不同

有线网络会由交换机根据 MAC 地址决定是否将包转发给你,和你无关的包是不会转发给你,除非用的不是交换机而是古董的 Hub。而无线网络就很开放了,所有的包都无法控制发给谁,因此你是可以听到所有的包的。当然,需要设置为混淆模式,不然本地网络设备会过滤掉不是给自己的包。

抓包不会影响其它通讯,它只是被动监听,不是中间人的干扰。不过可以利用抓包来做一些事情。比如去年参加 DefCon 的时候,John 身边的几个俄罗斯的与会者,就写了个东西抓包监听。凡是听到 HTTP 请求,就抢先一步模拟 HTTP 响应,让访问者重定向到某个NSFW(色情网站)上去了。

如何应用 

  • 应用开发:测试、验证加密
  • 对 API 进行逆向工程
  • 观察背景都是什么样的流量
  • 偷取登录信息
  • 网络管理
  • 查看网络上的恶意的流量(比如是不是有人在扫描你的端口)
  • 对犯罪现场进行调查
  • DefCon 的一个 Wall of Sheep

演讲者研究抓包的动机 

  • Hacker by nature,就像 Richard Stallman 说的,你不做一遍这个东西,你就无法理解这个东西。
  • 总喜欢知道实物的内部是怎么工作的
  • 验证实际的认证机制是否真的加密了
  • 确保服务器上没有恶意流量
  • 理解开放 WiFi 的流量是否安全
  • 偷登录信息(当然,合法的偷,比如安全审计)

话题概况 

  • 获得网络设备列表
  • 从网络设备抓包
  • 保存获得的包到一个文件
  • 从文件读取包
  • 分层分析包结构
  • 创建自定义的层
  • 使用 BPF 过滤
  • 注入包(发送包)
  • 观察流

常用工具 

  • Wireshark/tshark:这可能是大家都用过的
  • tcpdump: 一些 Linux 下命令行操作的人应该用过
  • Driftnet: 只关心网络流量中的图片,会在屏幕上显示所有流量里的图片……

推荐阅读