◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
在内网渗透中,很多横向移动的方法都需要攻击者先获取域用户的密码或者Hash值才能进行,比如哈希传递攻击、各种票据传递,还有黄金票据维持权限等等。在这篇文章中,我们先来讲解一下横向移动中获取域内单机密码的方法,下篇文章再来讲那几种攻击手段。由于近期一直在准备“蓝帽杯”得比赛,所以一直没有时间更新,文章可能略显仓促,不足之处还请多多指教。
本文专为想我一样正在入门的小白准备,大佬请路过!
在Windows2000以后,Windows机器都用NTLM算法在本地保存用户的密码,密码的NTLM哈希保存在%SystemRoot%\System32\config\SAM文件中。 Windows操作系统通常使用两种方法对用户的密码进行哈希处理,即 LAN Manager(LM)哈希和 NT LAN Manager(NTLM)哈希。所谓哈希(Hash),即使用一种加密方法对明文密码进行加密,对一个任意长度的字符串数据进行一次加密运算,都可以返回一个固定长度的字符串。Windows加密过的密码口令,我们称之为Hash。
Windows操作系统中的密码一般由两部分组成:一部分为LM Hash,另一部分为NTLM Hash。在Windows中,Hash的结构通常如下:
Username:RID:LM-Hash:NT-Hash
在windows2000以后的系统中,第一部分的 LM-hash 都是空值,因为LM-hash可以很容易的破解,所以windows2000之后这个值默认为空,所以第二部分的NTLM-hash才真正是用户密码的哈希值。
在渗透测试中,通常可从Windows系统中的SAM文件和域控的NTDS.dit文件(在域环境中,用户信息存储在NTDS.dit中)中获得所有用户的Hash。也可以通过Mimikatz读取lsass.exe进程获得已登录用户的NTLM hash和明文值 。
详情请见:https://blog.csdn.net/qq_36119192/article/details/85941222
获取到Hash后,我们可以用破解工具来破解得到明文密码,也可以进行哈希传递攻击(PTH)来横向渗透。
下载地址:https://www.openwall.com/passwords/windows-pwdump
Pwdump7可以在CMD下提取出系统中的用户的密码hash (包括LM和NTLM),需要系统权限,“骨灰”级黑客玩家可能听说过这个玩具。通过Pwdump7提取出的HASH,可以用ophcrack等工具破出明文密码,对进一步渗透是有很大帮助的。
工具使用很简单,只需在命令行环境中运行Pwdump7程序,即可得到当前系统中各个用户的密码Hash (包括LM和NTLM):
下载地址:https://github.com/gentilkiwi/mimikatz
Mimikatz是由法国人Benjamin开发的一款功能强大的轻量级调试工具,因功能强大,能够直接读取Windows操作系统的明文密码,因而闻名于渗透测试领域。通过它你可以提升进程权限注入进程读取进程内存,当然他最大的亮点就是他可以直接从 lsass.exe?进程中获取当前登录系统用户名的密码, lsass是微软Windows系统的安全机制它主要用于本地安全和登陆策略,通常我们在登陆系统时输入密码之后,密码便会储存在lsass内存中,经过其 wdigest 和 tspkg 两个模块调用后,对其使用可逆的算法进行加密并存储在内存之中, 而 mimikatz 正是通过对lsass逆算获取到明文密码!也就是说只要你不重启电脑,就可以通过他获取到登陆密码,只限当前登陆系统!
注:但是在安装了KB2871997补丁或者系统版本大于win10或windows server 2012时,默认在内存缓存中禁止保存明文密码,这样利用mimikatz就不能从内存中读出明文密码了,但可以通过修改注册表的方式抓取明文。
Mimikatz读取明文密码和hash也时最常用的方法。需要管理员权限。
privilege::debug // 提升至debug权限 sekurlsa::logonpasswords // 抓取密码
Procdump是微软官方发布的工具,所以杀软不会拦截,其可以用来将目标lsass文件导出。下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump
先用在目标机器上传微软的工具Procdump,导出其lsass.exe:
procdump64.exe -accepteula -ma lsass.exe lsass.dmp
将在目标机器上导出的lsass.dmp下载到本地后,执行mimikatz导出lsass.dmp里面的密码和hash:
sekurlsa::minidump 目录\lsass.dmp // 将导出的lsass.dmp载入到mimikatz中 sekurlsa::logonpasswords full // 获取密码
先利用注册表命令将目标机的sam或system文件导出,需要管理员权限:
reg save hklm\sam sam.hive reg save hklm\system system.hive
然后,将目标机上的sam.hive和system.hive下载到本地,利用mimikatz读取sam和system文件获取NTLM Hash:
lsadump::sam /sam:sam.hive /system:system.hive
也可以直接使用mimikatz读取本地SAM文件,获得密码Hash:
privilege::debug token
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。