内网渗透 day19-域基础
域基础
环境:
一台win server 2019作为DC,一台win7作为域用户
根域名为ZJW.com netBIOS域名为JW-ONE
本地账户和域用户是分开的,域用户是在域控中创建的,并且用于登入域环境;本地账户只能登入到本地。
域主机登入到本地:本地计算机名\用户名 | .\用户名
域主机登入到域:域名\域用户名
1. 域内信息收集
查询域的数量:
net view /domain
查看主机数量:
net view | net view /domain:域名
查看是否在域中:
ipconfig /all
解析域控ip:
nslookup 域名
ping 域名
查看域用户组:
net group /domain
高权限: domain admins:域管理员组 domain controllers:域控组(查看域控主机) enterprise admins:企业管理员组 domain computers:域计算机组 domain users:域用户组 |
查看域内时间:
net time /domain
查询域控的账户信息:
net user /domain
查看域控:
net group "domain controllers" /domain
查看域内主机:
net group "domain computers" /domain
查看域用户:
net group "domain users" /domain
查看用户的sid:
管理员sid:结尾是500,结尾1000+是普通用户,前面的那串是域id
whoami /user
2. windows本地认证:
账户密码存放于:c:\windows\system32\config\sam
(1) winlogon.exe -> 接收用户输入 -> lsass.exe -> (认证)
(2) 首先,用户注销、重启、锁屏后,操作系统会让winlogon.exe显示登录界面,也就是输入框,接收 输入后,将密码交给lsass进程,这个进程中会存一份明文密码,将明文密码加密成NTLM Hash, 对SAM数据库比较认证。
(3) Windows Logon Process(即 winlogon.exe):是Windows NT 用户登陆程序,用于管理用户登录 和退出。
(4) LSASS:用于微软Windows系统的安全机制。它用于本地安全和登陆策略
(5) Windows本身是不会存储明文密码的,在SAM文件中所储存的是密码的hash值,在登陆对比的时 候,也是先将用户的输入转换为hash值,才进行对比的
3. NTLM认证
NTLM(NT LAN MANAGER)是一种网络认证协议,它是基于挑战(Challenge)/响应(Response)认证机制的一种认证模式。
NTLM使用在Windows NT和Windows 2000 Server(or later)工作组环境中(Kerberos用在域模 式下)。在AD域环境中,如果需要认证Windows NT系统,也必须采用NTLM。
NTLM协议的认证过程分为三步:
(1) 协商:主要用于确认双方协议版本(NTLM v1/NTLM V2)
(2) 质询:就是挑战(Challenge)/响应(Response)认证机制起作用的范畴
1、客户端向服务器端发送用户信息(用户名)请求
2、服务器接受到请求,判断本地账户列表是否有用户名,如果有,生成一个16位的随机数,被称之为 “Challenge”, 使用登录用户名对应的NTLM Hash加密Challenge(16位随机字符), 生成Challenge1。 生成一个Net-NTLM Hash存在内存中,同时,生成Challenge1后,将Challenge(16位随机 字符)发送 给客户端。
3、客户端接受到Challenge后,使用将要登录到账户对应的NTLM Hash加密Challenge生成Response, 然后将Response发送至服务器端 验证: 服务器端收到客户端的Response后,比对Chanllenge1与Response是否相等,若相等,则认 证通过
注意:
1、Challenge是Server产生的一个16字节的随机数,每次认证随机数都不同
2、Response的表现形式是Net-NTLM Hash,它是由客户端 提供的密码Hash加密Server返回的 Challenge产生的结果。
原理:两个密码(客户端要发送的密码和服务端sam同用户名中对应的密码)对应的NTLM Hash去加密一个随机数,得出的结果要是相同,就可以证明两个密码相同。
(3) 验证:验证主要是在质询完成后,验证结果,是认证的最后一步
4. NTLM认证方式
交互式认证 :
使用域账号登录到客户端;涉及两部分(客户端、域控)
非交互式认证 :
在已经登陆 的客户端上使用 SSO的方式访问一台服务器;涉及三部分(客户端、域控、服务器)
5. Hash类型
LM HASH
LM Hash是一种较古老的Hash,在LAN Manager协议中使用,非常容易通过暴力破解获取明文凭据。 Vista以前的Windows OS使用它,Vista之后的版本默认禁用了LM协议,但某些情况下还是可以使用。
NTLM HASH
Vista以上现代操作系统使用的Hash。通常意义上的NTLM Hash指存储在SAM数据库及NTDS数据库 中对密码进行摘要计算后的结果,这类Hash可以直接用于PtH,并且通常存在于lsass进程中。
NET-NTLM HASH
Net-NTLM Hash用于网络身份认证(例如ntlm认证中),目前分为两个版本:
Net-NTLMv1 、Net-NTLMv2
!!!:两个版本认证方式相同,但加密方式不同(net-ntlmv1 challenge8位、net-ntlm challenge16位)
6. NTLM Hash产生方式
NTLM HASH产生: 假设我的密码是admin,那么操作系统会将admin转换为十六进制,经过Unicode转换后,再调用MD4 加密算法加密,这个加密结果的十六进制就是NTLM Hash。
admin(密码) -> hex(16进制编码) = 61646d696e
61646d696e -> Unicode(Unicode编码) = 610064006d0069006e00
610064006d0069006e00 -> MD4(MD4算法加密) = 209c6174da490caeb422f3fa5a7ae634(NTLM Hash)
7. NTLM Hash 密码格式
Windows系统下的hash密码格式:
用户名称:SID:LM-HASH值:NT-HASH值
Administrator:500:C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569C23AA724774CE6CC:::
用户名称为:Administrator
SID为:500 § LM-HASH值为:C8825DB10F2590EAAAD3B435B51404EE
NTLM-HASH值为:683020925C5D8569C23AA724774CE6CC LM Hash是 AAD3B435B51404EEAAD3B435B51404EE 这表示空密码或者是未使用
LM_HASH Hash一般存储在两个地方: 1、SAM文件,存储在本机 对应本地用户 2、NTDS.DIT文件,存储在域控上 对应域用 户
8. 域中NTLM Hash 认证
在域中,NTLM认证多了一个角色 <服务器>
1、首先在client输入username,password和domain,然后client会把password hash后的值先缓存到 本地之后,client把username的明文发送给server(DC)
2、DC会生成一个16字节的随机数,即challenge(挑战码),再传回给client
3、当client收到challenge以后,会先复制一份出来,然后和缓存中的密码hash再一同混合hash一次,混合 后的值称为response,之后client再将challenge,response及username一并都传给server
4、server端在收到client传过来的这三个值以后会把它们都转发给DC
5、当DC接到过来的这三个值的以后,会根据username到域控的账号数据库(ntds.dit)里面找到该 username对应的hash,然后把这个hash拿出来和传过来的challenge值再混合hash
6、将(6)中混合后的hash值跟传来的response进行比较,相同则认证成功,反之,则失败,当然,如果是本地 登录,所有验证肯定也全部都直接在本地进行了
原理:两个密码(客户端要发送的密码和server上ntds.dit中同用户名中对应的密码)对应的NTLM Hash去加密一个随机数,得出的结果要是相同,就可以证明两个密码相同。