metasploit之msfvenom

先来看看msfvenom的帮助菜单
metasploit之msfvenom
我们先来看一个示例
使用Msfvenom生成一个windows下的绑定shell的shellcode,使用shikata_ga_nai编码器,迭代编码了三次,过滤了null字符,使用python格式

metasploit之msfvenom
我们可以使用-platform指定很多平台,上面的例子指定的是windows下的,我们同样也可以指定cisco,os x,solaris,bsd等
使用—help-platforms查看支持的平台

metasploit之msfvenom

接下来我们看看msfvenom的一些选项及其用法:
-v参数用于将默认的buf变量替换为我们给的值
比如我们将buf改为notBuf
metasploit之msfvenom
-f参数指定payload的形式,我们之前一直是-f python,表示以python形式输出
来查看下都有哪些格式

metasploit之msfvenom
我们当然也可以指定java,c之类的
metasploit之msfvenom
上图生成的是Java形式的

-n选项用于在payload前面添加一定数目的nop
metasploit之msfvenom
上图添加了26个nop,也就是buf内容的前两行

-smallest用于根据所选的编码器和payload创建最小的shellcode
metasploit之msfvenom
与下图没有加smallest相比确实减少了

metasploit之msfvenom
-c参数用于在一个shellcode里面再包含一个shellcode
首先我们制作一个shellcode用于弹出消息框输出hello world
metasploit之msfvenom
接下来在另一个shellcode里面使用-c参数来包含上面的shellcode,生成一个exe文件
metasploit之msfvenom
在windows中执行可以看到如下:

metasploit之msfvenom

接下来我们就来实践利用下生成的shellcode
metasploit之msfvenom
先给出一段可以hello world弹窗的代码。我们在vc++6.0里面编译、连接、运行之后就可以看到效果了。我们注意到代码里没有hello world,那么也就是说hello world是被硬编码在了shellcode里面。
我们的想法来了,可以使用msfvenom生成shellcode然后我们把shellcode代码复制过来替换上图中的代码,不就可以实现shellcode的利用了吗。
metasploit之msfvenom

我们来试试。首先还是在kali中用msfvenom生成shellcode.注意-I 4表示迭代编码4次用于躲避系统安全软件的检测,-f c表示生成的是C语言格式的shellcode
metasploit之msfvenom
接下来把buf的内容复制到前面C源码中的shellcode处
metasploit之msfvenom
同样,编译,连接,在执行之前,我们现在metasploit中设置监听
metasploit之msfvenommetasploit之msfvenom
metasploit之msfvenom
metasploit之msfvenom
接下来执行,可以看到下图左边的已经监听到了

拿到了meterpreter。