热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

隐蔽信道:隐形网络

通常来说,攻击者会使用隐藏的网络来绕过防火墙和IDS的检测。在这篇文章中,你将会学习到如何通过无法检测的网络通信从目标主机中获取信息。这种类型的网络也被称为隐蔽信道,对于任何的监控

通常来说,攻击者会使用隐藏的网络来绕过防火墙和IDS的检测。在这篇文章中,你将会学习到如何通过无法检测的网络通信从目标主机中获取信息。这种类型的网络也被称为隐蔽信道,对于任何的监控设备/应用或者是网络管理员来说,这种流量就像正常的流量一样。我们可以认为它是一种隐写术,但又不完全是隐写术。两个终端用户可以使用隐蔽通道来进行通信,网络管理员无法检测到。

红队成员在执行红队任务时,通常在一个合法的网络中使用隐蔽信道来进行数据传输,传输数据是在两个终端之间秘密共享数据的过程。


什么是隐蔽信道?

Covert这个单词的意思就是“隐藏的,无法检测的”,信道是一种通信模式,因此隐蔽信道表示的就是无法检测的网络通信。通过秘密信道传输的流量,管理员是无法检测到的。了解加密通信和隐蔽通信的区别十分重要。在隐蔽通信中,数据流是由未授权的第三方篡改的,而在加密通信中,它是不会隐藏两个终端间存在加密通信这个事实的。


隐蔽信道类型

存储隐蔽信道:通过修改“存储位置”进行通信,这将允许一个进程直接或间接写入存储位置,而且允许另外一个进程直接或间接读取存储位置。

定时隐蔽信道:执行操作,影响接收器“观察到的实时响应时间”。

注意:众所周知的spectre和meltdown使用的是系统的页面缓存作为他们的隐蔽信道进行泄露数据的。

几乎任何协议都是可以用来进行隐蔽通信。不过,绝大多数的隐蔽信道研究都是基于第三层(网络层)和第四层(传输层)的,如ICMP,IP和TCP协议。7层协议(应用层)如HTTP和DNS协议偶尔也会使用。这种机制传输信息是不会触发网络防火墙和IDS警报的,而且netstat也检测不到。


什么是tunnelshell

Tunnelshell是一个用C语言编写的程序,适用于Linux用户,是以客户端-服务端的模式工作的。服务端打开一个/bin/sh shell,客户端可以通过虚拟隧道进行访问。它适用于多种协议,包括TCP,UDP,ICMP和RawIP。而且数据包还可以进行分段来绕过防火墙和IDS。

下面我们来实际操作一下,了解更多细节。

环境要求


  • 服务器端(kali Linux IP:10.10.10.1)
  • 客户端(Ubuntu18.04 IP:10.10.10.2 )
  • 隐蔽通信工具(Tunnelshell),下载地址https://packetstormsecurity.com/search/files/?q=Tunnelshell

这里我假设我们已经通过C2服务器获取了受害者主机的会话。现在,我们需要创建一个隐蔽通信信道来进行数据传输。因此,要在客户端和服务端同时安装上tunnelshell。

服务端下载好后,解压文件并进行编译,如下所示:





隐蔽信道:隐形网络

同样地,客户端执行相同的操作,完成之后,在终端中执行下列命令,为服务端(攻击者)开启一个通信信道




默认情况下,它会发送分段数据包,然后在所有分段到达服务器后重新组合,以此来绕过防火墙和IDS。


隐蔽信道:隐形网络

现在要通过tunnelshell进行连接,我们要在服务端(攻击者主机)执行下列命令,这将会建立一个隐蔽信道来进行数据传输。

语法: 







frag:使用IPv4分段数据包进行封装数据。当路由器和防火墙(如思科路由器)接收到第4层没有headers的分段数据包时,即使他们有拒绝规则,但还是会允许通过。通过下图,你可以看到它成功连接到了10.10.10.2,我们获得了受害者主机的shell,如图:


隐蔽信道:隐形网络

前面说过,如果使用netstat命令来检查网络状态,你看不到任何有关tunnelshell的进程ID。不过,通过ps命令是能够看到进程信息的,然后再通过netstat命令查看它的进程ID,如下图:





隐蔽信道:隐形网络

我们用wireshark抓包来看一下10.10.10.1(攻击者IP)和10.10.10.2(靶机IP)之间的网络流量,如下图,两个终端之间的数据流看起来是正常的,但是如果进行正确的监控的话,网络管理员是可以嗅探到数据包的。下图中可以观察到wireshark捕获了隐蔽的流量并且嗅探到了两个终端设备之间传输的数据


隐蔽信道:隐形网络

隐蔽的ICMP信道

我们知道ping命令使用的是ICMP通信,也就是使用ICMP echo请求和ICMP echo回应查询在两台主机之间建立连接的,因此,我们可以执行下列命令:





隐蔽信道:隐形网络

现在要通过tunnelshell建立连接,我们需要在服务端执行下列命令,这可以建立一个隐蔽信道来进行数据传输;





隐蔽信道:隐形网络

可以看到,它成功的连接到10.10.10.2,而且攻击者已经能够访问靶机的shell了。

同样,如果使用wireshark抓包的话,还是能够看到ICMP echo请求和回应包在两个终端之间传输。如果继续对这些数据包进行分析的话,就能够看到ICMP数据包传输的payload是什么了,如图:


隐蔽信道:隐形网络

隐蔽的HTTP信道

它会建立一个虚拟的TCP连接而不用进行三次握手。它不会绑定任何端口,所以你可以使用一个已经被其他进程使用的端口,所以,我们可以执行下列命令:





隐蔽信道:隐形网络

现在,要通过tunnelshell建立连接,我们需要在服务端执行下列命令,执行完之后,就会建立一个隐蔽信道进行数据传输





隐蔽信道:隐形网络

从图中可以看到,已经成功连接到10.10.10.2,攻击者可以访问靶机的shell

同样地,进行wireshark抓包,可以看到在源和目标之间建立了没有三次握手的TCP连接,如图: 


隐蔽信道:隐形网络

隐蔽的DNS信道

要建立DNS隐蔽信道,我们需要在两台主机上同时运行UDP隧道模式。所以,我们在靶机上执行下列命令:





隐蔽信道:隐形网络

同样地,在攻击机上执行下列命令进行隧道连接





隐蔽信道:隐形网络

抓包分析,可以看到畸形分组的DNS数据包包含了两个终端之间传递的数据,如图: 


隐蔽信道:隐形网络

隐蔽信道在数据传输时并不会发送加密的数据包,因此它很容易进行嗅探,网络管理员可以很轻易地执行数据损失和风险管理。


推荐阅读
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 初探PLC 的ST 语言转换成C++ 的方法
    自动控制软件绕不开ST(StructureText)语言。它是IEC61131-3标准中唯一的一个高级语言。目前,大多数PLC产品支持ST ... [详细]
  • 像跟踪分布式服务调用那样跟踪Go函数调用链 | Gopher Daily (2020.12.07) ʕ◔ϖ◔ʔ
    每日一谚:“Acacheisjustamemoryleakyouhaven’tmetyet.”—Mr.RogersGo技术专栏“改善Go语⾔编程质量的50个有效实践” ... [详细]
  • Linux系统高级网络配置:链路聚合
    链路聚合网卡的链路聚合就是将多块网卡连接起来,当一块网卡损坏,网络依旧可以正常运行,可以有效的防止因为网卡损坏带来的损失,同 ... [详细]
author-avatar
天使犯罪de快乐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有