::: {#msgcns!BAC70107D054E892!338 .bvMsg} SMBproxy是一个SMB会话劫持工具。当你得到了NTLM hash(pwdump4格式)时,你可以不需要用暴力破解。特别适用于复杂的密码,以及超过14位的密码(无LM hash)。
但经过测试可以知道,SMBproxy的原始版本并无效果。可能是作者故意为之,或者是该版本只是针对LM机制,而不是带Challenge的NTLM验证机制。
后来,有了需求,于是尝试着把SMBproxy自己修改,参考一些文章后终于基本修改成功。
参考里面的几篇文章已经将NTLM验证机制讲解的十分清楚,同时借助于Wireshark进行协议分析,实现了NTLM验证机制。
主要修改:
- 修改验证机制,加入challenge提取与加密运算
- 使用轻量级的加密库samcrytp.lib取代ssleay library(Eric Youngs),进行DES MD4运算。
- 使用win下的getopt.h
使用:
参数同原版SMBproxy,
1 停用server 服务
2 SMBproxy -s [ip] -f [pwdhash.pwdump]
3 net use \127.0.0.1ipc\$ anypass /u:user
建立空连接是可能会出现 发生系统错误53 找不到网络路径 的错误信息,此时ping一下server,然后再多试几次,建立空连接。
局限:
1 未实现Kerberos验证机制
2 貌似带AD(Active Directory)的win2k server的偏移地址不同(或者这就是Kerberos验证机制?)
编程环境:
VS2003
测试环境:(server Windows 2k, client Window XP)
server1:VMware win2K without AD。
server2:win2K in LAN
如需下载,请联系我。
参考:
1 SMB系列(5)--LM/NTLM验证机制 http://www.opencjk.org/~scz/network/200210141957.txt
2 samcrypt.lib简介 http://www.opencjk.org/~scz/misc/200401061504.txt
3 NTLM挑战模式散列认证加密协议过程,算法实现与一些想法 http://www.xfocus.net/articles/200305/541.html
4 SMB的NTLM认证过程与NTLM挑战的编程实现 http://www.xfocus.net/releases/200305/a533.html
</p>
:::