欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

非主流入侵之会话劫持winnt/2k HASH

程序员文章站 2022-03-12 17:46:28
声明: 本文只是在技术上分析如何来通过sniffer来劫持winnt/2k的hash,对此文可能造成的危害不负任何责任。 引言: 近来SMB会话劫持的讨论占据了个大技术论坛不少的位... 08-10-08...
声明:
本文只是在技术上分析如何来通过sniffer来劫持winnt/2k的hash,对此文可能造成的危害不负任何责任。
引言:
近来smb会话劫持的讨论占据了个大技术论坛不少的位置,吸引了不少人的目光,同时绿盟月刊37期、phrack杂志60期和安全焦点峰会也刊登出了相关的文章,使得smb会话劫持成为一个热点。由于是window设计上的缺陷,这是一种无法察觉又非常可怕的攻击方法。本文试图从smb数据包分析的角度来说明如何截获winnt/2k的hash,具体的实现就不公布了,请读者牢记前面的声明。
说明:
为了使文章有针对性,关于smb协议以及smb会话过程就不谈了,用到的时候会一带而过,感兴趣的朋友请自行查询附录中的参考文档。文中提到的数据包如果没有特别说明都是通过sniffer pro截获到的,并且为了分析方便,去掉了物理帧头、ip头和tcp头,只留下netb和smb部分。 正文: 假设两台机器,一台为client a,一台为smbserver b。 一、session的建立:
设法让a去访问b的特定资源,产生一个netbios会话。a发送session request,其中包括经过编码的netbios名字。b在139端口监听连接,收到a的request后,b发送session confirm,其中没有任何内容。这样就建立了一个有效的session。其中session request数据包的netb type为0x81,session confirm数据包的netb type为0x82,可以在程序中通过判断这两个标志来确定是否产生一个有效的session,然后就可以想办法截获smb包了。 二、challenge的获得:
当有效的session建立后,就开始进行连接的确认工作了,从这一步中可以得到b发送给a的由b随机产生的challenge。
过程如下:a向b发送一个身份认证的请求,b随机产生一个8字节的challenge发送给a,这个challenge就包含在b发回给a的server response数据包中。用sniffer pro截获这个包后,去掉物理帧头、ip头和tcp头,再去掉4个字节的netb头,剩下的就是smb包的内容,再去掉33个字节长的smb reponse header,然后向后做36个字节的偏移,下面的就是长度为8个字节的challenge。这样就得到了我们需要的服务器随机产生的challenge。
(由于本文的目的在于散列截获的实现,所以数据包内个字节内容的具体含义不做任何解释,只说明位置,下文也遵循这个原则。想深入了解的朋友请参阅附录的参考文档) 三、lm&nt hash的获得:
a得到b发回的用于加密口令的challenge后,向b发送建立空连接的请求,b返回server response包,此时ipc空连接成功建立。a然后发送lm&nt hash给b,请求访问特定的资源,等待b的允许。我们需要做的就是截获a发送的这个smb包。下面来看怎么拆解出hash,还是去掉物理帧头、ip头和tcp头,再去掉4个字节的netb头,剩下的就是smb包的内容,再去掉33个字节长的smb reponse header,然后向后做28个字节的偏移,下面的24个字节的内容就是lm hash,紧接着的24个字节就是nt hash。现在我们就获得了a主机的lm hash和nt hash。 四、hash的破解
前面已经获得了challenge、lm hash和nt hash,现在我们做成lc文件格式,下面就是导入lc4来暴力破解了。lc的文件格式如下:
192.168.0.244 administ-7z6a4e\administrator:"":"":89e5e3f54a998398dc36e89ddd37334c801201ca39c9a5d3:8457623684f27a5efa5fe7b647e87c36d78616f80594123c:e3a96ff4507b9edf
后面的三列数字分别为lm hash、nt hash、challenge。 五、总结
本文旨在于讨论winnt/2k下smb会话劫持的实现,相关问题请查阅参考文档。因为入侵方法复杂,并且需要一定的基础,所以,掌握的人并不多。我已经尽量写地简单,只要按照以上的步骤去做就能实现,具体的代码实现就不写了,有兴趣的朋友自己去研究吧。