系列文章第一章节之基础知识篇
内网渗透(一)之基础知识-内网渗透介绍和概述
内网渗透(二)之基础知识-工作组介绍
内网渗透(三)之基础知识-域环境的介绍和优点
内网渗透(四)之基础知识-搭建域环境
内网渗透(五)之基础知识-Active Directory活动目录介绍和使用
内网渗透(六)之基础知识-域中的权限划分和基本思想
内网渗透(七)之基础知识-企业常见安全域划分和结构
内网渗透(八)之基础知识-企业域中计算机分类和专业名
系列文章第二章节之内网信息收集篇
内网渗透(九)之内网信息收集-手动本地信息收集
内网渗透(十)之内网信息收集-编写自动化脚本收集本地信息
内网渗透(十一)之内网信息收集-内网IP扫描和发现
内网渗透(十二)之内网信息收集-内网端口扫描和发现
内网渗透(十三)之内网信息收集-收集域环境中的基本信息
内网渗透(十四)之内网信息收集-域环境中查找域内用户基本信息
内网渗透(十五)之内网信息收集-域环境中定位域管理员
内网渗透(十六)之内网信息收集-powershell基础知识
内网渗透(十七)之内网信息收集-powershell收集域内信息和敏感数据定位
系列文章第三章节之Windows协议认证和密码抓取篇
内网渗透(十八)之Windows协议认证和密码抓取-本地认证(NTML哈希和LM哈希)
内网渗透(十九)之Windows协议认证和密码抓取-网络认证(基于挑战响应认证的NTLM协议)
内网渗透(二十)之Windows协议认证和密码抓取-域认证(Kerberos协议)
内网渗透(二十一)之Windows协议认证和密码抓取-Golden Ticket黄金票据制作原理及利用方式
内网渗透(二十二)之Windows协议认证和密码抓取-Silver Ticket白银票据制作原理及利用方式
内网渗透(二十三)之Windows协议认证和密码抓取-Mimikatz介绍和各种模块使用方法
内网渗透(二十四)之Windows协议认证和密码抓取-Mimikatz读取sam和lsass获取密码
内网渗透(二十五)之Windows协议认证和密码抓取-使用Hashcat和在线工具破解NTLM Hash
内网渗透(二十六)之Windows协议认证和密码抓取-浏览器、数据库等其他密码的抓取
内网渗透(二十七)之Windows协议认证和密码抓取-Windows其他类型抓取NTLM HASH工具
内网渗透(二十八)之Windows协议认证和密码抓取-Windows RDP凭证的抓取和密码破解
内网渗透(二十九)之Windows协议认证和密码抓取-Windows-2012R2之后抓取密码的方式和抓取密码的防范措施
系列文章第四章节之横向移动篇
内网渗透(三十)之横向移动篇-利用远控工具向日葵横向移动
内网渗透(三十一)之横向移动篇-利用远控工具todesk横向移动
内网渗透(三十二)之横向移动篇-利用远控工具GoToHTTP横向移动
内网渗透(三十三)之横向移动篇-利用远控工具RustDESK横向移动
内网渗透(三十四)之横向移动篇-IPC配合计划任务横向移动
内网渗透(三十五)之横向移动篇-IPC配合系统服务横向移动
内网渗透(三十六)之横向移动篇-Password Spraying密码喷洒攻击和域内用户枚举横向移动
注:阅读本编文章前,请先阅读系列文章,以免造成看不懂的情况!
Pass the Hash 哈希传递攻击(PTH)横向移动
哈希传递
大多数渗透测试人员都听说过哈希传递(Pass The Hash)攻击。该方法通过找到与账户相关的密码散列值(通常是 NTLM Hash)来进行攻击。在域环境中,用户登录计算机时使用的大都是域账号,大量计算机在安装时会使用相同的本 地管理员账号和密码,因此,如果计算机的本地管理员账号和密码也是相同的,攻击者就能使用哈希传递攻击的方法登 录内网中的其他计算机。同时,通过哈希传递攻击,攻击者不需要花时间破解密码散列值(进而获得密码明文)。 在Windows网络中,散列值就是用来证明身份的(有正确的用户名和密码散列值,就能通过验证),而微软自己的产品和 工具显然不会支持这种攻击,于是,攻击者往往会使用第三方工具来 完成任务。在 Windows Server2012 R2及之后版本的操作系统中,默认在内存中不会记录明文密码,因此,攻击者往往会使用工具将散列值传递到其他计算机中,进行权限验证,实现对远程计算机的控制。
哈希传递攻击原理
当用户需要登录某网站时,如果该网站使用明文的方式保存用户的密码,那么,一旦该网站出现安全漏洞,所有用户的明文密码均会被泄露。由此,产生了散列值的概念。当用户设置密码时,网站服务器会对用户输入的密码进行散列加密处理(通常使用MD5算法)散列加密算法般为单向不可逆算法。当用户登录网站时,会先对用户输入的密码进行散列加 密处理,再与数据库中存储的散列值进行对比,如果完全相同则表示验证成功。 主流的Windows操作系统,通常会使用 NTLM Hash对访问资源的用户进行身份验证。早期版本的 Windows操作系 统,则使用 LMHash对用户密码进行验证。但是,当密码大于等于14位 时,就无法使用 LM Hash了。从 Windows vista和 Windowsserver2008版本开始, Windows操作 系统默认禁用 LM Hash,因为在使用 NTLM Hash进行身份认 证时,不会使用明文口令,而是将明文口令通过系统API(例如 Lsalogon User)转换成散列值。不过,攻击者在获得密 码散列值之 后,依旧可以使用哈希传递攻击来模拟用户进行认证。
哈希传递条件
哈希传递攻击的前提:
-
有管理员用户的 NTLM Hash ,并且目标机器开放445端口
-
Windows Vista之前的机器,可以使用本地管理员组内用户进行攻击
-
Windows Vista之后的机器,只能是administrator(SID为500)用户的哈希值才能进行哈希传递攻击,其
他用户(包括管理员用户但是非administrator)也不能使用哈希传递攻击,会提示拒绝访问 -
在工作组环境中: Windows Vista 之前的机器,可以使用本地管理员组内用户进行攻击。 Windows Vista之后的机器,只能是administrator用户的哈希值才能进行哈希传递攻击,其他用户(包括管理员用户但是非administrator)也不能使用哈希传递攻击,会提示拒绝访问
-
在域环境中:只能是域管理员组内用户(可以是域管理员组内非administrator用户)的哈希值才能进行哈希传递攻击,攻击成功后,可以访问域内任何一台机器
哈希传递实验
实验环境如下
机器名 | IP | 登录账户 |
---|---|---|
Windows server 2012 | 192.168.41.10 | 机器是administrator用户进行登录 (域管理员) |
windows server 2008 | 192.168.41.20 | 机器是administrator用户进行登录 (本地管理员) |
目前使用windows server 2012 dir是不能访问Windows server 2008机器的
假设我们已经通过cs远控了windows server 2012机器,接下来我们要利用哈希传递攻击(PTH)进行横向移动拿下Windows server 2008机器
首先我们在Windows 2012机器上通过mimikatz抓取密码
privilege::debug
sekurlsa::logonpasswords
我们抓到了2008机器管理员账户的NTLM hash
现在我们已经得到了NTLM hash:259745cb123a52aa2e693aaacca2db52
接下来我们利用哈希传递攻击上线
sekurlsa::pth /user:Administrator /domain:PC-2008 /ntlm:259745cb123a52aa2e693aaacca2db52
Windows 2008机器成功上线