一、C&C通信
这里的C&C服务器指的是Command & Control Server--命令和控制服务器,说白了就是被控主机的遥控端。一般C&C节点分为两种,C&C Server 和 C&C Client。Server就是就是黑客手里的遥控器。Client就是被控制的电脑,也就是受害者。C&C通信就是Client和Server之间的通信。再说具体一点,就是Client上被植入的木马或者后门程序与Server上的远控程序之间的通信。
二、普通C&C通信:
一般网络通信,都是两台机器之间建立tcp连接,然后正常数据通信。而数据通信建立起连接需要依靠对端地址去建立连接。知道IP可以直接发送报文,当不知道的时候就会使用域名解析成IP进行互相通信。建立起连接后C&C服务器传递指令给client上的木马后门程序执行,client成为肉鸡,接受控制。但是现在的网络情况是一把都会有软硬件防火墙检查对外连接情况,另外很多厂商都有收集C&Cserver的相关域名、IP、URL等威胁情报数据,从而帮助防火墙进行阻断。这样一来C&C通信就会被切断。从而引发了使用各种隧道技术进行C&C通信的技术。
三、使用DNS隧道技术的C&C通信:
DNS隧道技术的根源在与一中DNS查询方式:
Client(木马程序进程)-----请求查询 "AABBCCDD.example.com"----->(DNS-Server)
(DNS-Server)-----(知道example.com,但是不知道子域名,于是迭代请求)----------------->dns.example.com(这个域名服务器是攻击者控制的)
dns.example.com-----返回给--------->(DNS-Sserver)-------返回给----------->Client(木马程序进程)
这个过程看起来没有任何问题,但本质问题就是,你预期的返回应该是ip地址,但事实上不是,返回可以是任何字符串,包括加了密的c&c指令。
四、为什么这样做:
因为软硬件防火墙正常情况下是不对阻断DNS请求的,这是现代互联网的一个基础请求。从而C&C可以绕过防火墙的阻断,甚至也绕过了某些审计,避免了报警。
五、类似的常见隧道:
1、SSH隧道:
主机B:
ssh -p 22 -qngfNTR 6766:127.0.0.1:22 192.168.1.1
然后在A 上利用6766 端口反向SSH 到B:
主机A:
1 ssh -p 6766 [email protected]127.0.0.1
这样就OK了,达成了SSH隧道。
2、HTTP隧道:
A需要与C通信,但是非HTTP的TCP通信被防火墙阻止,那么可以使用HTTP隧道:
A---HTTP Request(data:原始通信数据报文)---->B-------解HTTP,处理好原始通信数据报文(TCP)--------->C
C-------正常响应回复TCP信息------------>B--把C回复的信息打包好装在HTTP的响应报文的数据部分响应---->A
3、ICMP隧道:
就是正常的ICMP报文,把数据或者恶意信息放在payload部分,响应报文会拷贝这段payload信息,放在响应报文中作为匹配检查特征。可以绕过一些防火墙,比较适用于窃取信息类的木马后门。