社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
主题 :  捕获66,88的口令 
级别: 圣骑士
显示用户信息 
0  发表于: 2001-06-11   

 捕获66,88的口令 

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 Type  
Equal 59                                只选中Normal  
Size = 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字节的0D  
0A(对于微软平台的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,直  
接捕获客户机到服务器的击键,我觉得这个设置简单、高效、实用   

喜新厌旧
级别: 新手上路
显示用户信息 
3  发表于: 2001-06-14   
回复:哪里有!
在一般的机房 里有没有装Pwin98   是怎样装的
 玉泉的 图书馆 和中心机房里面可以装吗?
级别: 圣骑士
显示用户信息 
2  发表于: 2001-06-13   
回复:
Pwin98下的Sniffer Pro 2.6和古老的NetXray
喜新厌旧
级别: 新手上路
显示用户信息 
1  发表于: 2001-06-13   
回复:
这是在哪种操作系统中进行的!能不能在windows 98 中进行呀  要什么样的软件呀!
描述
快速回复

按"Ctrl+Enter"直接提交