我年纪还轻,阅历不深的时候,我父亲教导过我一句话,我至今还念念不忘。“每逢你想要批评任何人的时候,”他对我说,“你就记住,这个世界上所有的人,并不是个个都有过你拥有的那些优越条件。
―菲茨杰拉德《了不起的盖茨比》
聊一聊绕过ESET_NOD32抓取密码。
聊一聊绕过ESET_NOD32抓取密码的方法,这里的ESET_NOD32指的是ESET_NOD32 File Security For Microsoft windows server,测试版本如下:
为试用版本,并不影响我们的测试效果。目前很多的dump手法使用的是利用MiniDumpWriteDump这个API进行进程的内存dump,demo如下:
1 |
|
编译好版本可以去我的Github下载:https://github.com/lengjibo/RedTeamTools/tree/master/windows/hashdump
我们来看看ESET_NOD32对它的反应:
无情的删除,因为这类API已经被拦截的很严重了。这里我们使用另外的一种方法来进行操作。首先我们来看一个白名单文件, comsvcs.dll,使用它dump的方法如下:
1 | 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研究内核)里找到它的源代码。其定义如下:
1 | NTSTATUS RtlAdjustPrivilege( |
剩下的将刚才所说的函数进行实现,demo如下:
1 | typedef HRESULT(WINAPI* _MiniDumpW)( |
最后成功的绕过了绕过ESET_NOD32 dump了进程hash。