Reading Memory Of 64-bit Processes

当您读取64位进程的内存时,必须确保从64位进程读取它。一个32位进程不能使用记录的Windows API来读取一个64位进程的内存。

下面是一个使用Meterpreter的mimikatz模块使用Metasploit的例子:

使用32位meterpreter / mimikatz命令msv从64位Windows中提取散列时,出现错误:“0x0000012b ReadProcessMemory或WriteProcessMemory请求只有一部分已完成”。32位进程想要从64位进程读取或写入内存时发生此错误。

如果再次查看命令“load mimikatz”的结果,我们会看到一个警告:[!]在x64体系结构上加载了x86 Mimikatz。

我们需要在64位进程中运行Meterpreter以访问64位进程的内存(如LSA):

这里我们没有Windows API错误了,但是仍然没有散列。这是因为Meterpreter的mimikatz模块是旧版本(1.0),无法从最新版本的Windows中提取散列值。这里我们使用的是64位完全打补丁的Windows 7机器。

命令“mimikatz_command -f版本”确认模块mimikatz的版本:

当我们在64位未打补丁的Windows 7 SP1机器上使用这个版本时,我们得到了哈希值:

也许你认识到空字符串的LM和NTLM哈希(AAD3B435B51404EEAAD3B435B51404EE和31D6CFE0D16AE931B73C59D7E0C089C0)。


转载请注明出处:https://www.freearoot.com/index.php/reading-memory-of-64-bit-processes.html

转载来源:https://blog.didierstevens.com/2017/08/13/reading-memory-of-64-bit-processes/