非主流入侵之会话劫持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会话劫持的实现,相关问题请查阅参考文档。因为入侵方法复杂,并且需要一定的基础,所以,掌握的人并不多。我已经尽量写地简单,只要按照以上的步骤去做就能实现,具体的代码实现就不写了,有兴趣的朋友自己去研究吧。
本文只是在技术上分析如何来通过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会话劫持的实现,相关问题请查阅参考文档。因为入侵方法复杂,并且需要一定的基础,所以,掌握的人并不多。我已经尽量写地简单,只要按照以上的步骤去做就能实现,具体的代码实现就不写了,有兴趣的朋友自己去研究吧。
下一篇: 网上兼职赚钱日结 网上兼职是真的吗