加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 系统 > 正文

端口复用后门

发布时间:2021-02-25 08:29:08 所属栏目:系统 来源:网络整理
导读:副标题#e# 目录 端口复用后门 一. 端口复用 1.1 端口复用场景条件 1.2 类型 1.3 原理 二. HTTP.sys端口复用后门 2.1 简介 2.2 后门配置 2.3 后门连接和使用 2.4 UAC问题 2.5 Hash登录 2.6 防御: 2.7 检测 三. Refer 端口复用后门 一. 端口复用 1.1 端口复
副标题[/!--empirenews.page--]

目录

  • 端口复用后门
    • 一. 端口复用
      • 1.1 端口复用场景条件
      • 1.2 类型
      • 1.3 原理
    • 二. HTTP.sys端口复用后门
      • 2.1 简介
      • 2.2 后门配置
      • 2.3 后门连接和使用
      • 2.4 UAC问题
      • 2.5 Hash登录
      • 2.6 防御:
      • 2.7 检测
    • 三. Refer

端口复用后门

一. 端口复用

1.1 端口复用场景条件

  1. server只对外开放指定端口,无法向外进行端口转发
  2. 躲避防火墙
  3. 内网渗透(当机器在内网,IP端口在外不可直接连接,只是通过出口防火墙向外映射指定端口。可通过端口复用直连内网)

1.2 类型

1.2.1 端口重定向

即本地建立2个套接字sock1、sock2,sock1监听80端口,sock2监听其它端口。当有80的连接时,sock1将接收到的数据进行判断,如果是http数据则处理,如果是其它数据则将其转发到sock2的端口。

端口复用后门

1.2.2 端口复用

在本地建立一个监听和本地开放一样的端口如80端口,当有连接来到时,判断是否是自己的数据包,如果是则处理数据,否则不处理,交给源程序。

端口复用后门

1.3 原理

端口重定向只是利用了本地环回地址127.0.0.1转发接收外来数据,端口复用只是利用了socket的相关特性。

示例代码:

s = socket(AF_INET,SOCK_STREAM,0);
setsockopt(s,SOL_SOCKET,SO_REUSEADDR,&buf,1));
server.sin_family=AF_INET;
server.sin_port=htons(80);
server.sin_addr.s_addr=htonl(“127.0.0.1”);

在端口复用技术中最重要的一个函数是setsockopt(),这个函数就决定了端口的重绑定问题。

setsockopt()函数,用于任意类型、任意状态套接口的设置选项值。尽管在不同协议层上存在选项,但本函数仅定义了最高的“套接口”层次上的选项。

在缺省条件下,一个套接口不能与一个已在使用中的本地地址捆绑(bind()))。但有时会需要“重用”地址。因为每一个连接都由本地地址和远端地址的组合唯一确定,所以只要远端地址不同,两个套接口与一个地址捆绑并无大碍。为了通知套接口实现不要因为一个地址已被一个套接口使用就不让它与另一个套接口捆绑,应用程序可在bind()调用前先设置SO_REUSEADDR选项。请注意仅在bind()调用时该选项才被解释;故此无需(但也无害)将一个不会共用地址的套接口设置该选项,或者在bind()对这个或其他套接口无影响情况下设置或清除这一选项。

我们这里要使用的是socket中的SO_REUSEADDR,下面是它的解释。

SO_REUSEADDR 提供如下四个功能:

SO_REUSEADDR:允许启动一个监听服务器并捆绑其众所周知端口,即使以前建立的将此端口用做他们的本地端口的连接仍存在。这通常是重启监听服务器时出现,若不设置此选项,则bind时将出错。
SO_REUSEADDR:允许在同一端口上启动同一服务器的多个实例,只要每个实例捆绑一个不同的本地IP地址即可。对于TCP,我们根本不可能启动捆绑相同IP地址和相同端口号的多个服务器。
SO_REUSEADDR:允许单个进程捆绑同一端口到多个套接口上,只要每个捆绑指定不同的本地IP地址即可。这一般不用于TCP服务器。
SO_REUSEADDR:允许完全重复的捆绑:当一个IP地址和端口绑定到某个套接口上时,还允许此IP地址和端口捆绑到另一个套接口上。一般来说,这个特性仅在支持多播的系统上才有,而且只对UDP套接口而言(TCP不支持多播)。

一般地,我们需要设置socket为非阻塞模式,缘由如果我们是阻塞模式,有可能会导致原有占用端口服务无法使用或自身程序无法使用,由此可见,端口复用使用非阻塞模式是比较保险的。

然而理论事实是需要检验的,当有些端口设置非阻塞时,缘由它的数据传输连续性,可能会导致数据接收异常或者无法接收到数据情况,非阻塞对于短暂型连接影响不大,但对持久性连接可能会有影响,比如3389端口的转发复用,所以使用非阻塞需要视端口情况而定。

此方法目前对Apache和IIS5.0及以下版本有效

1.3.1 利用

端口重定向

目的: 原先存在80端口,希望22,23,3389复用80端口。

原理:

(1) 外部IP连接本地IP: 192.168.1.2 => 192.168.2.1:80 => 127.0.0.1:3389

(2) 本地IP转向外部IP: 127.0.0.1:3389 => 192.168.2.1:80 => 192.168.1.2

首先外部IP(192.168.2.1)连接本地IP(192.168.1.1)的80端口,由于本地IP(192.168.1.1)端口复用绑定了80端口,所以复用绑定端口监听到了外部IP(192.168.2.1)地址流量,判断是否为HTTP流量,如果是则发送回本地80端口,否则本地IP(192.168.1.1)地址连接本地ip(127.0.0.1)的3389端口,从本地IP(127.0.0.1)端口3389获取到的流量由本地IP(192.168.1.1)地址发送到外部IP(192.168.2.1)地址上,这个过程就完成了整个端口复用重定向。

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读