标题：抓包
简介
你是网络管理员吗？你是不是有过这样的经历：在某一天的早上你突然发现网络性能急剧下降，网络服务不能正常提供，服务器访问速度极慢甚至不能访问，网络交换机端口指示灯疯狂地闪烁、网络出口处的路由器已经处于满负荷的工作状态、路由器CPU已经到了百分之百的负荷……重启动后没有几分钟现象又重新出现了。 
这是什么问题？设备坏了吗？不可能几台设备同时出问题。一定是有什么大流量的数据文件，耗尽了网络设备的资源，它们是什么？怎么看到它们？这时有经验的网管人员会想到用局域网抓包工具来分析一下。 
你一定听说过红色代码、Nimda、冲击波以及震荡波这些臭名昭著的网络杀手。就是它们制造了上述种种恶行。它们来势汹汹，阻塞网络、感染主机，让网络管理员苦不堪言。当网络病毒出现时，如何才能及时发现染毒主机？下面我根据网络病毒都有扫描网络地址的特点，给大家介绍一个很实用的方法：用抓包工具寻找病毒源。
方法
1．安装抓包工具。目的就是用它分析网络数据包的内容。找一个免费的或者试用版的抓包工具并不难。我使用了一种叫做SpyNet3.12 的抓包工具，非常小巧, 运行的速度也很快。安装完毕后我们就有了一台抓包主机。你可以通过SpyNet设置抓包的类型，比如是要捕获IP包还是ARP包，还可以根据目的地址的不同，设置更详细的过滤参数。2．配置网络路由。你的路由器有缺省网关吗？如果有，指向了哪里？在病毒爆发的时候把缺省网关指向另外一台路由器是很危险的（除非你想搞瘫这台路由器）。在一些企业网里往往仅指出网内地址段的路由，而不加缺省路由，那么就把缺省路由指到抓包主机上吧（它不下地狱谁下地狱？当然这台主机的性能最好是高一点的，否则很容易被病毒冲击而亡）。这样可以让那些病毒主机发出的绝大部分扫描都自动送上门来。或者把网络的出口映像到抓包主机上，所有对外访问的网络包都会被分析到。3．开始抓包。抓包主机已经设置好了，网络里的数据包也已经送过来了，那么我们看看网络里传输的到底是些什么。打开SpyNet 点击Capture 你会看到好多的数据显示出来，这些就是被捕获的数据包（如图）。 
图中的主体窗口里显示了抓包的情况。列出了抓到数据包的序号、时间、源目的MAC地址、源目的IP地址、协议类型、源目的端口号等内容。很容易看出IP地址为10.32.20.71的主机在极短的时间内向大量的不同主机发出了访问请求，并且目的端口都是445。4.找出染毒主机。从抓包的情况看，主机10.32.20.71值得怀疑。首先我们看一下目的IP地址，这些地址我们网络里存在吗？很可能网络里根本就没有这些网段。其次，正常情况下访问主机有可能在这么短的时间里发起这么多的访问请求吗？在毫秒级的时间内发出几十甚至几百个连接请求，正常吗？显然这台10.32.20.71的主机肯定有问题。再了解一下Microsoft-DS协议，该协议存在拒绝服务攻击的漏洞，连接端口是445，从而进一步证实了我们的判断。这样我们就很容易地找到了染毒主机的IP地址。剩下的工作就是给该主机操作系统打补丁杀病毒了。 
既然抓到了病毒包，我们看一下这个数据包二进制的解码内容： 
这些数据包的长度都是62个字节。数据包前12个字节包括了目的MAC和源MAC的地址信息，紧跟着的2字节指出了数据包的类型，0800代表的是IP包格式，0806代表ARP包格式。接着的20个字节是封装的IP包头，包括了源、目的IP地址、IP版本号等信息。剩下的28个字节封装的是TCP包头，包括了源、目的端口，TCP链接的状态信息等。这就构成了一个62字节的包。可以看出除了这些包头数据之外，这个包没有携带其他任何的有效数据负荷，所以这是一个TCP要求445端口同步的空包，也就是病毒主机在扫描445端口。一旦染毒主机同步上没有采取防护措施的主机445端口，便会利用系统漏洞传播感染。
抓包
在实际语言应用中 还有露馅 被别人当场抓到的意思
英文名称为Sniffer，中文可以翻译为嗅探器，是一种威胁性极大的被动攻击工具。使用这种工具，可以监视网络的状态、数据流动情况以及网络上传输的信息。当信息以明文的形式在网络上传输时，便可以使用网络监听的方式来进行攻击。将网络接口设置在监听模式，便可以将网上传输的源源不断的信息截获。黑客们常常用它来截获用户的口令。据说某个骨干网络的路由器曾经被黑客攻入，并嗅探到大量的用户口令。本文将详细介绍Sniffer的原理和应用。
原理
一、Sniffer 原理1．网络技术与设备简介 
在讲述Sniffer的概念之前，首先需要讲述局域网设备的一些基本概念。 
数据在网络上是以很小的称为帧（Frame）的单位传输的，帧由几部分组成，不同的部分执行不同的功能。帧通过特定的称为网络驱动程序的软件进行成型，然后通过网卡发送到网线上，通过网线到达它们的目的机器，在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧，并告诉操作系统帧已到达，然后对其进行存储。就是在这个传输和接收的过程中，嗅探器会带来安全方面的问题。 
每一个在局域网（LAN）上的工作站都有其硬件地址，这些地址惟一地表示了网络上的机器（这一点与Internet地址系统比较相似）。当用户发送一个数据包时，如果为广播包，则可达到局域网中的所有机器，如果为单播包，则只能到达处于同一碰撞域中的机器。
在一般情况下，网络上所有的机器都可以“听”到通过的流量，但对不属于自己的数据包则不予响应（换句话说，工作站A不会捕获属于工作站B的数据，而是简单地忽略这些数据）。如果某个工作站的网络接口处于混杂模式（关于混杂模式的概念会在后面解释），那么它就可以捕获网络上所有的数据包和帧。2．网络监听原理Sniffer程序是一种利用以太网的特性把网络适配卡（NIC，一般为以太网卡）置为杂乱（promiscuous）模式状态的工具，一旦网卡设置为这种模式，它就能接收传输在网络上的每一个信息包。 
普通的情况下，网卡只接收和自己的地址有关的信息包，即传输到本地主机的信息包。要使Sniffer能接收并处理这种方式的信息，系统需要支持BPF，Linux下需要支持SOCKET一PACKET。但一般情况下，网络硬件和TCP/IP堆栈不支持接收或者发送与本地计算机无关的数据包，所以，为了绕过标准的TCP/IP堆栈，网卡就必须设置为我们刚开始讲的混杂模式。一般情况下，要激活这种方式，内核必须支持这种伪设备Bpfilter，而且需要root权限来运行这种程序，所以sniffer需要root身份安装，如果只是以本地用户的身份进入了系统，那么不可能唤探到root的密码，因为不能运行Sniffer。 
基于Sniffer这样的模式，可以分析各种信息包并描述出网络的结构和使用的机器，由于它接收任何一个在同一网段上传输的数据包，所以也就存在着捕获密码、各种信息、秘密文档等一些没有加密的信息的可能性。这成为黑客们常用的扩大战果的方法，用来夺取其他主机的控制权3 Sniffer的分类Sniffer分为软件和硬件两种，软件的Sniffer有 NetXray、Packetboy、Net monitor等，其优点是物美价廉，易于学习使用，同时也易于交流；缺点是无法抓取网络上所有的传输，某些情况下也就无法真正了解网络的故障和运行情况。硬件的Sniffer通常称为协议分析仪，一般都是商业性的，价格也比较贵。 
实际上本文中所讲的Sniffer指的是软件。它把包抓取下来，然后打开并查看其中的内容，可以得到密码等。Sniffer只能抓取一个物理网段内的包，就是说，你和监听的目标中间不能有路由或其他屏蔽广播包的设备，这一点很重要。所以，对一般拨号上网的用户来说，是不可能利用Sniffer来窃听到其他人的通信内容的。4．网络监听的目的当一个黑客成功地攻陷了一台主机，并拿到了root权限，而且还想利用这台主机去攻击同一网段上的其他主机时，他就会在这台主机上安装Sniffer软件，对以太网设备上传送的数据包进行侦听，从而发现感兴趣的包。如果发现符合条件的包，就把它存到一个LOg文件中去。通常设置的这些条件是包含字“username”或“password”的包，这样的包里面通常有黑客感兴趣的密码之类的东西。一旦黑客截获得了某台主机的密码，他就会立刻进入这台主机。 
如果Sniffer运行在路由器上或有路由功能的主机上，就能对大量的数据进行监控，因为所有进出网络的数据包都要经过路由器。 
Sniffer属于第M层次的攻击。就是说，只有在攻击者已经进入了目标系统的情况下，才能使用Sniffer这种攻击手段，以便得到更多的信息。 
Sniffer除了能得到口令或用户名外，还能得到更多的其他信息，比如一个重要的信息、在网上传送的金融信息等等。Sniffer几乎能得到任何在以太网上传送的数据包。 
Sniffer是一种比较复杂的攻击手段，一般只有黑客老手才有能力使用它，而对于一个网络新手来说，即使在一台主机上成功地编译并运行了Sniffer，一般也不会得到什么有用的信息，因为通常网络上的信息流量是相当大的，如果不加选择地接收所有的包，然后从中找到所需要的信息非常困难；而且，如果长时间进行监听，还有可能把放置Sniffer的机器的硬盘撑爆。