Snoop 是Solaris 系统中自带的工具, 是一个用于显示网络通讯的程序, 它可捕获IP 包并将其显示或保存到指定文件. (限超级用户使用snoop)Snoop 可将捕获的包以一行的形式加以总结或用多行加以详细的描述(有调用不同的参数-v -V来实现). 在总结方式下(-V ) , 将仅显示最高层的相关协议, 例如一个NFS 包将仅显示NFS 信息, 其低层的RPC, UDP, IP, Ethernet 帧信息将不会显示, 但是当加上相应的参数(-v ), 这些信息都能被显示出来.
参数简介:
[ -a ] # Listen to packets on audio
[ -d device ] # settable to le, ie, bf, tr
[ -s snaplen ] # Truncate packets
[ -c count ] # Quit after count packets
[ -P ] # Turn OFF promiscuous mode
[ -D ] # Report dropped packets
[ -S ] # Report packet size
[ -i file ] # Read previously captured packets
[ -o file ] # Capture packets in file
[ -n file ] # Load addr-to-name table from file
[ -N ] # Create addr-to-name table
[ -t r|a|d ] # Time: Relative, Absolute or Delta
[ -v ] # Verbose packet display
[ -V ] # Show all summary lines
[ -p first[,last] ] # Select packet(s) to display
[ -x offset[,length] ] # Hex dump from offset for length
[ -C ] # Print packet filter code
# snoop host1 host2
host1 -> host2 ICMP Echo request
host2 -> host1 ICMP Echo reply
# snoop -a dhcp
# snoop 监听所有以本机为源和目的的包并将其显示出来.
# snoop A 监听所有以主机A为源和目的的包并将其显示出来. ( A为主机名, 下同)
# snoop -o file A B 监听所有A和B之间的包并将其保存到文件file.
查看主机A和主机B之间的NFS 包(命令中的and 和or 为相应的逻辑运算)
# snoop - i file rpc nfs and A and B
1 0.0000 A -> B NFS C GETATTR FH=8E6C
2 0.0046 B -> A NFS R GETATTR OK
3 0.0080 A -> B NFS C RENAME FH=8E6C MTra00192 to .nfs08
# snoop - i file -o file2 rpc nfs A B 将这些符合条件的包保存到另一文件file2 中
# snoop A and B and (tcp or udp) and port 80 监听主机A和主机B间所有TCP 80 端口或UDP80端口的包
# snoop broadcast 监听所有的广播包
Using device /dev/hme (promiscuous mode)
10.10.10.50 -> BROADCAST UDP D=177 S=2541 LEN=35
10.10.10.50 -> BROADCAST UDP D=177 S=2541 LEN=35
10.10.10.50 -> BROADCAST UDP D=177 S=2541 LEN=35
# snoop -v multicast 监听所有的多播包, 并显示详细内容
# snoop |grep - i NTP 监听所有的NTP 协议包
Using device /dev/hme (promiscuous mode)
ts1 -> 224.0.1.1 NTP broadcast (Tue Jul 23 12:48:50 2002)
ts1 -> 224.0.1.1 NTP broadcast (Tue Jul 23 12:49:54 2002)
ts1 -> 224.0.1.1 NTP broadcast (Tue Jul 23 12:50:58 2002)
ts1 -> 224.0.1.1 NTP broadcast (Tue Jul 23 12:52:02 2002)
ts1 -> 224.0.1.1 NTP broadcast (Tue Jul 23 12:53:06 2002)
ts1 -> 224.0.1.1 NTP broadcast (Tue Jul 23 12:54:10 2002)
这里我们也可看到NTP server 每隔约一分钟即向多播地址广播一次.
# snoop -d le0 port 123 指定网口
snoop -d pcelx0
/* Watch all network packets on device pcelx0 */
snoop -o /tmp/mylog pcelx0
/* Saves packets from device pcelx0 to a file */
snoop -i /tmp/mylog host1 host2
/* View packets from logfile between host1 & host2 */
snoop -i /tmp/mylog -v -p101
/* Show all info on packet number 101 from a logfile */
snoop -i /tmp/mylog -o /tmp/newlog host1
/* Write a new logfile with all host1 packets */
snoop -s 120
/* Return the first 120 bytes in the packet header */
snoop -v arp
/* Capture arp broadcasts on your network */
在Solaris系统下,有一个系统内置的网络数据分析和诊断工具snoop,可以抓取以太网中的数据包进行分析,功能和大名鼎鼎的Tcpdump与Sniffer Pro类似。snoop早在SunOS 4.x开始就作为SunOS系统的内置命令存在,可惜Unix世界中有优秀的Tcpdump和Ethereal存在加上Snoop本身的功能比较简单,所以Snoop只能在Solaris的世界中屈居一隅,而且大家对他也所用甚少,所幸不久前偶竟然发现一个如此强大的Snoop数据分析工具:Chaosreader,顿然发觉snoop也有了新活力。
先简单回顾一下snoop的命令参数和用法。
snoop本身能够运行在以太网环境下的solaris系统中,然后依靠网卡的混杂模式从网络中读取流过的所有数据包,当然,这依赖于网络必须是共享式以太网(使用Hub),或者在Switch上配置SPAN功能把所有流量镜像到snoop所运行的机器。如果网络是运行在除以上两者之外的交换网络上的话,那么snoop只能够获取到广播数据,以及发往主机自身的数据。
snoop本身支持以太网帧(ethernet frame),TCP|UDP/IP协议,以及之上的一些应用层协议,例如X,RPC,NFS。大家都知道,作为一个优秀的网络分析工具,必须具备良好的宏观和微观两方面的分析能力,而Sniffer类的工具,则更突出在他的微观-数据解析和分析能力方面,这就依赖于工具所能够理解和解析的网络协议(应用协议)类型数量,比如作为网络分析工具无冕之王的Ethereal就能够理解超过六百种不同的网络协议。这方面恰恰是snoop的劣势所在,所以传统的snoop仅仅是作为简单的sniffer类工具来使用的,chaosreader恰恰弥补了snoop在这方面的缺点,同时在Session分析和数据可视化重现方面大大加强了它的功能。
Chaosreader下载地址:
http://www.brendangregg.com/chaosreader.html
在Solaris系统里,只要直接运行/usr/sbin/snoop就可以启动一个监听进程:
================================
[tracy@ketty]# /usr/sbin/snoop
Using device /dev/pcn0 (promiscuous mode)
192.168.0.2 -> Katty TELNET C port=1366
Katty -> 192.168.0.2 TELNET R port=1366 Using device /dev/pc
192.168.0.2 -> Katty TELNET C port=1366
192.168.0.2 -> Katty TELNET C port=1368
192.168.0.2 -> Katty TELNET C port=1368
Katty -> 192.168.0.2 TELNET R port=1368
.......(省略telnet协商过程)
Katty -> 192.168.0.2 TELNET R port=1368
192.168.0.2 -> Katty TELNET C port=1368
Katty -> 192.168.0.2 TELNET R port=1368 \377\376\1login:
192.168.0.2 -> Katty TELNET C port=1368
Katty -> 192.168.0.2 TELNET R port=1368
192.168.0.2 -> Katty TELNET C port=1368 e
Katty -> 192.168.0.2 TELNET R port=1368 e
192.168.0.2 -> Katty TELNET C port=1368 l
Katty -> 192.168.0.2 TELNET R port=1368 l
192.168.0.2 -> Katty TELNET C port=1368 l
Katty -> 192.168.0.2 TELNET R port=1368 l
192.168.0.2 -> Katty TELNET C port=1368 y
Katty -> 192.168.0.2 TELNET R port=1368 y
192.168.0.2 -> Katty TELNET C port=1368
192.168.0.2 -> Katty TELNET C port=1368
Katty -> 192.168.0.2 TELNET R port=1368
192.168.0.2 -> Katty TELNET C port=1368
Katty -> 192.168.0.2 TELNET R port=1368 Password:
192.168.0.2 -> Katty TELNET C port=1368
192.168.0.2 -> Katty TELNET C port=1368 e
Katty -> 192.168.0.2 TELNET R port=1368
192.168.0.2 -> Katty TELNET C port=1368 l
Katty -> 192.168.0.2 TELNET R port=1368
192.168.0.2 -> Katty TELNET C port=1368 l
Katty -> 192.168.0.2 TELNET R port=1368
192.168.0.2 -> Katty TELNET C port=1368 y
Katty -> 192.168.0.2 TELNET R port=1368
192.168.0.2 -> Katty TELNET C port=1368
Katty -> 192.168.0.2 TELNET R port=1368
192.168.0.2 -> Katty TELNET C port=1368
Katty -> 192.168.0.2 TELNET R port=1368 Last login: Tue Feb
192.168.0.2 -> Katty TELNET C port=1368
Katty -> 192.168.0.2 TELNET R port=1368 Sun Microsystems Inc
192.168.0.2 -> Katty TELNET C port=1368
192.168.0.2 -> Katty TELNET C port=1368 w
Katty -> 192.168.0.2 TELNET R port=1368 w
192.168.0.2 -> Katty TELNET C port=1368
192.168.0.2 -> Katty TELNET C port=1368
Katty -> 192.168.0.2 TELNET R port=1368
192.168.0.2 -> Katty TELNET C port=1368
Katty -> 192.168.0.2 TELNET R port=1368
192.168.0.2 -> Katty TELNET C port=1368
192.168.0.2 -> Katty TELNET C port=1368 e
Katty -> 192.168.0.2 TELNET R port=1368 e
192.168.0.2 -> Katty TELNET C port=1368
192.168.0.2 -> Katty TELNET C port=1368 x
Katty -> 192.168.0.2 TELNET R port=1368 x
192.168.0.2 -> Katty TELNET C port=1368 i
Katty -> 192.168.0.2 TELNET R port=1368 i
192.168.0.2 -> Katty TELNET C port=1368
192.168.0.2 -> Katty TELNET C port=1368 t
Katty -> 192.168.0.2 TELNET R port=1368 t
192.168.0.2 -> Katty TELNET C port=1368
192.168.0.2 -> Katty TELNET C port=1368
Katty -> 192.168.0.2 TELNET R port=1368
192.168.0.2 -> Katty TELNET C port=1368
Katty -> 192.168.0.2 TELNET R port=1368 logout\r\n
192.168.0.2 -> Katty TELNET C port=1368
Katty -> 192.168.0.2 TELNET R port=1368
=================================
在上面这个范例中,我们用snoop监视了一个telnet会话,简要过程如下:
Client Server
1 <----------> TCP三步握手
2 <----------> Telnet协议协商
3 <----------- 发送Login:提示
4 -----------> Username: elly
5 <----------- 发送Pass:提示
6 -----------> Password: elly
7 <----------- 认证通过,返回MOTD和PS提示符
8 -----------> 发送命令,执行w
9 <----------- 返回结果
10 -----------> 发送命令,执行exit
11 <----------> 断开连接
===================================
login: elly
Password:
Last login: Tue Feb 15 18:03:14 from 192.168.0.2
Sun Microsystems Inc. SunOS 5.10 Generic January 2005
[elly@Katty]$ w
下午 6点03分 运行 49 分钟 4 用户, 平均负载:0.04, 0.02, 0.14
用户名 终端号 登入时间 闲置 JCPU PCPU 执行命令
root console 下午 5点30分 34 1 /usr/dt/bin/sdt_shell
-c ? u
root pts/2 下午 5点26分 1 1 bash
root pts/5 下午 5点35分 23 bash
elly pts/6 下午 6点02分 snoop
elly pts/7 下午 6点03分 w
[elly@Katty]$ exit
logout
在实际的抓包分析过程中,就不会那么轻松了,因为会有大量你不想看到的干扰信息出现,例如额外的网络连接,网络中的广播数据包等,这时要看到自己想要的信息简直就像大海捞针一样,幸好snoop提供了一系列的参数和选项来回避这些无用信息,先看一些常用的选项:
-P 不使用混杂模式,只能获取广播包和到本地主机的数据包
-c [maxCount] 记录最大包数,超过则自动停止
-d [dev] 接受包的设备名(网络接口)
-i [filename] 从文件输入(从一个以前的记录文件而不是网络设备中输入)
-p first[,last] 当从文件输入时,只显示从first指定到last的包
-o [filename] 保存所有数据包输出到文件,格式为RFC 1761-compliant
-q 当记录到文件时,使用安静模式,不回显数据
-N 解析IP地址到主机名(默认使用/etc/hosts作为解析列表)
-r 不解析主机名
-n 指定解析主机名所用的列表文件
-v 冗余模式,显示详细的数据包信息
===============================
192.168.0.2 -> Katty ETHER Type=0800 (IP), size = 60 bytes
192.168.0.2 -> Katty IP D=192.168.0.31 S=192.168.0.2 LEN=40,
ID=60866, TOS=0x0, TTL=128
192.168.0.2 -> Katty TCP D=22 S=1315 Ack=624914001 Seq=2987322768
Len=0 Win=65535
================================
除了命令选项以外,snoop还允许通过filter expression过滤模式来对数据包进行析取,以进行更精确的数据抓取和分析。snoop中expr的格式与Tcpdump基本兼容。
地址
host [hostname] 指定主机名,snoop将只获取此主机(源和目标)的数据包
from 或 src 指定源地址,后面必须跟host或ipaddr指令,将只获取以此地址为源的数据
to 或 dst 指定目标地址,后面必须跟host或ipaddr指令,将只获取以此地址为目的的数据
ipaddr 指定IP地址,功能同host
atalkaddr 指定appletalk地址,适用于appletalk协议
etheraddr 指定以太网MAC地址,适用于Ethernet协议
net [net] 指定网络地址,将抓取指定目标网络的数据
port [port] 指定TCP|UDP端口号,将只抓取指定端口的数据,适用于TCP|UDP协议
也可以根据/etc/services文件中指定的协议名字使用字符串
gateway [hostname|IP] 指定网关地址,将只抓取发送到指定网关的数据协议
inet 指定抓取IPV4协议
inet6 指定抓取IPV6协议
ethertype 抓取指定的Ethernet协议
ip, ip6, arp, rarp, pppoed, pppoes
udp, tcp, icmp, icmp6, ah, esp
分别指定以上类型的协议
pppoe PPPOE协议
broadcast 广播协议
multicast 多播协议
bootp, dhcp bootp和dhcp协议
apple applenet协议
decnet decnet协议
rpc prog [ , vers [ , proc ] ] 对应类型的RPC协议数据
ldap ldap协议
slp slp协议
sctp sctp协议
ospf ospf协议
类型
nofrag 不抓取分片数据包
此外,ether,ip,udp等协议关键字,都可以通过指定对应标志位的方式进行更详细的控制,例如使用ip[0]指定某一个位的标志。
操作符
在snoop过滤表达式中同样可以使用逻辑表达式来进行控制,对应的功能则与c,perl等语言中的类似。
and 与
or 或 , 或
not or ! 非
例如:
ipaddr 10.1.1.1 and port 23 抓取10.0.0.1:23的数据
host a or host b 抓取主机a和b的数据
not ipaddr 192.168.0.2 不抓取192.168.0.2的数据
指定 网络接口:/dev/pcn0 , 目标主机: Katty, 目标端口: TCP 23
这将只抓取到Katty的Telnet登录请求,以及所执行的命令。
================================
[Tracy@Katty]# snoop -d pcn0 dst host Katty and tcp port 23
Using device /dev/pcn0 (promiscuous mode)
192.168.0.2 -> Katty TELNET C port=1380
192.168.0.2 -> Katty TELNET C port=1380
192.168.0.2 -> Katty TELNET C port=1380
192.168.0.2 -> Katty TELNET C port=1380
192.168.0.2 -> Katty TELNET C port=1380
192.168.0.2 -> Katty TELNET C port=1380
192.168.0.2 -> Katty TELNET C port=1380 e
192.168.0.2 -> Katty TELNET C port=1380 l
192.168.0.2 -> Katty TELNET C port=1380 l
192.168.0.2 -> Katty TELNET C port=1380 y
192.168.0.2 -> Katty TELNET C port=1380
192.168.0.2 -> Katty TELNET C port=1380
192.168.0.2 -> Katty TELNET C port=1380
192.168.0.2 -> Katty TELNET C port=1380
192.168.0.2 -> Katty TELNET C port=1380 e
192.168.0.2 -> Katty TELNET C port=1380 l
192.168.0.2 -> Katty TELNET C port=1380 l
192.168.0.2 -> Katty TELNET C port=1380 y
192.168.0.2 -> Katty TELNET C port=1380
192.168.0.2 -> Katty TELNET C port=1380
192.168.0.2 -> Katty TELNET C port=1380
192.168.0.2 -> Katty TELNET C port=1380
192.168.0.2 -> Katty TELNET C port=1380 w
192.168.0.2 -> Katty TELNET C port=1380
192.168.0.2 -> Katty TELNET C port=1380
192.168.0.2 -> Katty TELNET C port=1380
192.168.0.2 -> Katty TELNET C port=1380
192.168.0.2 -> Katty TELNET C port=1380 e
192.168.0.2 -> Katty TELNET C port=1380 x
192.168.0.2 -> Katty TELNET C port=1380 i
192.168.0.2 -> Katty TELNET C port=1380 t
192.168.0.2 -> Katty TELNET C port=1380
192.168.0.2 -> Katty TELNET C port=1380
192.168.0.2 -> Katty TELNET C port=1380
192.168.0.2 -> Katty TELNET C port=1380
===============================
现在可以看到,客户端的输入依次为
elly (Username)
elly (Password)
w (Command1)
exit (Command2)
Tips: 如果要看更详细的数据信息,只要加上-v参数就可以了哦。
现在对Snoop应该有个基本了解了吧,不过要使用...还是非常困难的,幸好现在有了Chaosreader。
Chaosreader是一个Snoop数据输出的分析工具,完全Perl写成,因此可以运行在所有支持Perl的操作系统上。Chaosreader能够支持对TCP/UDP/HTTP/FTP...等等一系列协议的跟踪和Session解析,甚至能够解析出ftp和http传输的文件,跟踪X-window的动作,对Telnet的数据进行回放等等。有了Chaosreader,就相当于在Snoop之上加了一双明亮的眼睛,非常方便。
Chaosreader支持有Tcpdump、snoop和Ethereal输出的数据包记录文件,自动解析之后会生成一系列文件,包含HTML格式的数据输出文件,协议传输中的图形附件,以及一些用于进行协议回放的perl脚本。
要使用Chaosreader,有下面几种快捷方法:
tcpdump -w outfile
snoop -o outfile
ethereal (或tethereal)保存cap数据
之后,适用chaosreader.pl outfile对文件进行分析处理,完成后即可在当前目录下生成一系列输出文件,可以使用任何一个Web浏览器打开index.html进行查看。
如果直接执行 chaosreader -s 5; netscape index.html ,那么chaosreader将自动运行当前系统中可用的sniffer类程序(自动搜索snoop或tcpdump),然后生成分析文件。
-s参数指定一定时间的抓取时间,以分钟为单位。
在每次分析中,Chaosreader可能会生成如下文件:
index.html Html index (本次抓包统计信息)
index.text Text index
index.file File index for standalone redo mode
image.html HTML report of images
getpost.html HTML report of HTTP GET/POST requests
session_0001.info TCP session #1的相关信息(如果有抓包过程中包含多个TCP Session,则每个Session都会生成一系列的Session文件)
session_0001.telnet.html 按时间顺序存放的html格式telnet数据
session_0001.telnet.raw 按时间顺序存档的telnet session数据
session_0001.telnet.raw1 server->client的telnet数据
session_0001.telnet.raw2 client->server的telnet数据
session_0002.web.html 按请求顺序存放的HTTP Session数据
session_0002.part_01.html HTTP portion of the above, a HTML file
session_0003.web.html HTML coloured 2-way
session_0003.part_01.jpeg HTTP portion of the above, a JPEG file
session_0004.web.html HTML coloured 2-way
session_0004.part_01.gif HTTP portion of the above, a GIF file
session_0005.part_01.ftp-data.gz 如果是ftp session,则传输数据存放在此文件中
...
总结所有的文件类型如下:
session_* TCP Sessions
stream_* UDP Streams
icmp_* ICMP 数据包
index.html HTML Index 文件
index.text Text Index 文件
index.file File Index for standalone redo mode only
image.html HTML report of images
getpost.html HTTP GET/POST 请求记录
*.info Session/Stream的描述信息
*.raw 按时间顺序排列的C<->S二路原始数据
*.raw1 server->client的原始数据
*.raw2 client->server的原始数据
*.replay Session回放程序,perl脚本,执行将在终端上模拟任务发生时的状况
*.partial.* Partial capture (tcpdump/snoop were aware of drops)
*.hex.html 2-way Hex dump, rendered in coloured HTML
*.hex.text 2-way Hex dump in plain text
*.X11.replay X-Window回放脚本,必须运行在X-Window下
*.textX11.replay X11通讯的文本模拟回放程序
*.textX11.html 2-way text report, rendered in red/blue HTML
*.keydata SSH通讯中的密钥中继传输数据
先在控制台上开启一个snoop,只记录IP数据:
===============================
[Tracy@Katty]# snoop -d pcn0 -o out ip
Using device /dev/pcn0 (promiscuous mode)
358 ^C
===============================
之后,我们通过网络分别执行了以下操作:
1. telnet
用户 elly 由192.168.0.2 telnet登录到Katty:23,并执行w,uname -a,exit ;
2. ssh
root 由 192.168.0.2 ssh登录到Katty:22,并执行w,pwd ;
3. http
root在dtconsole(控制台X窗口)上打开Mozilla访问http://www.google.com;
4. ftp
用户elly 由192.168.0.2通过ftp下载文件/etc/passwd;
5. X-Window
用户elly 由192.168.0.2执行xeye -display Katty:0,运行了一个xeye到远程的X桌面。
完成所有操作后,运行Chaosreader分析刚才snoop所记录的网络数据:
=============================
[Tracy@Katty]# chaosreader out
Chaosreader ver 0.94
Opening, out
Reading file contents,
100% (58408/58408)
Reassembling packets,
100% (358/358)
Creating files...
Num Session (host:port <=> host:port) Service
0012 192.168.0.31:32925,64.233.189.104:80 web
0005 192.168.0.2:1591,192.168.0.31:21 ftp
0004 192.168.0.31:6000,192.168.0.2:1590 X11
0009 192.168.0.2:1593,192.168.0.31:23 telnet
0001 192.168.0.2:1589,192.168.0.31:22 ssh
0008 192.168.0.2:1592,192.168.0.31:20 ftp-data
0013 10.0.0.1:138,10.255.255.255:138 netbios-dgm
0007 192.168.0.31:33242,202.96.209.6:53 domain
0003 192.168.0.31:33240,202.96.209.6:53 domain
0002 192.168.0.31:33239,202.96.209.6:53 domain
0010 192.168.0.31:33243,202.96.209.6:53 domain
0006 192.168.0.31:33241,202.96.209.6:53 domain
0011 192.168.0.31:33244,202.96.209.6:53 domain
index.html created.
=============================
Chaosreader分析snoop的输出文件out,识别出刚才进行过的所有网络连接,包含web、ftp、X11、telnet、ssh,以及dns和netbios-dgm。其中前五种分别是我们进行的网络操作,而netbios是windows网络中定期广播产生的干扰数据,domain则是在访问google时web请求前产生的dns解析请求。
经过分析产生了统计报告index.html和以下文件:
getpost.html Web访问时的get/post请求
httplog.text 文本格式的http访问日志
image.html 空
index.html 索引页面
index.text 文本索引页面
session_0001.textSSH.html ssh连接日志
session_0001.textSSH.keydata ssh key
session_0001.textSSH.replay ssh连接回放脚本
session_0004.X11.replay X-Window Session回放脚本
session_0004.textX11.html
session_0004.textX11.replay
session_0005.ftp.html ftp连接日志
session_0008.part_01.ftp-data.data ftp传输的文件
session_0009.telnet.html telnet连接日志
session_0009.telnet.replay telnet连接回放脚本
session_0012.part_01.html
session_0012.web.html web连接详细日志
stream_0002.domain.html DNS请求
stream_0003.domain.html
stream_0006.domain.html
stream_0007.domain.html
stream_0010.domain.html
stream_0011.domain.html
看一下记录下的详细日志:
ftp: session_0005.ftp.html
===============================
ftp: 192.168.0.2:1591 -> 192.168.0.31:21
File out, Session 5
220 Katty FTP server ready.
USER elly
331 Password required for elly.
PASS elly
230 User elly logged in.
CWD /etc
250 CWD command successful.
PORT 192,168,0,2,6,56
200 PORT command successful.
RETR passwd
150 Opening ASCII mode data connection for passwd (628 bytes).
226 Transfer complete.
QUIT
221-You have transferred 644 bytes in 1 files.
221-Total traffic for this session was 985 bytes in 1 transfers.
221-Thank you for using the FTP service on Katty.
221 Goodbye.
==============================
另外,在session_0008.part_01.ftp-data.data文件中记录下了本次连接传输的文件副本。
telnet: session_0009.telnet.html
==============================
telnet: 192.168.0.2:1593 -> 192.168.0.31:23
File out, Session 9
..%..%..%..%...........%.......&..&..&..&........#..'..$.............P.
....#..'..$..#..'..$........#..'..$....ANSI..........................
login: ...eellllyy
Password: elly
Last login: Tue Feb 15 21:32:09 from 192.168.0.2
Sun Microsystems Inc. SunOS 5.10 Generic January 2005
-bash-3.00$ ww
.... 9..32.. .... 4:18, 3 ...., ..........0.08, 0.18, 0.13
...... ...... ........ .... JCPU PCPU ........
root console .... 9..24.. 8 1 /usr/dt/bin/sdt_shell -c ?
root pts/2 .... 9..31.. 1 -sh
root pts/5 .... 9..25.. 1 snoop -o out ip
elly pts/6 .... 9..32.. w
-bash-3.00$ uunnaammee --aa
SunOS Katty 5.10 Generic i86pc i386 i86pc
-bash-3.00$ eexxiitt
logout
=============================
注意,由于telnet的回显协议,所以每个字符都会重复显示一遍,如果要避免这种情况可以在snoop设置中指定dst参数。
web:
session_0012.part_01.html 记录下了访问的页面镜像;
httplog.text 记录下了访问页面的连接过程;
session_0012.web.html 记录下了访问页面的详细信息;
ssh:
由于ssh连接加密算法协商阶段完成之后,通讯就完全加密了,所以只有部分数据可见。
X-Window:
本身没有记录太多信息,但是生成了一个session_0004.X11.replay脚本,来模拟回放当时的操作。
另外,telnet连接也生成了一个相应的回放脚本session_0009.telnet.replay。回放只是模拟当时的操作,并按对应的时间顺序显示出来,并不进行真实的操作,因此可以放心测试。但是X-Window回放需要注意,因为X的回放是完全真实的操作,有可能会影响到系统哦。另外,如果X回放无法运行,可以先在当前X桌面上执行xhost +,然后再运行回放脚本。
总结...Chaosreader的连接重组,协议解析,数据析取,模拟回放功能都是极为强大的,给原本鸡肋的snoop注入了极大的生命力,另外还提供了对tcpdump、dsniff和ethereal的支持,的确是网络分析中的一个好工具。
一点Tips:
记住,几乎任何网络抓包工具的数据报都是可以相互转换的(虽然在软件自身可能不兼容)。Ethereal当前就已经可以支持大多数抓包工具所生成的数据记录文件,而以前我推荐过的更加强大的Wildpackets ProCovert更是可以转换当前几乎所有抓包软件生成的数据记录。因此我们可以用一种工具抓包,转换过之后很灵活方便的使用最适合分析它的软件来进行细化的分析,例如在Windows上用Sniffer Pro,Linux上用TCPDumpSunOS上用Snoop,之后可以任意把它转换成对方的数据类型进行分析,就方便多了吧。