内网渗透之内网权限维持

admin 2024年11月6日19:20:42评论4 views字数 4866阅读16分13秒阅读模式

Skeleton Key

原理:当拿到域控权限后,使用mimikatz可以注入Skeleon Key,将 Skeleton Key 注入域控制器的 lsass.exe 进程,这样会在域内的所有账号中添加一个相同的 Skeleton Key,而这个key是自己设定的所以可以随时共享访问。

(由于域控一般不会经常重启,所以可以通过注入到lsass.exe进程中,进行权限维持。注意万能密码并不能更改用户权限)

**条件:**需要拿到域控权限

利用

用mimikatz往域控中注入Skeleton Key,然后就可以用任意域用户以万能密码mimikatz,登录域控。

1、登录域控

内网渗透之内网权限维持

2、在域控安装Skeleton Key

mimikatz.exe "privilege::debug" "misc::skeleton" exit

这个时候系统提示 Skeleton Key 已经注入成功,此时会在域内的所有账号中添加一个 Skeleton Key,其密码默认为:“mimikatz”

内网渗透之内网权限维持

3、域内主机使用Skeleton Key登录域控

net use \WIN-8VVLRPIAJB0.test.local "mimikatz" /user:administrator

内网渗透之内网权限维持

DSRM域后门

目录服务恢复模式(DSRM,Directory Services Restore Mode)是Windows服务器域控制器的安全模式启动选项

原理:DSRM允许管理员在域环境出现故障时还原、修复、重建活动目录数据库,每个域控制器都有本地管理员账号和密码(与域管理员账号和密码不同)。DSRM账号可以作为一个域控制器的本地管理员用户,通过网络连接域控制器,进而控制域控制器。可以通过导出的HASH结合PTH方式,持续控制DC,即使域内用户密码都进行了修改也可以利用。

条件:获得域控权限

利用

1、使用mimikatz查看krbtgt的NTLM hash

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

内网渗透之内网权限维持

2、mimikatz读取SAM文件中本地管理员的NTLM Hash

本地管理员账号也就是DSRM账号的NTLM Hash

token::elevate
lsadump::sam

内网渗透之内网权限维持

3、将DSRM账号和krbtgt的NTLM Hash同步(为DSRM设置新密码)

NTDSUTIL                             #打开ntdsutil
set DSRM password                    #修改DSRM的密码
sync from domain account 域用户名字    #使DSRM的密码和指定域用户的密码同步
q(第1次)                              #退出DSRM密码设置模式
q(第2次)                              #退出ntdsutil

内网渗透之内网权限维持

4、此时查看DSRM的NTLM Hash发现与krbtgt的已经同步了

privilege::debug
token::elevate
lsadump::sam

内网渗透之内网权限维持


5、修改DSRM的登录方式

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

很多文章中都说到使用Windows Server 2000后的操作系统中,对DSRM使用控制台登录域控制器进行了限制,如果要使用DSRM账号通过网络登录域控制器,需要将该值设置为2。输入如下命令,可以使用PowerShell进行更改。

powershell -exec bypass
New-ItemProperty "hklm:systemcurrentcontrolsetcontrollsa" -name "dsrmadminlogonbehavior" -value 2 -propertyType DWORD

内网渗透之内网权限维持

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

使用Mimikatz进行哈希传递,在域成员机器的管理员模式下打开Mimikatz,分别输入以下命令:

privilege::Debug
sekurlsa::pth /domain:win2012 /user:administrator /ntlm:968f7362eca2705a4a9ff58e54680186

内网渗透之内网权限维持


内网渗透之内网权限维持


SSP权限维持

SSP---Security Support Provider,直译为安全支持提供者。简单点就理解为一个 DLL,用来实现身份认证,并且维持系统权限。

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

利用方式一:SSP注入域控内存

利用通常是用mimikatz把SSP注入到域控的内存中(但是域控不能重启,重启后SSP会丢失),注销当前用户重新登录,即可获取明文密码(获得的是重新登录域控时管理员输入的密码的明文),密码存储在日志文件C:Windowssystem32mimilsa.log中。

1、域控中使用管理员权限打开Mimikatz

privilege::debug
misc::memssp

内网渗透之内网权限维持


2、查看明文密码

执行后,若用户注销或者有其他用户登录到此系统,即可在windowssystem32下生成mimilsa.log文件,其中就包含了被记录的明文密码:

内网渗透之内网权限维持


利用方式二:mimilib.dll文件利用

将mimikatz中的mimilib.dll 放到目标域控的C:Windowssystem32目录下(DLL的位数需要与windows位数相同),并将mimilib.dll添加到注册表中(此方法不收到重启限制,重启后依然生效,但是会在目标主机上留下二进制文件)

系统重启后,若dll被成功加载,用户在登录时输入的账号和密码明文就会被记录在C:Windowssystem32kiwissp.log中

1、将mimilib.dll文件传到域控的windowssystem32

2、用powershell修改一下注册表Security Packages的值,追加下刚刚的mimilib.dll:

powershell
reg query hklmsystemcurrentcontrolsetcontrollsa /v "Security Packages"
reg add "hklmsystemcurrentcontrolsetcontrollsa" /v "Security Packages" /d "kerberosmsv1_0schannelwdigesttspkgpku2umimilib" /t REG_MULTI_SZ

内网渗透之内网权限维持


3、重启域控,DLL会被重新加载,用户在登录时输入的账户与密码明文会被存储在C:windowssystem32kiwissp.log中:

内网渗透之内网权限维持


SID History 域控权限维持

SID即安全标识符(Security Identifiers),是标识用户、组和计算机帐户的唯一的号码。在第一次创建该帐户时,将给网络上的每一个帐户发布一个唯一的 SID。

SID History是在域迁移过程中需要使用的一个属性,为了解决用户在迁移到另一个域中的时候权限会改变的问题。(在域迁移过程中保持域用户的访问权限,即如果迁移后用户的SID改变了,系统会将其原来的SID添加到迁移后用户的SID History属性中,使迁移后的用户保持原有权限、能够访问其原来可以访问的资源。)

原理:把域控管理员的SID加入到 其他某个恶意的域账户的SID History中,然后,这个恶意的(我们自己创建的)域账户就可以用域管理员权限访问域控了。

利用

1、通过mimikatz,将administrator的SID添加到hack用户的SID History属性中

privilege::debug

sid::patch           
#sid::patch 命令修复NTDS服务,否则无法将高权限的SID注入低权限用户的SID History属性

sid::add /sam:test /new:administrator     
#将administrator的SID添加到用户test的SID History属性中。mimikatz在2.1版本后,将 misc:addsid 模块添加到了 sid:add 模块下。

内网渗透之内网权限维持


2、使用PowerShell查看test用户的SID History

Import-Module activedirectory
Get-ADUser test -Properties sidhistory

内网渗透之内网权限维持


3、使用域用户test登录,测试其是否具有administrator用户的权限

内网渗透之内网权限维持


Hook PasswordChangeNotify

Hook PasswordChangeNotify 的作用是当用户修改密码后在系统中进行同步,攻击者可利用此功能获取用户修改密码时输入的密码明文。相比ssp权限维持,更具隐藏性。

原理:在修改域控密码时,用户输入新密码后,LSA会调用PasswordFileter来检查该密码是否符合复杂度要求,如果密码符合复杂度要去,LSA就会调用PasswordChangeNotify,在系统中同步密码。

利用:

根据clymb3r提供的poc,实现Hook PasswordChangeNotify共包含两部分:

1、Hook dll

下载链接:https://github.com/clymb3r/Misc-Windows-Hacking

使用VS2015开发环境,MFC设置为在静态库中使用MFC,生成HookPasswordChange.dll

内网渗透之内网权限维持


生成的dll文件在Misc-Windows-Hacking-masterHookPasswordChangex64Release路径中

2、生成dll注入的powershell脚本

下载Powershell的dll注入脚本 https://github.com/clymb3r/PowerShell/blob/master/Invoke-ReflectivePEInjection/Invoke-ReflectivePEInjection.ps1

powershell -exec bypass
Import-Module .Invoke-ReflectivePEInjection.ps1
Invoke-ReflectivePEInjection -PEPath HookPasswordChange.dll -procname lsass

内网渗透之内网权限维持


3、修改域控密码

内网渗透之内网权限维持


4、普通用户查看权限

dir \win2012SYSVOLsentiment.comPolicies
type \win2012SYSVOLsentiment.comPolicieswindows.log

内网渗透之内网权限维持


参考:

https://www.cnblogs.com/lcxblogs/p/14216525.html

https://xz.aliyun.com/t/15286?time__1311=GqjxnD0D2DuQQGNeWxUhh33GQKqxxAK3x#toc-6

https://xz.aliyun.com/t/12539?u_atoken=900837ecf9849f546695d430d70b122a&u_asig=1a0c399a17308728681043519e00df#toc-5


原文始发于微信公众号(红队蓝军):内网渗透之内网权限维持

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月6日19:20:42
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   内网渗透之内网权限维持https://cn-sec.com/archives/3365286.html

发表评论

匿名网友 填写信息