SMBproxy

::: {#msgcns!BAC70107D054E892!338 .bvMsg} SMBproxy是一个SMB会话劫持工具。当你得到了NTLM hash(pwdump4格式)时,你可以不需要用暴力破解。特别适用于复杂的密码,以及超过14位的密码(无LM hash)。

但经过测试可以知道,SMBproxy的原始版本并无效果。可能是作者故意为之,或者是该版本只是针对LM机制,而不是带Challenge的NTLM验证机制。

后来,有了需求,于是尝试着把SMBproxy自己修改,参考一些文章后终于基本修改成功。

参考里面的几篇文章已经将NTLM验证机制讲解的十分清楚,同时借助于Wireshark进行协议分析,实现了NTLM验证机制。

主要修改:

  1. 修改验证机制,加入challenge提取与加密运算
  2. 使用轻量级的加密库samcrytp.lib取代ssleay library(Eric Youngs),进行DES MD4运算。
  3. 使用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>

:::