NetXray使用说明总汇
程序员文章站
2022-03-06 15:24:27
标题:NetXray使用说明之(1)1.1.1.1----2.2.2.2----3.3.3.3----4.4.4.4 这是一个ShareHub连接下的局域网 | | 5.5.5.5 这是一个8080端口上的htt... 08-10-08...
标题:netxray使用说明之(1)1.1.1.1----2.2.2.2----3.3.3.3----4.4.4.4 这是一个sharehub连接下的局域网 | | 5.5.5.5 这是一个8080端口上的http/ftp proxy | | internet启动capture,进入capture setting,选择profiles-->new,以default为模板,起名叫proxy,选择ok-->done,设置过滤所有目标ip是5.5.5.5的报文,即any---->5.5.5.5开始抓包,同时从本机使用http proxy,然后就可以停止抓包。选中一个目标ip是5.5.5.5的报文,按鼠标右键,选择"编辑显示过滤",选择"数据模式",选择add pattern,到tcp层选中8080目标端口,用鼠标选择"设置数据",起名"目标端口8080"。回去选择"应用显示过滤"。以后用proxy规则过滤将只过滤目标ip是5.5.5.5、目标端口是8080的报文。要是对协议分析熟悉,根本不用写这么多,以后要问netxray的使用说明,请直奔主题,否则回答起来实在罗嗦。关键是有些人太懒惰,不乐意自己实践。标题:netxray使用说明之(2)如何指定源端口、目标端口?1. 注意data pattern和address是逻辑与的关系2. 进入data pattern设置页 比如你想设置这样一个过滤规则,源端口是2323或者目标端口是2323 的ip包,先选中第一行,用toggle and/or调整成or,因为你的逻辑表达式 的最外层是 or3. 选择add pattern,在弹出的对话框里设置 packet 34 2 hex 从顶头开始填写 09 13,因为十进制的2323对应十六进制的0x0913,而ip包 使用网络字节顺序,高字节在低地址。 起名任意,比如源端口2323,确定 再次选择add pattern packet 36 2 hex 从顶头开始填写 09 13 起名任意,比如目标端口2323,确定 于是最外层的or下有两个叶子,分别对应两个pattern。4. 还有很多变化,但都和这个基本例子差不多,你的过滤规则可以非常复杂。 最外层的or表示它下面的所有叶子之间都是or的关系,所以我建议当你企图 建立一个非常复杂的规则的时候先写出逻辑表达式再来操作,以免不必要的 重复劳动。标题:netxray使用说明之(3)如何抓ftp/pop3口令明文?netxray所谓的高级协议过滤事实上就是端口过滤,用(2)中介绍的方法指定源端口目标端口均过滤0x00 0x17,就可以达到和指定telnet过滤一样的效果。netxray认为telnet就是23端口,所以如果想捕捉一个非标准telnetd的通信,必须自己指定端口过滤。此外pwin98下services文件的修改不影响netxray认为telnet就是端口23。每次指定捕捉telnet协议,但显示的时候可能会发现有些包没有标记成telnet,而是tcp,为什么?因为这些标记成tcp的包没有telnet数据区,虽然在完整的物理帧中有数据,但根据ip报头中的 ntohs( ip->tot_len ) ,对于ip报文来说没有telnet数据区。物理帧中为什么有?可能是考虑"填充",我不知道是数据链路层从内核返回的时候带上来的"填充",还是对端发送的时候就已经"填充",在linux下用sock_packet抓包也存在同样的问题,一般情况下recvfrom返回的字节数减去各个报头长度得到数据区长度,但出现"填充"时就不是这样了,所以处理ip协议族时,一定要用 ntohs( ip->tot_len ) ,我写linuxkiller时才认真注意到这个问题。那么用netxray时,不要看第三栏,那里是完整的物理帧,有很多干扰信息,应该看第二栏的数据区。如果是分析telnet协议并还原屏幕显示,只需要抓从server到client的回显数据即可,因为口令不回显,这种过滤规则下抓不到口令明文。在linux下编程实现时需要考虑95个可打印字符、汉字以及32个控制字符的显示过滤问题。如果想抓telnet的口令明文,需要抓client到server的数据。pred写的sniff监听别人的bbs登录就象看动画,但看不到口令,应该是只抓从server到client的回显数据。nethackii可以抓pop3/ftp/telnet的口令,对于前两者很容易实现,因为有pass关键字可以鉴别,后者稍微麻烦些,需要重组。值得一提的是foxmail的邮件监视器,简直就是定时发送口令明文,用netxray抓从client到server包,指定过滤pass关键字,非常清楚。下面简单说一下这个设置:先指定ip过滤规则,应该只指定 any <--> any,或者干脆不指定ip地址,以最大可能地捕捉口令。然后增加一个过滤模式,packet 54 4 hex 0x50 41 53 53再增加一个过滤模式,packet 54 4 hex 0x70 61 73 73两者是or模式,后者是因为这种关键字在网络传输中大小写不敏感,比如cuteftp发送的是pass。剩下的就是等口令来了。注意,不必指定过滤特定高级协议,直接指定过滤ip协议族就可以了,用这种办法ftp/pop3口令是很容易看清楚的。因为许多ftp/pop3的口令可以telnet 23,所以......标题:netxray使用说明之(4)unix/linux下执行clear命令究竟发送了什么字符串到终端才导致清屏效果出现,用netxray捕捉server到client的回显数据,发现如下字符串:1b 5b 48 1b 5b 4a 可以用fprintf输出这些字符到屏幕上,结果就是导致清屏效果。对于udp报文的源端口/目标端口过滤基本上和tcp报文的设置一样,不过这次换种方式指定:protocol 20 2 hex 源端口protocol 22 2 hex 目标端口这些都是在没有使用ip选项的情况下指定,如果使用了ip选项就需要做相应改变。标题:netxray使用说明之(5)这里的使用说明可以用于sniffer pro 2.6,因为这两个东西实际是一个公司的。虽然很多人告诉我sniffer pro比netxray强大,但是我个人觉得在协议分析方面netxray比sniffer pro要方便,虽然支持的协议少了点,但是在设置过滤规则和应用过滤规则等小操作上,显然sniffer pro没有吸取netxray的精华,这些小操作平时很难遇到,但真正做协议分析指定一些复杂的过滤规则的时候就会碰上。今天我们介绍的是如何抓取rpc报文,下面给出的办法仅仅是种尝试而已。因为rpc server使用动态端口,所以你无法进行常规的端口过滤设置,如果一定要设置可能需要尝试,具体例子请参看<< rpc/xdr/nfs系列之----nfs/mount协议 >>这里给一种不是很科学的办法:1. 指定进行ip过滤,设置any <--> rpc server ip2. 指定对tcp以及udp协议进行过滤,因为rpc server可能的底层支持协议包括二者。3. 进入data pattern设置页,用toggle and/or调整成or,因为你的逻辑表达式 的最外层是 or4. 选择add pattern,在弹出的对话框里设置 protocol 60 8 hex 00 00 00 00 00 00 00 02 起名tcp rpc call5. 同4的步骤,依次选择add pattern,在弹出的对话框里设置 protocol 60 4 hex 00 00 00 01 起名tcp rpc reply protocol 32 8 hex 00 00 00 00 00 00 00 02 起名udp rpc call protocol 32 4 hex 00 00 00 01 起名udp rpc reply这里给的办法仅仅代表一种思路,如果你发现并没有抓住某个特定rpc server的报文,可以自行调整过滤规则。要理解这个过滤规则,需要rpc本身的知识,可以参看<< rpc/xdr/nfs系列 >>。我曾经想设置远程程序号的过滤规则,但发现rpc reply报文中没有固定字段对应远程程序号,只好放弃。如果你只想抓rpc call报文,可以考虑这个思路。标题:netxray使用说明之(6)----捕捉oicq message报文netxray发包前可以在decode状态下编辑,sniffer pro 2.6却不象netxray那样善解人意,只能进行二进制编辑。sniffer pro的add pattern里的tab键极其混帐,并且这里也不提供decode支持。始终不能理解这些地方。不过破解版的netxray在decode时有些地方对不准,菜单window也不时失灵。暂略(回头补吧,没时间了)今天讲讲oicq message报文的捕捉。1. 首先设置进行ip/udp报文过滤,ip/tcp暂时就不必了,因为oicq message报文多 是ip/udp报文,我还没有看到过ip/tcp,应该是没有的。2. 根据需要在address/ip include里设置通信双方的ip,假设我们需要捕获所有与 本机oicq.exe通信的oicq message报文,设置成 myip <----> any3. 进入data pattern设置页,用<< netxray使用说明之(2) >>里的办法指定 ( ( srcport == 4000 ) && ( dstport != 8000 ) ) || ( ( srcport != 8000 ) && ( dstport == 4000 ) ) 第一条的意思是本机向别人发消息,第二条是别人向本机发消息,之所以排除掉 8000,你可以进入oicq chat room看看此时涉及的端口。那么为什么不指定两头 都是4000呢,因为如果过了透明网关之类的,udp relay的时候会改变源端口, 一般都不会是4000了。反过来,如果你发现一个入包的源端口不是4000,他/她应 该在类似sygate的代理后面。不过此时udp data pipe已经建立,即使他/她在 sygate后面,还是可以利用刚才抓到的ip/port和他/她通信,意味着很多事情都 可能发生。 这里假设都通过oicq.exe通信,如果用自己写的程序与oicq.exe通信,源端口不 必非是4000,可以任意指定。4. 算了,还是详细说说条目3中高级过滤规则的指定 a. 用toggle and/or把最上层调成or b. 选中or,然后add and/or增加两个上去,分别用toggle and/or调成and c. 选中第一个and,然后add pattern,选中增加的pattern,选择 packet 34 2 hex,从1开始输入 0f a0,就是0x0fa0的意思, srcport == 4000 d. 选中第一个and,然后add not,选中增加的not,用toggle not确认已经调成 not,选中not,然后add pattern,选中增加的pattern,选择 packet 36 2 hex,从1开始输入 1f 40,就是0x1f40的意思, dstport != 8000 e. 选中第二个and,重复"类似"c、d的步骤,分别指定srcport != 8000以及 dstport == 4000 f. 选中最上层的or,看看summary,是否符合你预想的逻辑表达式,如果不符合, 继续调整,直至正确。虽然这里是针对oicq.exe设置高级过滤规则,但这是一个很完整而又略显复杂的设置说明,对<< netxray使用说明之(2) >>是个很好的补充。标题:netxray使用说明之(小插曲)----分析netants的1975问题设置过滤规则为:myip --> any:1975设置捕获ip/tcp协议,注意不要指定捕获http协议,netxray是根据端口区分协议的,你指定http协议,就只捕获80端口的报文了。过一段时间1975上的连接自动切断。在本机用netstat -a 或者 netstat -na 看到如下信息:tcp scz:1475 ad2-1.aureate.com:1975 establishedtcp 192.168.8.90:1475 216.37.13.140:1975 established标题:netxray使用说明之(7)----lanexplorer 3.5下的过滤规则设置作者:小四 < mailto: scz@nsfocus.com >主页:http://www.nsfocus.com日期:2000-08-28 20:21--------------------------------------------------------------------------下面是咱们<ipxodi@nsfocus.com>的大放厥词:lanexplorer 3.5,9x/nt/2k下的协议分析软件,7mb,http://www.intellimax.com破解如下:安装完成后,用hexedit打开probe.exectrl g 跳到0x4eac7,把75改成eb,保存。以后运行提示注册,点击cancel进入即可。--------------------------------------------------------------------------实际上lanexplorer和netxray不是一个厂家的产品,从使用上也很多不同,但是从协议分析角度来看,没有区别,姑且放到一起介绍。这个系列完全是为初学者写的,前阵有人问起续篇,将就着再写写,实在是没意思的东西。1.从菜单上选择capture-->filter,选择左上角的[ new profile ]按钮,输入你觉得切合要求的名字,比如tcp-smb。这里有个小窍门,如果你已经有一个合理可用的ip规则,就先选中ip规则,然后点击左上角的[ new profile ]按钮,那么新规则以ip规则为模板生成。2.选中tcp/udp port页,点击最顶行最右边的[ tcp/udp ports... ]按钮,选择new,输入端口号445,描述任意,比如tcp-smb,ok。filter mode选择inclusive,选中下面的[ exclude non-tcp/udp packets ]复选框在[ port 1 ]里选择刚刚新创建的tcp-smb,选择-->,在[ port 2 ]里选择all,选中右边的tcp复选框,udp复选框不要选中。3.选中address页,address mode选择ip,选中下面的[ exclude non-ip packets ]复选框,filter mode选择inclusive,在[ address 1 ]里选择[ any address ],选择-->,在[ address 2 ]里输入192.168.8.90(我自己的内部ip)4.选中layer 3 页,假设所有的复选框都清空了,从右边开始,在tcp/udp栏里只选择others,而ip/arp栏里的tcp和udp不用选中,提交本条过滤规则的时候lanexplorer会自动判别并替你选中ip/arp栏里的tcp和udp复选框,如果你此时自己选中也无妨。5.选中layer 2/3页,假设所有的复选框都清空了,从左边开始,在ethernet ii栏里只选择ip/arp复选框,注意和layer 3 页之间的关系,提交本条过滤规则的时候lanexplorer会自动判别并替你选中llc栏里的ip复选框以及snap栏里的ip/arp复选框,如果你此时自己选中也无妨。6.选中layer 2页,假设所有的复选框都清空了,在vlan栏里选中others复选框,mac栏不用理会。点击中文的[ 确定 ]按钮(太奇怪了,lanexplorer为什么这里出现了中文按钮,而其他地方没有)7.从菜单上选择capture-->filter,选中你要使用的过滤过则,如果刚刚创建过新规则,默认的当前过滤规则就是新规则。从菜单上选择capture-->start。这个规则设置过程很简单,显然lanexplorer的设置不如sniffer pro友好,至于它的发送更是不尽人意,这些不多说了,用过的朋友自己对照。执行net use \\192.168.8.48\ipc$或者newletmein \\192.168.8.48 -all -d之类的命令,可以验证上述过滤规则是否有效。很多朋友在高级过滤规则的设置上失败,其原因很多,抛开对协议本身不了解的原因,lanexplorer设置复杂是重要原因。有一点特别注意,宁可多选几个复选框,不要对自己不了解复选框清空,你能解释第6条中为什么选择vlan栏里的others复选框吗?我不能,可你的确必须如此选择。更多的东西需要自己摸索。我不喜欢这个东西,可我现在2k下,没有别的可用。--------------------------------------------------------------------------下面是netguy的破解1. probe.exe: 1,114,112 b字节2. crack_probe.exe: 1,114,112 b字节4e924: 7c 904e925: 18 904e93c: 7e eb4ea62: 6a eb4ea63: 00 154eabc: 50 eb4eabd: e8 12--------------------------------------------------------------------------<待续>标题:netxray使用说明之(7.5)----lanexplorer 3.6下的过滤规则设置举例(续)3.6据说比3.5加强了一些,包括退出后僵尸进程的问题,启动中乱报错问题,现在似乎支持拨号适配器上的抓包了(以前如何我还真没测试过),但在过滤规则上毫无改观。以前过滤规则全部在升级过程中丢掉了,只好重新设置。下面是ip过滤规则的设置:1.从菜单上选择capture-->filter,选择左上角的[ new profile ]按钮,输入你觉得切合要求的名字,比如ip。这里有个小窍门,如果你已经有一个合理可用的default规则,就先选中default规则,然后点击左上角的[ new profile ]按钮,那么新规则以default规则为模板生成。2.不要动tcp/udp port页、address页3.选中layer 3 页,假设所有的复选框都选中了,因为我们设置的是ip过滤规则,要求抓取所有ip报文。注意lanexplorer把arp归入layer 3 页,如果你的确只想抓ip报文,清除该页第一个arp复选框。反之,如果你只想抓arp报文,应该清空layer 3 页后只选择该页第一个arp复选框。4.选中layer 2/3页,假设所有的复选框都清空了,从左边开始,在ethernet ii栏里只选择ip/arp复选框,注意和layer 3 页之间的关系。3.5版这里会自动替你选中llc栏里的ip复选框以及snap栏里的ip/arp复选框,3.6版没有这个毛病了。5.选中layer 2页,假设所有的复选框都清空了,在vlan栏里选中others复选框,mac栏根据需要指定,比如只想抓取单播ip报文,就只选中unicast复选框。vlan栏里others复选框必须选中,至于为什么,不清楚。回头看第三条,如果想抓arp报文,因为arp request是广播报文,为了同时抓取请求和响应报文,必须在mac栏里选中broadcast复选框。当然,只选中unicast复选框,将抓取所有arp reply报文。点击中文的[ 确定 ]按钮(太奇怪了,lanexplorer为什么这里出现了中文按钮,而其他地方没有)6.从菜单上选择capture-->filter,选中你要使用的过滤过则,如果刚刚创建过新规则,默认的当前过滤规则就是新规则。从菜单上选择capture-->start。标题:netxray使用说明之(8)----捕捉来自特定源ip的arp报文今天调试一个程序的时候,利用sigalrm进行arp欺骗,需要抓几个arp响应报文确认定时机制起作用了,但又不想都抓,arp报文太多了。1. 以default为模板复制一条规则arp2. 在"高级过滤"里选中arp协议3. 在"数据模板"里选择"增加模板",此时默认是and规则4. 依次输入或选择 packet 28 4 hex5. 从顶头开始输入 c0 a8 0a 19 就是说源ip为192.168.10.25 描述性文字任意,比如srcip == 192.168.10.256. 一路确定下去即可事实上平时设置过滤规则不需要这样麻烦,可以先用母体规则(比如default)抓取一些报文,然后用鼠标选中你需要的报文,保持不动的情况下进入过滤规则设置界面,新建一个过滤规则arp,此时"数据模板"里的"设置数据"按钮可用,在左面选择你感兴趣的数据域,点击"设置数据",会自动替你生成一个"数据模板",然后根据需要稍微修改一下即可。即使你对tcp/ip协议非常熟悉,也没有必要自己计算偏移量。<<netxray使用说明之(2)>>里的"数据模板"一样推荐采用这个办法指定。标题:netxray使用说明之(9)----tcp/dns问题论坛上santa朋友报告了一个关于win2k下sniffer pro 4.5的问题,简单说就是解析tcp/dns报文的时候有点问题。flag和我一起仔细测试过,的确存在小麻烦。在rfc 1035的"4.2.2. tcp usage"小节对此有足够解释,tcp数据流的前两个字节是message length,这点和udp dns报文明显不同。注意,既然是tcp数据流,所以并不要求这两个字节和dns负载出现在同一个报文中,至少redhat下nslookup在做区传输的时候先发送了两个字节的message length,然后发送另外一个tcp报文携带了dns负载。对于udp dns报文,udp数据区直接对应dns负载,udp头部中udp报文长度减去8就是dns负载长度(也就是udp数据区长度)。从win9x下的sniffer pro 2.6到win2k下sniffer pro 4.5,事实上都意识到了tcp dns的特殊性,解析区传输引发的tcp查询报文时,对前两个字节做了规避。偏偏前两个字节已经单独发送到dns server去了,最终导致后续dns负载中真正的id域被当成message length而越过,param域被当成id域解析,再后面的域解析全部乱套。区传输的第一个响应报文中message length和后续dns负载位于同一个tcp报文中,所以解析正确。rfc 1035没有强制要求message length如何出现,对于tcp数据流来说,这是完全正确的,本来就没有边界概念。sniffer pro无法预知所有tcp数据流的表现方式,或者说无法预知所有dns client的具体实现方式,只能简单假设message length和后续dns负载位于同一个tcp报文中,不可能为了正确解析这种tcp dns查询报文而跟踪保持前后的tcp数据流(前后状态相关)。netxray 3.03存在类似问题,但是它显式解析了message length字段,以tcp length显示该字段,明确提醒使用者tcp dns报文和udp dns报文的差别。很奇怪,snifferpro抛弃了太多netxray的优点,这次又是一个例证。如果你想自己测试验证这个问题,重点在于如何激发tcp dns报文,下面是我整理维护的<<unix编程/应用问答中文版>>中的内容:--------------------------------------------------------------------------17. 如何进行dns区传输a: scz <scz@nsfocus.com> 用nslookup是最普遍适用的 nslookup > server ns.tsinghua.edu.cn > set type=axfr > ls tsinghua.edu.cn [> tsinghua.txt] (方括号里的可选) 有些系统提供了dig命令 dig @ns.tsinghua.edu.cn axfr tsinghua.edu.cna: lgwu 有些系统提供了host命令,这个命令不太保险 host -l net.tsinghua.edu.cn (后面指定域) host -l ncic.ac.cn18. 如何获知权威名字服务器a: scz <scz@nsfocus.com> nslookup > set query=ns > ncic.ac.cn (获知管辖该域的权威名字服务器) authoritative answers can be found from: gatekeeper.ncic.ac.cn internet address = 159.226.41.188 > server gatekeeper.ncic.ac.cn > set type=axfr (准备区传输) > ls ncic.ac.cn > ncic.txt--------------------------------------------------------------------------另外有个问题,用redhat下nslookup做区传输激发tcp dns报文,win2k下lanexplorer 3.6抓取响应报文(不是分成两半的查询报文),在企图解析时导致进程异常退出。具体原因尚在猜测中,可能和错误处理message length字段有关。由此我们想到其他sniffer是否存在类似问题,针对unix系统下snoop、tcpdump是否有机会做exploit。2001-02-14 23:37snoop -v tcp dst host 192.168.10.1 and src port 53 and src host 192.168.0.2这个命令会报告tcp dns负载,但是并不像lanexplorer 3.6那样企图解析什么。tcpdump -s -n -t src port 53 and src host 192.168.0.2 and dst host 192.168.10.2 and ip proto \\tcp这个命令干脆不会报告dns负载,tcpdump究竟如何才能达到效果,-v和-vv都不行。结论是tcpdump和snoop暂时不存在类似问题。<<libnet使用举例(8)>>./dkiii --di 192.168.8.90 --num 20dkiii所发送的异常dns请求分组制造了一个解析循环,netxray3.03终止,lanexplorer 3.5在试图解析该类报文的时候异常终止。今天测试结果是lanexplorer 3.6依旧存在该问题,98/2k下测试。此外袁哥确认qtcount值异常的时候,lanexplorer 3.6解析过程中发生崩溃。发信人: scz (小四), 信区: security www-post标 题: netxray使用说明之(10)----捕获telnet登录口令发信站: 武汉白云黄鹤站 (sun apr 15 19:41:40 2001) , 转信今天逛cernet/bbs的时候看到又有人问如何抓telnet登录口令的事情,再写一遍好了。其实如果你有现成的口令监听工具,就不必看这里的介绍了,我也不喜欢用本来是协议分析工具的sniffer pro去做这种事情。仅仅是进一步演示高级过滤规则和触发器的使用。原理如下:telnet登录时口令部分不回显,只能抓取从client到server的报文才能获取明文口令。所以一般那些监视还原软件无法直接看到口令,看到的多半就是星号(*)。缺省情况下telnet登录时进入字符输入模式,而非行输入模式,此时基本上是客户端一有击键就立即向服务器发送字符,tcp数据区就一个字节。在不考虑ip选项、tcp选项介入的复杂情况下,整个物理帧长度14 20 20 1 = 55。我是懒得升级,所以一直用pwin98下的sniffer pro 2.6(就是deepin上传到spp那里的那个)和古老的netxray。下面的举例以sniffer pro 2.6为准,更高版本基本类似,不想切换到2k下测试4.5版了。capture --> define filter... --> profiles... --> new...如果你已经有tcp模板或者更精确的模板,就选它们,没有的话,选择根据default模板创建,起个相关点的名字,别什么test1、test2的就来了,我起名telnet_username_passwd。一路确定(done),回到define filter对话框。进入advanced设置页,选中ip/tcp/telnet。packet size packet typeequal 59 只选中normalsize = 59进入data pattern设置页,add pattern,选择packet 46 2 hex数据区设置50 18描述成"tcp头20字节、ack psh"(这里任意描述,但应该有意义)进入address设置页,设置根据ip地址过滤,设置"clientip --> serverip"的过滤模式。不要设置成双向或者"serverip --> clientip",否则干扰信息太多。点击确定后这条"telnet_username_passwd"过滤规则就设置完了。什么意思?很直白,只捕获从客户端到服务器的、tcp数据区只有一个字节的、带ack psh标志的、不带ip选项和tcp选项的正常telnet报文。可能你有疑问,为什么设置size = 59,而不是55。我也很想知道sniffer pro哪里吃错药了。以太网帧的确应该是55,可是如果加上4字节的crc校验和,就是59了。sniffer pro在decode显示中没有显示这个4字节crc校验和,却在设置packet size的地方包含了它,简直就是毛病。netxray在decode显示中显示了4字节crc校验和,在设置packet size的地方并不包含它,也就是说,同样的规则如果换到netxray那里,应该是size = 55。显然我们习惯netxray的这些地方,可惜sniffer pro丢弃了太多netxray好的一面,这次又是一个例证。顺便问一下,谁知道在unix/linux下编程的时候如何得到这4字节的crc校验和,链路层编程收包得到的仅仅是以太网帧,没有crc。回到看口令的问题上来,设置了上述规则后,实际就可以看到用户名、口令以及登录后的击键了。干扰信息相当少,一眼就可以看出哪个是哪个。如果要玩点玄的,比如trigger,我们可以这样考虑问题。第一个有效包应该是59字节,前面的其他报文在做三次握手、telnet协商,长度都不是59字节(可以抓包确认这个结论)。定义一条规则"telnet_username begin",对于这次的举例,实际就和"telnet_username_passwd"一样,但是最好选择后者做模板单独重新定义一次,为什么?这个以后自然就会明白,至少可以让设置清晰、直观些。最后一个有效包(就是说看到这个包后停止抓包)应该是什么呢?不能是60字节的0d0a(对于微软平台的telnet)或者0d 00(unix平台),因为用户名输入结束的时候就有一次60字节的报文出现,如果选择这样的报文做结束报文,口令就抓不到了。考虑登录成功后服务器都会向客户机发送"last login:"一类的信息,同一个包中还包括登录后的shell显示,这个包显然要比前后附近的包大很多(不是三四个字节的问题)。我们以此包为结束触发报文。定义一条规则"telnet_passwd end",以"telnet_username begin"为模板创建,修改两个地方,一个是"size > 100",一个是"clientip <-- serverip"(反向,因为这个报文是从服务器到客户机的)。至此我们定义了三条规则,一个开始触发规则、一个持续抓包规则、一个结束触发规则。开始设置trigger:capture --> trigger setup...四个复选框中只选中"start tigger"、"stop trigger"。因为以前没有设置过,无法从下拉列表中选择什么,只能分别定义触发器。以start trigger为例,进入define,new一个新的触发器名字,起名"telnet_username begin"(不必和过滤规则一致,但是保持一致比较清晰),右边三个复选框只选中最下面的"event filter",那个下拉列表里实际对应过滤规则,选中"telnet_username begin"过滤规则,确定。这里还可以设置什么时间开始触发,不过作为演示,简化这些可能。capture的下拉列表里也是对应的过滤规则,选中"telnet_username_passwd"过滤规则(持续抓包规则)。"stop trigger"的定义类似"start trigger",这次选择"telnet_passwd end"过滤规则,起名"telnet_passwd end"。同样,演示中不考虑时间设置,简化操作。可以指定在结束触发条件满足后还多抓几个包,比如指定多抓2个包。确定后这个触发器生效。什么意思呢。sniffer pro自动开始捕获报文,但是并不保存,直到碰上一个报文匹配了"telnet_username begin"过滤规则,此时开始保存在自己的缓冲区中。然后根据capture处选择的"telnet_username_passwd"过滤规则持续抓包。一直到结束触发条件"telnet_passwd end"被满足。多抓两个包后彻底停止抓包。查看结果,就完整地对应了登录过程中用户名、口令的输入过程,很容易恢复出口令明文和用户名。trigger作用下的显示结果显式标注了start trigger和stop trigger的位置,这之间的就是我们关心的内容。先是用户名,然后紧跟口令明文,最后是两次登录成功的击键。0d 0a或者0d 00被过滤掉,登录协商信息也被扔掉了。如果不熟悉sniffer pro的操作,可能看了之后还是比较模糊,可以对照着实地操作一下,其实不难。开始触发规则和持续抓包规则可以不一样,这次举例比较特殊而已。现在交换环境以及加密传输越来越普及,单纯靠这些小把戏抓口令已经意义不大了。很多人估计从来就没有用过trigger。你验证过之后完全可以根据自己实际需要定义trigger,基本思路是,定义三条规则,一个开始触发、一个持续抓包、一个结束触发,要区分共性、特性,考虑结合时间触发设置。至于alarm触发设置,以后有实际应用举例的时候再介绍,现在介绍你晕我也晕。pwin98下sniffer pro 2.6毛病很多,使用trigger后很容易蓝屏。我没有切换到2k下测试4.5版是否还有这个毛病。今天发现telnet过程使用行输入模式是荒芜陈旧的,不推荐使用,但用户可以ctrl-]进入telnet>模式,输入mode line(可能要两次)切换到行输入模式,pwin98的telnet.exe如何切换进入行输入模式,我也不知道。如果有人吃疯了,以行输入模式登录,口令明文就在单包中,用户名在另一单包中,更容易恢复出来。作为上述trigger设置却要失效了。cterm登录的时候用的应该就是行输入模式。此时一个办法就是不用trigger,直接抓包看就可以了。如果要指定trigger,应该修改开始触发规则和持续抓包规则,结束触发规则不必修改。持续抓包规则就设置成telnet协议报文即可,因为用户名和口令明文到底多长不清楚,即使还做数据区长度限制,也应该换成 58 < size < 100。开始触发规则换成size = 70,从客户机到服务器,这样的包在login提示符出现前只有一个,是个telnet协商报文,也比较靠近login提示符出现的时候,干扰信息较少,我暂时没有更好的想法来设置开始触发规则。修正后的trigger既可以对付单字符输入模式登录,也可以对付行输入模式登录,不过在对付单字符输入模式登录的时候没有前一个trigger好,干扰信息稍微多了几个。这里介绍的trigger不是最好的,仅仅是演示效果。大家可以发挥自己的想象力设置高效实用的trigger(我憎恨trigger,回去睡觉,2001-04-15 07:56)。下午过来时想到,开始触发规则可以用clientip <-- serverip,服务器始终会给客户机一个"login:"提示,可以用它做开始触发。对于登录solaris和linux有所不同,需要分别抓包确认其中区别,比如solaris提示"login:"之后还有一些协商过程,而linux没有。输入口令错误,第二次提示"login:"的报文就和linux一样了,也是65个字节(包括crc)。提示"login:"的时候,如果连续两次回车,服务器给客户机的提示报文又有不同。根据具体情况抓包分析,按照某种原则选择合适的报文,设置开始触发规则。显然没有一劳永逸、放之四海皆准的触发规则。对于结束触发规则,如果服务器上用户主目录$home下有一个.hushlogin文件存在,则服务器回显客户机的时候,没有"last login:"信息,顶多是登录shell的显示(也就几个字节),此时前面设置的结束触发规则失效。演示举例中不考虑这些非普遍现象,真要对付所有情况,应该自己写程序做内容过滤,确定各种触发条件。现在来总结一下稍微通用点的trigger设置:1) 开始触发规则"telnet_username begin"clientip <-- serverip 这个根据需要调整,必要时可以使用any,不过对于trigger,使用any的可能不大,仔细想想为什么。telnet协议,只抓normal报文。ack psh 标志,至少不要让带syn的两个报文混进来吧。也就是在data pattern处设置packet 46 2 hex,数据区设置50 18。这样做了之后实际意味着带ip选项、tcp选项的报文被丢弃,进一步减少干扰信息。69 < packet size < 72,不解释了,分别登录solaris/linux,自己抓包看看。2) 持续抓包规则"telnet_username_passwd"clientip --> serverip 因为口令不回显,只能抓从客户机到服务器的击键获取口令。没有必要抓服务器的回显,减少干扰信息。telnet协议,只抓normal报文。58 < packet size < 100 主要是考虑了使用cterm登录的时候,进入行输入模式。如果不考虑这种情况,完全可以指定size = 59,这样要精确得多。在data pattern处设置packet 46 2 hex,数据区设置50 18。解释同上。3) 结束触发规则"telnet_passwd end"clientip <-- serverip,telnet协议,packet size > 100,只抓normal报文。在data pattern处设置packet 46 2 hex,数据区设置50 18。解释同上。上面是说如何捕获telnet登录口令,同理,要在公共机房捕获bbs登录口令,首先抓包简单分析一下,设置不同的触发条件,一样容易实现。这个我就不写那么直白了,否则要被人砍死的。修改持续抓包规则,size = 59,其他不变,起名"telnet_key",不设置trigger,直接捕获客户机到服务器的击键,我觉得这个设置简单、高效、实用。
上一篇: tfn2k使用方法和对策(1)
下一篇: 网络刺客2使用指南