D~DIDI~DIDIDI!!!!

0%

数据转发学习

0x01 一些前言

以前虽然也使用过一些数据转发的工具,但其实一直对数据转发的一些东西缺乏深入的了解,于是打算开始看着巨佬的博客进行一些学习,并进行一些简单的数据转发实验。

首先我们需要了解几个概念

  • 端口转发(port forwarding)

端口转发有时候也被叫做隧道,是安全壳为网络安全通信使用的一种方法,我们像假设我们有个拥有公网IP的路由器,下面连着多台内网主机。内网主机和外网进行通信的时候,当外网发送信息回来时,路由器时怎么分辨这些信息是给哪台内网主机的呢?,这个时候,在路由器中就会有一个内网IP和路由器端口对应的一张表,当路由器的某个端口收到消息时,就把这个消息发给端口对应的IP,这就是端口转发的过程,不同的端口收到的消息,转发给相对应的不同的主机。

  • 端口映射(port mapping)

指将一台主机的内网主机(LAN)的IP地址映射成一个公网主机(WAN)的IP地址,当用户访问公网IP的配置好的某个端口时,服务器就把请求转移到本地设置好的某台内网主机的某个端口,比如我的路由器有一个公网IP:172.16.1.1,上面接有一台服务器,分配的局域网ip为:192.168.1.2,我们就可以在路由器上配置一个端口映射,设置路由器的80端口映射到192.168.1.2这台内网主机的80端口,这样我们在公网直接访问172.16.1.1:80,路由器就会主动把流量转到内网服务器上的80端口上,并且此时在路由器上也会存在一个session,当内网主机返回数据给路由器时,路由器能准确的将消息发送给外网请求用户的主机,这个过程中路由器充当的是一个反向代理的作用。

  • 反弹

假设存在两台主机A&B,A为攻击机器,B为受害机器,A监听端口、B监听端口,由于某些条件触发,使B主动去连接A主机,这就是一个反弹的过程

0x02 网络层&数据层转发

1. SSH

  • 一些参数
-c 启用压缩
-N 只做转发,不执行命令
-g 允许远程主机连接本地转发端口,如果访问受害机本地端口就需要指定此端口
-q 静默模式
-T 禁用伪终端,使用who看不到的伪终端用户
  • 修改sshd配置文件

文件路径:/etc/ssh/sshd_config

配置一下三项内容,去掉注释并设置为yes

AllowAgentForwarding yes

AllowTcpForwarding yes

GatewayPorts yes

重启sshd

service sshd restart

  • 本地转发

我们有三台主机

主机A:192.168.2.180

主机B:192.168.2.127

主机C:192.168.2.188

在主机A上执行:ssh -g -L 5555:192.168.2.188:80 [email protected]

在A主机上监听5555端口,设置ssh-server(B主机)将tcp数据转发到C主机的80端口之上,最终A访问localhost:5555,就可以直接访问到C主机的80端口

1

  • 远程转发

还是上面三台主机,

主机A:192.168.2.180

主机B:192.168.2.127

主机C:192.168.2.188

我们在A主机上执行:ssh -R 9999:192.168.2.188:80 [email protected]

远程转发是在SSh-server(B主机)端建立监听端口(9999),访问9999端口的数据包通过ssh隧道由ssh-server(B主机)发往ssh-cilent(A主机),ssh-cilent(A主机)端收到数据包后,再与指定的地址(192.168.2.188:80)建立新的连接转发数据包。在B主机上访问localhost:9999,就可以直接访问到C主机的80端口

2

2. iptables端口映射

3. netsh端口映射

4. netcat

5. socat

6. UDP隧道

7. ICMP隧道

8. SCTP隧道

9. DCCP隧道

10. nginx转发

11. 其他

0x03 应用层隧道

1. Socks

2. APT

3. DNS tunnel

4. Webshell tunnel

5. RMI Deserialized tunnel

6. 复用资源

7. Webshell

8. iptables规则

9. IPV6

0x04 慢慢补(咕咕咕)~~~

2019040145