红队技巧-域渗透的协议利用

1.pth(hash传递)

1.1 PTH简介

哈希传递(pth)攻击是指攻击者可以通过捕获密码的hash值(对应着密码的值),然后简单地将其传递来进行身份验证,以此来横向访问其他网络系统,攻击者无须通过解密hash值来获取明文密码,因为对于每个Session hash值都是固定的,除非密码被修改了(需要刷新缓存才能生效),所以pth可以利用身份验证协议来进行攻击,攻击者通常通过抓取系统的活动内存和其他技术来获取哈希。

1.2 PTH限制

在03之后有了uac,所以本地只有sid 为500和administrators 组里的域账户能pth。域Domain admin默认在本地管理员组。但是sid 500账户的权限好像会受到限制。当uac某设置为1时,本地管理组内的用户都可以pth,域不变。

修改注册表 改为1

cmd /c reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f

1.3 PTH常用攻击方法

1.3.1 mimikatz 交互式获取

这种方法需要本地管理员权限

privilege::debugsekurlsa::pth /user:DD /domain:. /ntlm:35c83173a6fb6d142b0359381d5cc84c

1.3.2 psexec

在这里推荐使用impacket套装,有exe和py版本。获取的是system权限

psexec.exe admin@10.73.147.30 -hashes 624aac413795cdc1a5c7b1e00f780017:852a844adfce18f66009b4f14e0a98depython psexec.py  administrator@10.73.147.29   -hashes 624aac413795cdc1a5c7b1e00f780017:852a844adfce18f66009b4f14e0a98de

1.3.3 wmiexec

获取的是对方hash的权限,如下面为administrator

python wmiexec.py -hashes 624aac413795cdc1a5c7b1e00f780017:08eb9761caca8f3c386962b5ad4b1991 administrator@192.168.20.3

1.4批量PTH攻击

使用CrackMapExec来进行

https://www.freebuf.com/sectool/184573.html

1.5 一些注意事项

        当我们机器处于域环境中时,如果客户端是以IP地址访问服务端的,那么此使仍旧会使用NTLM协议进行身份认证,PTH攻击不管是NTLM认证还是Kerberos认证都是存在的!

KB2871997补丁与PTH攻击

PTH无法使用sid 500以外的用户登录,是因为打了KB22871997补丁所导致的,安装KB2871997前后的对比发现并没有任何区别。而之前非administrator的本地管理员Pass The Hash失败被一些观点认为KB2871997的作用,但这实际上因为远程访问和UAC的限制!

远程访问和UAC

UAC是window Vista的新安全组件,2003版本是没有的。所以2003管理组内的用户还是可以网络登录的,而03之后的win7 win8 win10 2008 2012 2012R2 2016 2019 本地都是只能sid为500的允许网络远程访问!

根据微软官方关于远程访问和用户账户控制的相关文档可以了解到,UAC为了更好的保护Administrators组的账户,会在网络上进行限制。

在使用本地用户进行远程登录时不会使用完全管理员权限,但是在域用户被加入到本地管理组员组后,域用户可以使用完全管理员的AccessToken运行。并且UAC不会生效,简而言之就是除了sid 500的用户之外可以PTH登录之外就是加入本地管理员组的域用户!

KB2871997 此补丁具体更改点如下:

       1.支持“ProtectedUsers”组

       2.Restricted Admin RDP模式的远程桌面客户端支持

       3.注销后删除LSASS中的凭据

       4.添加两个新的SID

       5.LSASS中删除明文凭证

       6.支持“ProtectedUsers”组

       "ProtectedUsers"组是WindowsServer 2012 R2域中的安全组,"ProtectedUsers"组的成员会被强制使用Kerberos身份验证,并且对Kerberos强制执行AES加密!想要使用mimikatz抓取这个组的hash,需要使用sekurlsa:ekeys

Restricted Admin RDP模式的远程桌面客户端支持

          注销后删除LSASS中的凭据,在这个更新之前,08什么的只要登陆过lsass内存中就会缓存明文密码、登陆凭证等。但是在打了补丁或者2012 win8 这种机器上只要用户注销就都没了。

          LSASS中删除明文凭证这里涉及到了Wdigest SSP,在此补丁出世之前。lsass中由各种SSP保存明文密码!但是在补丁出现之后,就只有Wdigest SSP能保存密码了。

          修改的Wdigest SSP的注册表,在这里还可以插入其他的SSP去记录明文

1.6 Pass the Hash with Remote Desktop

1.6.1 前言

在一般的渗透测试中,当我们拿到了某个用户的NTLM Hash的时候。我们一般就直接去PTH了,但是除了PTH还有另外一种额外的方法能够让我们PTH登录对方机器的3389服务,但是此条件有些苛刻!

1.6.2 简介

本文主要介绍以下内容:

Restricted Admin mode介绍

Pass the Hash with Remote Desktop的适用条件

Pass the Hash with Remote Desktop的实现方法

1.6.2.1 Restricted Admin mode介绍

官方说明:

https://blogs.technet.microsoft.com/kfalde/2013/08/14/restricted-admin-mode-for-rdp-in-windows-8-1-2012-r2/

适用系统:

高版本只支持 Windows 8.1和Windows Server 2012 R2

低版本需要打补丁 Windows 7 和Windows Server 2008 R2 默认不支持,需要安装补丁2871997、2973351

在这里形成这个漏洞的主要原因还是因为微软为了避免PTH攻击,开发了2871997补丁导致的!win8 2012 默认包含了这个补丁,所以不需要额外安装。而以前的版本则需要安装下补丁!

1.6.3 Pass the Hash with Remote Desktop的实现方法

(1)使用客户端命令登录

需要有两个必要的元素!首先是受害者机器需要开启注册表某一项,另一点是攻击机需要使用利用PTH登录的工具!

开启注册表

使用命令开启

REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f

攻击机登录

使用客户端命令行登录

sekurlsa::pth /user:administrator /domain:. /ntlm:08eb9761caca8f3c386962b5ad4b1991 "/run:mstsc.exe /restrictedadmin"
//pass:如果单独使用mstsc.exe,好像无法指定具体哪个hash登录!

1.如果当前系统不支持Restricted Admin mode,执行后弹出远程桌面的参数说明

2.如果系统支持Restricted Admin mode,执行后弹出登录桌面界面

(2) 使用FreeRDP工具来使用

他的旧版本支持pth登陆方式,下载链接:

https://labs.portcullis.co.uk/download/FreeRDP-pth.tar.gz

PTH登录3389无法缓存Hash,mimikatz无法从内存中抓取

2.用户枚举

2.1 原理分析

在域外也能和域进行交互的原因,是利用了kerberos协议认证中的AS-REQ阶段。只要我们能够访问域控88(kerberos服务)端口,就可以通过这种方式去枚举用户名并且进行kerberos协议的暴力破解了!

2.2 攻击优势

相比于LDAP的暴力破解,这里Kerbrute使用的是kerberos pre-auth协议,不会产生大量的日志 (4625 - An account failed to log on)

但是会产生以下日志:

口令验证成功时产生日志 (4768 - A Kerberos authentication ticket (TGT) was requested)

口令验证失败时产生日志 (4771 - Kerberos pre-authentication failed)

2.3 攻击方法

2.3.1 kerbrute_windows_amd64.exe

下载地址:

https://github.com/ropnop/kerbrute/releases

需要获取dc的ip,域名。将想要爆破的用户放入user.txt表中,这样就可以获取

kerbrute_windows_amd64.exe userenum --dc 192.168.60.1 -d hacke.testlab user.txt

获取到用户名后,可以将它用来爆破

kerbrute_windows_amd64.exe passwordspray -d hacke.testlab user.txt QWE123!@#

2.3.2 PY版本 pyKerbrute

下载链接

https://github.com/3gstudent/pyKerbrute

此工具分为用户枚举和口令验证两个功能。

2.3.2.1 EnumADUser.py

进行用户枚举,支持TCP和UDP协议。

命令实例:

python2 EnumADUser.py 192.168.60.1 test.com user.txt tcppython2 EnumADUser.py 192.168.60.1 test.com user.txt udp

2.3.2.2 ADPwdSpray.py

这个脚本进行口令破解功能,支持TCP和UDP协议,支持明文口令和NTLM hash

使用明文密码:

python2 ADPwdSpray.py 192.168.60.1 hacke.testlab user.txt clearpassword QWE123!@# tcp

使用hash:

python2 ADPwdSpray.py 192.168.60.1 hacke.testlab user.txt ntlmhash 35c83173a6fb6d142b0359381d5cc84c udp

3.密码喷洒攻击(Password Spraying)

3.1 前言

关于密码喷洒,笔者一开始的感觉应该是系统默认开启了次数。但是后来发现这个策略问题需要我们设置才会开启。net accounts /domain 所设置的策略问题,实验环境12默认没有阈值,导致爆破一直不被锁定。

3.2 工具介绍

DomainPasswordSpray.ps1是用PowerShell编写的工具,用于对域用户执行密码喷洒攻击。默认情况下它将利用LDAP从域中导出用户列表,然后扣掉被锁定的用户,再用固定密码进行密码喷洒。

需要使用域权限账户

下载链接:

GitHub项目地址:https://github.com/dafthack/DomainPasswordSpray

在这里作者进行了脚本修改

优化后的地址:http://payloads.online/scripts/Invoke-DomainPasswordSpray.txt

3.2.1 参数说明

描述:该模块主要用于从域中收集用户列表

参数 功能

Domain 

指定要测试的域名 

RemoveDisabled   

尝试从用户列表删除禁用的账户 
RemovePotentialLockouts 删除锁定账户 
UserList 自定义用户列表(字典)。如果未指定,将从域中获取
Password 指定单个密码进行口令测试
PasswordList
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值