几年前,自己看到一篇关于“黑暗幽灵(DCM)木马”的分析报告,报告中这个木马的通信方式确实惊艳到我了!可以这么说,我认为这是目前最隐蔽、最难溯源的通信方式。报道中是这么描述它的通信方式的:
只有寥寥 100 多字的描述,背后却蕴含着高超的技术底蕴。厉害之处在于打破了我们的思维惯性,以前我们总认为必须要写对IP和端口才能数据通信,而现在只需要在传输链路上就可以通信,不需要正确的IP和端口。
早些年自己在了解到这种奇怪的通信方式后,专门花了一段时间来研究,最后完美地实现出来了。 那么,这一期咱们就聊聊这个隐匿通信技术的原理,我想可能会颠覆你对通信五元组应用的一贯认知。
话不多说,咱们开始吧!
原理解析
通常地,数据要想正常地相互通信,数据包必须要包含通信五元组,也就是:源IP、源端口、目的IP、目的端口、协议类型。这样,数据才会在互联网中正确地传输,目标电脑能够正确地解析数据包。我们看一下数据的传输过程:
计算机某个进程向远程发送一个数据包的时候,会把五元组打包到数据包里,交由网络传输
网络通过目的IP地址进行路由器寻址,把数据包传递到目标的电脑上
目标电脑接收到数据包后,系统协议栈会进行层层解析、验证。数据链路层首先验证判断目的MAC地址是否是本机MAC,如果不是,则丢弃;若是,则交给网络层验证、解析,网络层主要验证目的IP地址是否是本机,如果不是,则丢弃;若是,则交给传输层验证、解析;传输层主要进行数据的校验,数据校验有误,则丢弃;校验没问题的话,则交给应用层解析;应用层主要根据端口号将数据交给对应进程处理。整个数据传输、解析过程并不是很复杂
结合“黑暗幽灵(DCM)木马”技术分析提及的:”在必经之路上进行劫持嗅探“。而我们上述过程中,我们了解到操作系统会判断数据包是否发送给自己,从而决定是丢弃还是解析处理。
那是否存在一种技术,可以让操作系统强行解析数据包?答案是肯定的!我们可以通过开发网络驱动程序,在操作系统底层来强行对数据包进行解析还原。
那么,整个隐匿通信的过程就变成这样子:
黑客将数据打包成特殊的DNS包发送到 www.baidu.com、www.sina.com、www.163.com 网站
然后数据包就开始进行路由器寻址、传输
黑客的网络驱动程序会在传输链路上的某一台电脑内运行,对途径所在网络的数据包进行嗅探,判断DNS数据包是否是自己的病毒木马构造的特殊DNS数据包:若不是,则忽略。若是,则对数据包进行解析、还原;还原数据包的原理就是重写数据包的目的IP、目的端口、并更新数据校验和;然后将还原的数据包重新发送到操作系统网络协议栈进行解析,这样系统就可以顺利解析原本不是发送给自己的数据包了
总结
好了,隐匿通信的原理就介绍到这里。整个过程的技术难点就在于开发一个网络驱动程序,对数据包的进行过滤、还原。这样的隐匿通信方式的确很很隐蔽、很难溯源,因为整个传输链路上,任何一个子网内的主机,只要能嗅探到数据包的,都有可能是黑客的数据接收服务器呀,根本溯源不出来呀。
很多时候,我们都很向往黑客技术,不是因为他们的能力,而是因为他们有着敢于打破常规的勇气。当生活一成不变的时候,是时候开始改变了。
视频链接和公众号
视频链接
https://www.bilibili.com/video/BV1WF411c7i3