网络抓包的方法有:
原始套接字RAW_SOCK
WinPcap: The Windows Packet Capture Library
Winsock Service Provider Interface (SPI)
Api Hook
DDK - Windows Driver Development Kit:Filter-Hook Drivers、Firewall-Hook Drivers , NDIS,TDI。
应用层 | DHCP • DNS • FTP • Gopher • HTTP • IMAP4 • IRC • NNTP • XMPP • POP3 • SIP • SMTP • SNMP • SSH • TELNET • RPC • RTP | exe程序, 比如ie |
表示层 | ws2_32.dll | |
会话层 | Sockets. Session establishment in TCP. SIP. (Not a separate layer with standardized API.) | SPI |
传输层 | TDI(不能 截获ICMP 等协议的 数据) | |
网络层 | IP (IPv4 • IPv6) • IGMP • ICMP • OSPF • ISIS • IPsec • ARP • | NDIS(可以 截获所有 的网络数 据) |
链路层 | 设备驱动 | |
物理层 | Ethernet physical layer • ISDN • Modems • PLC • SONET/SDH • | 网卡 |
现有的各类抓包软件,例如:IRIS,SNIFFER等都是通过把网卡设定为混杂模式来实现将流过的所有数据包都一一捕获。
如果网络是由HUB组成的,则我们可以看到网络中发到任何主机的数据。
但是如果是由交换机组成的就不同了,由于交换机是基于MAC地址来实现帧的转发,源与目的主机间的数据包是单点投送不会被其他接口接收到,因此必须使用ARP欺骗或者端口镜像才能在这种网络中看到想要侦听的数据。
大多数的抓包程序基于开源的WinPcap的程序抓包,但基于WinPcap的程序在抓包性能上较低,在千兆网速下,最多只能达到500Mbps左右,因此很多专业的抓包设备都会用硬件来实现,比如高速采集卡。