一、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  -qngfNTR :127.0.0.1: 192.168.1.1

然后在A 上利用6766 端口反向SSH 到B:

主机A:

 ssh -p  userb@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信息,放在响应报文中作为匹配检查特征。可以绕过一些防火墙,比较适用于窃取信息类的木马后门。

使用隧道技术进行C&C通信的更多相关文章

  1. SSH隧道技术----端口转发,socket代理

    原文的原始出处不详,本文也是在复制引用了某篇转载,并做了必要的整理与编辑. 本文的受众 如果你遇到了以下问题,那么你应该阅读这篇文章 我听说过这种技术,我对它很感兴趣 我想在家里访问我在公司的机器(写 ...

  2. 第11章 拾遗5:IPv6和IPv4共存技术(1)_双栈技术和6to4隧道技术

    6. IPv6和IPv4共存技术 6.1 双栈技术 (1)双协议主机的协议结构 (2)双协议栈示意图 ①双协议主机在通信时首先通过支持双协议的DNS服务器查询与目的主机名对应的IP地址. ②再根据指定 ...

  3. SSH隧道技术简介

    本文的受众如果你遇到了以下问题,那么你应该阅读这篇文章 我听说过这种技术,我对它很感兴趣 我想在家里访问我在公司的机器(写程序,查数据,下电影). 公司为了防止我们用XX软件封锁了它的端口或者服务器地 ...

  4. 迁移IPv6:6To4隧道技术

    1. IPv6 路由选择协议 首先要讨论的是RIPng(下一代).RIP非常适合用于小型网络.这正是它没有惨遭淘汰,继续用于 IPV6网络的原因.另外,还有EIGRPv6,因为它有独立于协议的模块,只 ...

  5. 利用SSH隧道技术穿越内网访问远程设备

    本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/11899478.html 通常,我们用于调试的计算机无法远程访问位于局域网中的待调试设备. ...

  6. 图解再谈ssh port forwarding-ssh隧道技术

    https://www.ramkitech.com/2012/04/how-to-do-ssh-tunneling-port-forwarding.html https://www.cnblogs.c ...

  7. 隧道技术(Tunneling)

    隧道技术及其应用 隧道技术(Tunneling)是一种通过使用互联网络的基础设施在网络之间传递数据的方式.使用隧道传递的数据(或负载)可以是不同协议的数据帧或包.隧道协议将其它协议的数据帧或包重新封装 ...

  8. ssh隧道技术

    大家都知道SSH是一种安全的传输协议,用在连接服务器上比较多.不过其实除了这个功能,它的隧道转发功能更是吸引人.下面是个人根据自己的需求以及在网上查找的资料配合自己的实际操作所得到的一些心得. SSH ...

  9. 第11章 拾遗5:IPv6和IPv4共存技术(2)_ISATAP隧道技术

    6.3 ISATAP隧道技术 (1)基本概念 ①在一个IPv4网络中主机与路由器之间创建一条ISATAP隧道,以便让该主机可以访问IPv6网络中的资源. ②条件:IPv4中的PC主机需要支持IPv4和 ...

随机推荐

  1. resharper警告 :linq replace with single call to FirstOrDefault

    使用resharper时对linq使用的FirstOrDefault 一直产生一个警告,

  2. 简单认识DataSet与DataTable

    DataSet 是放在内存中的,对DataSet中数据的修改并不直接反应到数据库,要通过 DataAdapter 的 Update 方法更新回数据库; DataSet相当你用的数据库: DataTab ...

  3. 使用Sigar获取服务器信息

    Sigar简介 Sigar是Hyperic-hq产品的基础包,是Hyperic HQ主要的数据收集组件.它用来从许多平台收集系统和处理信息. 这些平台包括:Linux, Windows, Solari ...

  4. Atitit.网页爬虫的架构总结

    Atitit.网页爬虫的架构总结 1. 总数的结构..(接口方法) 1 2. 获得页数 1 3. 跳页处理(接口方法) 2 4. 单个的页面处理(接口方法) 2 4.1. 获得页面url 3 4.2. ...

  5. Atitit. 状态模式(State)attilax 总结 跟个策 略模式的区别

    Atitit. 状态模式(State)attilax 总结 跟个策 略模式的区别 1. 状态模式(State)概览 1 2. 状态的维护和转换:① 在Context 中.② 在状态的处理类中.2 3. ...

  6. atitit.故障排除------有时会错误com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset by peer: soc

    atitit.故障排除------有时会错误com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset by peer: soc ...

  7. 【Android】16.1 Android Service基本概念

    分类:C#.Android.VS2015: 创建日期:2016-03-01 一.简介 为了解决在后台运行任务的问题,Android引入了一个称为Service的应用程序组件.Service的职责是专门 ...

  8. rabbitMQ之安装和配置(一)

    前言 erlang是一门面向并发的编程语言,流行的消息队列rabbitMQ是基于erlang环境运行的: 下载安装erlang语言环境 源码安装 # 从官网下载,在任何目录下,使用root权限 wge ...

  9. 整合hibernate的lucene大数据模糊查询

      大数据模糊查询lucene 对工作单使用 like模糊查询时,实际上 数据库内部索引无法使用 ,需要逐条比较查询内容,效率比较低在数据量很多情况下, 提供模糊查询性能,我们可以使用lucene全文 ...

  10. python 加密方法总结

    MD5 def md5(str): import hashlib m = hashlib.md5() m.update(str) return m.hexdigest() base64 import ...