ms17-010 smb 服务 只输入 名字 密码 那错误在哪里呢
针对MS17-010漏洞中提到的SMB服务,如果在尝试连接时只输入了用户名和密码,但遇到了错误,可能的原因及解决方法如下:
一、可能的原因
-
SMBv1协议的使用:
- MS17-010漏洞正是利用了SMBv1协议中的漏洞。如果系统仍在使用SMBv1协议,那么即使输入了正确的用户名和密码,也可能因为协议漏洞导致连接失败或受到攻击。
-
凭据缓存问题:
- 在某些情况下,系统可能会缓存旧的凭据,导致即使输入了新的用户名和密码,系统仍尝试使用旧的凭据进行连接。
-
网络配置或防火墙问题:
- 网络配置错误或防火墙设置可能阻止SMB服务的正常连接。
-
用户名或密码错误:
- 尽管问题中提到了“只输入名字密码”,但仍需确认输入的用户名和密码是否正确。错误的用户名或密码是导致连接失败的最直接原因。
-
系统更新问题:
- 如果系统未及时更新以修复MS17-010漏洞,那么即使输入了正确的用户名和密码,也可能因为系统漏洞而无法成功连接。
二、解决方法
-
禁用SMBv1协议:
- 对于仍在使用SMBv1协议的系统,应尽快禁用该协议以降低安全风险。禁用方法因操作系统而异,但通常可以通过控制面板或注册表编辑器进行设置。
-
清除凭据缓存:
- 如果怀疑凭据缓存导致问题,可以尝试清除凭据缓存。在Windows系统中,可以使用
cmdkey /list
查看已存储的凭据,并使用cmdkey /delete:目标
删除特定目标的凭据。
- 如果怀疑凭据缓存导致问题,可以尝试清除凭据缓存。在Windows系统中,可以使用
-
检查网络配置和防火墙设置:
- 确保网络配置正确,并且防火墙设置允许SMB服务的连接。可能需要调整防火墙规则或开放特定的端口(如445端口)。
-
确认用户名和密码的正确性:
- 重新输入用户名和密码,确保没有拼写错误或格式问题。
-
更新系统补丁:
- 确保系统已更新到最新版本,并已安装针对MS17-010漏洞的补丁。这可以通过Windows Update或其他更新机制进行。
综上所述,如果在尝试连接SMB服务时只输入了用户名和密码但遇到错误,应首先检查是否使用了SMBv1协议、凭据缓存是否有问题、网络配置和防火墙设置是否正确、用户名和密码是否正确以及系统是否已更新到最新版本。通过逐一排查这些问题,通常可以找到导致连接失败的根本原因并解决它。
SMBv1 错误 出现在哪一步呢
SMBv1(Server Message Block version 1)协议中的错误,特别是在MS17-010漏洞的上下文中,主要出现在处理文件扩展属性(File Extended Attributes,简称FEA)的转换过程中。具体来说,这个错误发生在Windows SMB服务处理SMBv1请求时,内核态函数在处理FEA到NTFEA(Windows NT FEA)的转换过程中存在缓冲区溢出问题。
以下是详细的步骤分析:
-
协议请求与响应:
- 客户端首先发送一个SMB negport 请求数据报,列出它所支持的所有SMB协议版本。
- 服务器响应请求,并列出希望使用的SMB协议版本。如果双方没有可以使用的协议版本,则通信结束。
-
用户认证:
- 协议确定后,客户端进程向服务器发起一个用户或共享的认证。
- 客户端SMBv1(Server Message Block version 1)协议中的错误主要出现在处理特定类型的网络请求和数据传输时,特别是在与Windows系统的内核态函数交互过程中。针对MS17-010漏洞,SMBv1协议的错误主要体现在以下几个方面:
-
协议兼容性问题:
- SMBv1和SMBv2协议之间存在兼容性问题,这在处理大型数据传输和复杂请求时尤为明显。攻击者可能会利用这些兼容性问题来构造恶意数据包,从而触发漏洞。
-
FEA到NTFEA的转换错误:
- 在Windows系统中,SMBv1协议处理文件扩展属性(FEA)时,会将其转换为NTFEA(Windows NT FEA)格式。在这个过程中,存在一个关键的转换错误。具体来说,
SrvOs2FeaListSizeToNt
函数在计算FEA list的大小并更新待转换的FEA list大小时,由于错误地使用了WORD强制类型转换,导致计算出的待转换FEA list大小比实际大小要大。这种大小计算错误会在非分页池中导致缓冲区溢出,进而允许攻击者执行任意代码。
- 在Windows系统中,SMBv1协议处理文件扩展属性(FEA)时,会将其转换为NTFEA(Windows NT FEA)格式。在这个过程中,存在一个关键的转换错误。具体来说,
-
消息命令类型识别错误:
- 在SMB协议中,使用一系列的命令来代表执行的操作。当传输的数据过大时,SMB通常会有一个子命令进行传输,并用传输过程中的TID(树标识符)、UID(用户标识符)、PID(进程标识符)和MID(消息标识符)来判断是哪一个命令的后续数据。然而,在SMBv1中,如果存在漏洞的系统没有正确识别消息命令的类型(特别是当使用SMB_COM_NT_TRANSACT和SMB_COM_TRANSACTION2命令时),就可能会导致错误的命令处理流程被执行。
-
内存布局和溢出利用:
- 攻击者可以利用SMBv1协议中的这些漏洞,通过精心构造的恶意数据包来触发内存溢出。在内存溢出和堆布局的基础上,攻击者可以实现对关键系统结构(如srvnet头部结构)的覆盖,从而控制后续的内存访问和操作。例如,通过覆盖MDL(内存描述符列表)指针,攻击者可以使后续发送的数据被保存到特定可执行的内存地址中,并在释放srvnet链接后执行该地址处的恶意代码(shellcode)。
综上所述,SMBv1协议中的错误主要出现在处理FEA到NTFEA的转换过程中、消息命令类型的识别上以及内存布局和溢出的利用上。这些错误共同构成了MS17-010漏洞的基础,使得攻击者能够利用该漏洞执行任意代码并控制受影响的系统。因此,为了降低安全风险,建议禁用SMBv1协议并及时更新系统补丁以修复相关漏洞。