tcpdump小经验
2006-08-18 17:53

网上的东西都是这样,介绍软件,参数的多,实例的很少。
很多时候,我们有了软件的参数使用方法,但是还是不是很明白,领会。今天,我在用网路岗监控的时候,看到里面监控的仅仅是些常用的网络服务器形式,80,邮件,ftp,功能太下载。这个监控上网内容还可以,要分析些网络事件,无能为力了。

于是,我想到,一般局域网中怕的就是木马,病毒,发送垃圾数据包,常常堵塞网络。 于是,我就想起用tcpdump来试试看,毕竟很多软件都是靠他来监控的。试试牛刀了

先 tcpdump 一看,信息太多。 想了想我要做的是什么,主要是想看看,局域网中访问internet那些东西,跟那些机器有连接,而且要探测不明链接。从而可以发现是否有木马,病毒一些在作怪!

tcpdump dst net not 192.168.123.0/24 不监视跟网内机子的链接,过滤很多信息。迅速进入主题, 不想看发邮件的情况,一般的80网页访问,domain访问,还有要排除网内已有服务器的一些端口。

tcpdump dst net not 192.168.123.0/24 and dst port not \( www or 25 or 110 or 5000 or domain \) and src port ! \( 4011 or 4010 or 4009 \)

这样的话看到的信息就相对少了很多,这个时候就可以看到一些不常见的链接了,对发现木马和病毒会有一定的帮助。
相信大家看过tcpdump的用法,过滤表达式应该不难理解。
我也就解释下吧,高手就不用看了。

dst net not 192.168.123.0/24 不监视与网内机器的连接
dst port not \( www or 25 or 110 or 5000 or domain \) 过滤与internet中运行 目标端口的连接,不显示访问网页,邮件,查询DNS的这些连接
src port ! \( 4011 or 4010 or 4009 \) 这个主要是因为 装有虚拟局域网软件,网内服务器与外面分部的连接,不需要显示。 当然这里的端口可以根据实际情况换掉

接下来,我(隔了一天接着写) 我从看到的信息里面发现有频繁连接外面5050的连接,google搜索了下5050是什么端口,发现跟dudu.com中的一个软件有关系。 接着我又开个term,tcpdump dst port 5050 ,这样又可以同时看到那些具体连接外面5050端口的机子。 我的过程中就发现只有一台机子更这个联系。最后在那台机子上果然发现以前安装的一个dudu校友录软件的服务在后台运行。

通过这个经历,发现tcpdump果然很强大,只要灵活运用,作用还真的很大。虽然,我写的帖子没有什么深奥的地方,也很简单。 之所以写这个东西,不是来说明什么,只是想对一些想了解却总不明白的兄弟一点点启发。 要举一反三哦


Linux下网络分析例解
Linux作为网络服务器,特别是作为路由器和网关时,数据的采集和分析是必不可少的。所以,今天我们就来看看Linux中强大的网络数据采集分析工具 ——TcpDump。
顾名思义,TcpDump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、 or、not等逻辑语句来帮助你去掉无用的信息。和Linux终端状态下的其他软件一样,TcpDump也是依靠参数来工作,本文将结合实例来说明。数据过滤不带任何参数的TcpDump将搜索系统中所有的网络接口,并显示它截获的所有数据,这些数据对我们不一定全都需要,而且数据太多不利于分析。所以,我们应当先想好需要哪些数据,TcpDump提供以下参数供我们选择数据:
-b 在数据-链路层上选择协议,包括ip、arp、rarp、ipx都是这一层的。
例如:tcpdump -b arp 将只显示网络中的arp即地址转换协议信息。
-i 选择过滤的网络接口,如果是作为路由器至少有两个网络接口,通过这个选项,就可以只过滤指定的接口上通过的数据。例如: tcpdump -i eth0 只显示通过eth0接口上的所有报头。
src、dst、port、host、net、ether、gateway这几个选项又分别包含src、dst 、port、host、net、ehost等附加选项。他们用来分辨数据包的来源和去向,src host 192.168.0.1指定源主机IP地址是192.168.0.1,dst net 192.168.0.0/24指定目标是网络192.168.0.0。以此类推,host是与其指定主机相关无论它是源还是目的,net是与其指定网络相关的,ether后面跟的不是IP地址而是物理地址,而gateway则用于网关主机。可能有点复杂,看下面例子就知道了: tcpdump src host 192.168.0.1 and dst net 192.168.0.0/24 过滤的是源主机为192.168.0.1与目的网络为192.168.0.0的报头。 tcpdump ether src 00:50:04:BA:9B and dst…… 过滤源主机物理地址为XXX的报头(为什么ether src后面没有host或者net?物理地址当然不可能有网络喽)。 Tcpdump src host 192.168.0.1 and dst port not telnet 过滤源主机192.168.0.1和目的端口不是telnet的报头。 ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型。例如: tcpdump ip src…… 只过滤数据-链路层上的IP报头。 tcpdump udp and src host 192.168.0.1 只过滤源主机192.168.0.1的所有udp报头。 数据显示/输入输出 TcpDump提供了足够的参数来让我们选择如何处理得到的数据,如下所示:
-l 可以将数据重定向。 如tcpdump -l >tcpcap.txt将得到的数据存入tcpcap.txt文件中。
-n 不进行IP地址到主机名的转换。如果不使用这一项,当系统中存在某一主机的主机名时,TcpDump会把IP地址转换为主机名显示,就像这样:eth0 < ntc9.1165> router.domain.net.telnet,使用-n后变成了:eth0 < 192.168.0.9.1165 > 192.168.0.1.telnet。
-nn 不进行端口名称的转换。 上面这条信息使用-nn后就变成了:eth0 < ntc9.1165 > router.domain.net.23。
-N 不打印出默认的域名。 还是这条信息-N 后就是:eth0 < ntc9.1165 > router.telnet。 -O 不进行匹配代码的优化。
-t 不打印UNIX时间戳,也就是不显示时间。
-tt 打印原始的、未格式化过的时间。
-v 详细的输出,也就比普通的多了个TTL和服务类型。好了,说了这么多,是不是觉得TcpDump这个工具很好?它还有好多功能限于篇幅不能一一介绍,多读一读“帮助”都会有很大的收获,这也算是进入 Linux世界的一条捷径吧。