SMB(Server Message Block,服务器消息块)协议是Windows协议族的重要组成部分,专门负责文件和打印共享服务。在Windows 9X和NT时代,SMB依赖NBT(NetBIOS over TCP/IP)实现通信,NBT使用137、138(UDP)和139(TCP)三个端口。从Windows 2000开始,SMB除了沿用NBT方式外,还可以直接运行在TCP/IP上,省略NBT层,直接使用TCP 445端口。
当Windows 9X或NT系统作为客户端连接SMB服务器时,由于设计之初未考虑445端口,因此只会尝试连接服务器的139端口。而Windows 2000或XP系统(在允许NBT的情况下)则会同时尝试139和445两个端口——如果445端口有响应,系统会向139端口发送一个RST包断开连接,然后通过445端口继续通信;只有当445端口无响应时,才会回退使用139端口。
如果扫描结果显示对方开启了TCP 139或445端口,那么后续的文件传输和管理操作将变得更加便捷。例如,NET命令远程管理,以及NTCMD、Enum、Letmein、SMBCrack等工具,都需要依赖这些端口才能正常工作。不过,要成功利用这些端口,本地客户端也需要满足特定的条件。
如果对方仅开放了139端口,本地计算机需要在“网络连接→属性→TCP/IP协议→属性→高级→WINS”中设置启用NBT(NetBIOS over TCP/IP),同时本地防火墙必须允许上述三个端口的通信,否则无法建立连接。对于普通拨号上网的用户,需要在拨号连接的网络属性中勾选“Microsoft 网络客户端”和“Microsoft 网络的文件和打印机共享”这两个组件来启用NBT。如果本地计算机是Windows 9X或Windows NT,会直接显示无法连接;如果是Windows 2000或Windows XP,则会直接尝试连接对方的445端口而跳过NBT,结果仍然无法连接。
如果对方仅开放了445端口,那么本地计算机只要是Windows 2000之后的系统就可以直接连接。但如果本地计算机是Windows 9X或Windows NT,它们实现的SMB协议只能基于NBT,因此只会尝试连接139端口,无法与445端口建立连接,基于SMB的工具也无法使用。因此,想要入侵NT/2000系统,最好使用Windows 2000系统。
如果两个端口都开放了,那是最理想的情况,只需满足其中任意一个端口的连接要求即可。
禁止139/445端口的方法
1. 打开“开始→设置→控制面板→管理工具→本地安全策略”,右键点击“IP安全策略,在本地机器”,然后选择“管理IP筛选器表和筛选器操作”。
2. 在“管理IP筛选器列表”选项卡中,点击“添加”按钮。
3. 系统会弹出“IP筛选器列表”窗口。
4. 分别填写名称和描述,例如“禁用139连接”,然后点击“添加”。随后会出现“IP筛选器向导”,单击“下一步”。
5. 在“指定IP源地址”窗口中,将“源地址”设置为“任何IP地址”,然后点击“下一步”。
6. 在“IP通信目标”的“目标地址”中选择“我的IP地址”,点击“下一步”。
7. 在“IP协议类型”的“选择协议类型”中选择“TCP”,点击“下一步”。
8. 在“筛选器向导”的“设置IP协议端口”中,第一栏选择“从任意端口”,第二栏选择“到此端口”并填入“139”,然后点击“下一步”。
9. 接着点击“完成”,再单击“关闭”,返回“管理IP筛选器表和筛选器操作”窗口。
10. 切换到“管理筛选器操作”选项卡,点击“添加”。
11. 同样会弹出“筛选器操作向导”窗口,点击“下一步”,在“名称”字段中填入“禁用139连接”。
12. 点击“下一步”,选择“阻止”,再次点击“下一步”。
13. 点击“完成”,然后点击“关闭”。
