官方公众号企业安全新浪微博
FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。
FreeBuf+小程序
Lsass转存储与SAM拷贝技巧
古语云:"势者,因利而制权也",为了我们可以在攻防演练中拔得头筹,升职加薪,走上人生巅峰。内网信息收集就是绕不过的坎,其中尤以账号密码/哈希为最。得此讯息者,进则内网犹入无人之境,于域内七进七出;退则留为后手,救人于危难之间,一招定乾坤。所以,今天我打算收集素材作药,以靶场之火煅烧,求得灵丹妙药。以备攻防演练之不时之需。其中难免存在不足,望师傅斧正,已补不足。
为什么需要转存储?为了降低mimikatz上传后被杀软发现的风险!
为啥需要转存储Lsass和SAM这两个?因为他们两都和账号密码,哈希值这些敏感信息密切相关!
Lsass转存储技巧
技巧一:任务管理器直接转存储
我们可以直接通过任务管理器直接对Lsass.exe的进程进行转存储操作,但是转存储的dump文件,会保存在一个固定的路径下面(保存路径地址:C:\Users\用户名\AppData\Local\Temp
),由于使用要求过高这种方法并不常用。
技巧二:PuDump转存储
白文件是我们最常用的办法,但是它这个文件并不白,就算有了微软的签名认证,国内某个无良厂商,也会在运行的时候给予提示,导致我们的攻击失败,并且被防守方发觉。(下载链接:地址)
与之相对应的还有SQLDumper.exe;createdump.exe这两款工具,只要一旦运行起来了,某不良厂商,就会进行弹窗警告,导致有暴露的风险,所以,这两款工具都不推荐大家使用,或者阅读源码,了解攻击方法,进行二次创作。不过,虽然被查杀的很紧,但是由于这类工具操作方便,而且在复杂环境下的泛用性极强,所以下面这种方法就是吸收了,技巧二的精髓的延伸。
小提示:需要管理员权限!!!
技巧三:利用中断机制转存储
由于上述方法都不太方便进行利用攻击,所以我们想到了利用Lsass.exe进程的退出/终止的阶段,对文本的内容进行一个转存储的一个dump操作,进而获取到我们想要的lsass.dmp文件。但是问题是Lsass.exe的进程属于操作系统层面的问题,所以我们就有两总解决的方法(方案二是我看见玉玉师傅的视频后才学习到的(代码:下载链接),个人觉得更适用于攻防演练):
方案一:利用"蓝屏"的攻击手段,导致Lsass.exe程序中断,然后对程序进行拷贝复制(dump操作)(但是,我们无法保证蓝屏后防守方不会发觉,并且进行应急响应,导致攻击失败)
方案二:调用API函数,做到不kill进程,进行转存储操作(也有风险),但是可能需要修改目标主机注册表的键值,导致EDR平台的报警
小提示:需要管理员提示,并且可以过火绒,但是转存储的地址是固定的(保存路径地址:)。
技巧四:利用PowerSploit加载转存储
有.exe的方法,那肯定就有利用powershell加载的手段了。我们请出老朋友PowerSploit(GitHub项目的开源地址:下载链接)。我们利用PowerSploit 的Out-MiniDump模块,可以选择创建进程的完整内存转储。步骤入下所示:
// 导入
Import-Module Out-MiniDump
//执行
Get-Process lsass | Out-Minidump
小提示:都是使用API的方法MiniDumpWriteDump;通过comsvcs.dll的导出函数MiniDump实现dump内存,与下面的方法不谋而和!
技巧五:系统自带comsvcs.dll转存储
构造技巧:在dump指定进程内存文件时,需要开启SeDebugPrivilege权限。管理员权限的cmd下,默认支持SeDebugPrivilege权限,但是状态为Disabled禁用状态。
解决方案:因为管理员权限的powershell下,默认支持SeDebugPrivilege权限,并且状态为Enabled;所以可以通过powershell执行rundll32的命令实现。
首先查看lsass.exe进程PID:命令格式:
rundll32.exe comsvcs.dll MiniDump <lsass PID> <out path> full
直接利用发现会被拦截:
rundll32.exe C:\windows\System32\comsvcs.dll, MiniDump 564 lsass.dmp full
绕过技巧:
copy C:\windows\System32\comsvcs.dll 110