域环境
工作组与域环境密码文件存放路径
工作组
sam 存放工作组用户密码的数据库文件
c:\windows\system32\config\sam
administrator工作组管理员用户 ICQsafe666
计算机名:WEB
加环境后默认使用工作组用户登陆 WEB\administrator
加环境后默认使用域用户登陆 icq.com\icq
域环境
ntds.dit 存放域用户密码的数据库文件
c:\windows\ntds\ntds.dit
administrator域管理员用户 ICQsafe666
域普通用户 icq 1qaz@WSX
域环境信息查询
net view /Domain #查看域
net view #查看域网络主机
net user /domain #查看域用户
Domain Admins #域管理员用户的组
net group /domain "domain admins" #查看域管用户
Domain Computers #加入域的计算机名
net group /domain "domain computers" #查看加入域的主机
Domain Controllers
net group /domain "domain controllers" #查看域控的计算机名
Domain Users
net group /domain "domain users" #查看域控用户名
net config workstation #查询当前计算机属于那个域
net time /domain #查看主域服务器的时间
net user test ICQsafe666 /add /domain #添加普通域用户test
net user test ICQsafe666 /del /domain
net group "Domain Admins" test /add /domain #将普通域用户提升为域管理员
net group "Domain Admins" test /del /domain
定位域控主机
net time /domain #查看域控的网络时间
Ping -4 b.icq.com #解析域控ip地址
net user /domain #查看域控的用户
nslookup -type=SRV|A #发起dns查询请求
ipconfig /all #查看DNS服务器ip
net group "Domain Controllers" /domain #查询域控组域的计算机名
Systeminfo #看域名,dns服务器
域环境认证协议
- NTLM:只有kerberos认证协议出问题和使用IP地址请求服务的时候使用
- Kerberos:默认使用kerberos认证
NTLM认证协议工作流程
工作组环境
- 客户端接收输入的用户名,密码 ntlm算法加密NTLM-hash,丢弃明文密码 hash传递的关键步骤是:客户端接收到明文密码和用户名后,会对明文密码进行加密得到ntlm hash值。
- 客户端把用户名发给服务端
- 服务端返回16字节长度的challenge挑战码
- 客户端接收服务端返回的challenge挑战码,利用本地ntlm-hash加密challenge挑战码得到response,将用户名,challenge挑战码,response一起发送给服务端
- 服务端接收客户端发送来的用户名,从sam文件查询用户名对应的hash值,利用该hash对challenge挑战码进行加密得到结果,利用结果比对客户端发送来的response,比对成功即认证成功。
域环境
- 客户端接收输入的用户名,密码 ntlm算法加密NTLM-hash,丢弃明文密码
- 客户端把用户名发给服务端
- 服务端返回16字节长度的challenge挑战码
- 客户端接收服务端返回的challenge挑战码,利用本地ntlm-hash加密challenge挑战码得到response,将用户名,challenge挑战码,response一起发送给服务端
- 服务端将客户端发送来的用户名,challenge挑战码,response转发给域控
- 域控接受到服务端接发送来的用户名,从ntds.dit文件查询用户名对应的hash值,利用该hash对challenge挑战码进行加密得到结果,利用结果比对客户端发送来的response,比对成功即认证成功。
kerberos认证协议工作流程
AS_REQ(Client-->AS 认证服务中心) 客户端利用密码加密后的hash加密时间戳,client-id,IP,加密算法类型,用户名等等发给AS 认证服务中心
AS_RES(AS-->Client)
认证服务中心接受到客户端发送的数据后,利用客户端发送的hash解密数据,利用解密出的用户名查询ntds.dit文件内的hash值并比对,比对成功后利用域控krbtht ntlm-hash加密出一张TGT(票据授予票据),并利用客户端发送过来的用户名对应的sid,gid,client-id,IP生成PAC
针对于该步骤攻击手法: 抓取krbthg ntlm-hash 黄金票据 伪造任意用户
TGS_REQ(Client-->TGS) 客户端利用AS颁发的TGT(票据授予票据),发送给TGS(票据授予服务中心)
TGS_RES(TGS-->Client) TGS接受到客户端发送来的TGT票据,利用krbtgt ntlm-hash解密TGT票据,解密成功就返回用指定服务账户的ntlm-hash加密一张ST(Service Ticket)服务票据,并带上之前解密TGT票据出来PAC
针对于该步骤的攻击手法: 抓取服务账户 ntlm-hash 白银票据 伪造指定服务指定服务的票据 去访问服务器的服务
AP_REQ(Client-->Server 服务端)
客户端拿ST服务票据请求服务端
AP_RES
服务端利用本地服务账户ntlm-hash解密ST 服务票据,如果解密正确,得到PAC特权属性证书包含,sid,gid,client-id,ip
服务端将PAC特权属性证书,发送给域控,域控对PAC特权属性证书,解密获取sid,gid,client-ip,ip等等,根据以上信息查询服务的访问控制列表,是否禁止该用户或主机访问,如未禁止即下发服务器开放服务指令,服务器开放服务提供客户端访问。
名词概念
KDC = Key Disttribute Center (密钥分发中心) AS = Authentication Server 认证服务中心 TGS = Ticket Granting Server 票据授予服务中心 TGT = Ticket Granting Ticket 票据授予票据 (由AS颁发TGT 票据授予票据) ST = Service Ticket 服务票据 (由TGS颁发ST服务票据) PAC = Privilege Attribute Certificate (特权属性证书)区分不同用户的权限