前言
由于最近攻防项目的强度提升,发现之前的一些dumplsass手段在最近遇到的edr和杀软上直接被秒,而窃取凭据又是内网渗透最重要的一点,自己也就去学习了一些bypass的手段,然后就有了这款参考seventeenman师傅的项目修改的静动态免杀的dumplsass工具:LuckyDump
的诞生
首先给师傅们上链接:
https://github.com/ekkoo-z/LuckyDump
动静态可过国内外主流的杀软,对于国外的猎鹰,卡巴这种检测lsass很死的edr,建议直接驱动级致盲,不需要考虑这种方式dump,卡巴之前可以使用ssp自加载来绕过,现在最新版也是被拦截了。
使用方法:
在目标主机管理员权限执行dump go:
本机使用py脚本解密文件:
本地mimikatz提取密码
mimikatz "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit
LuckyDump特点:
避免敏感权限打开句柄
调用OpenProcess以PROCESS_CREATE_PROCESS
的权限打开进程句柄,避免了PROCESS_ALL_ACCESS和PROCESS_DUP_HANDLE等敏感权限。
当调用 NtCreateProcessEx 时,如果将 SectionHandle 参数设置为 NULL(这样内存区域对象就会直接继承自父进程),并且在 ParentProcess 参数中传入目标进程的 PROCESS_CREATE_PROCESS 句柄,就能够获得远程 LSASS 进程
的句柄
隐藏导入表增强静态免杀性
通过计算api的hash,动态获取API 并调用
通过哈希查找 API 地址,避免直接使用字符串(规避静态分析)。直接解析 PE 结构来获取 API 地址,避免使用 GetProcAddress
加密转储
这里此项目是和seventeenman师傅一样的代码,利用MiniDumpWriteDump的回调API
尽管经过处理,但这种回调api还是MiniDumpWriteDump
函数进行的转储,动态情况下,经过测试在sophos edr上一样会被检测到该函数调用 然后告警kill掉,转储失败
最终受某佬的工具启发下,通过间接系统调用也就是随机获取ntdll中Syscall指令的地址,并且跳转到这个地址执行syscall指令,然后使用nt层函数重写一个MiniDumpWriteDump
,即可成功转储,也有效的规避了杀软对syscall的检测。
修改后可成功绕过sophos edr dumplsass,由于考虑到自己后续使用免杀性的原因,本项目只是采用了回调(已经能过大部分杀软了),有遇到需求的可以参考以下两个项目自行添加代码:
https://github.com/crummie5/FreshyCallshttps://github.com/YOLOP0wn/POSTDump
延迟执行 降低阙值
使用冷门延迟 + 动态调用api规避杀软
静态免杀性:去除掉延迟函数可以达到vt0杀
,但是动态行为会被一些edr拦截,静态这几个也无关痛痒(猎鹰静态过了动态也dump不了),并且相比原工具已经识别不到是dumplsass的程序了
参考项目:https://github.com/seventeenman/CallBackDumphttps://tttang.com/archive/1810/#toc_callbackhttps://github.com/D4stiny/ForkPlayground
原文始发于微信公众号(艾克sec):杀软环境下的dumplsass工具-LuckyDump分享
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论