C&C控制服务的设计和侦测方法综述——DDoS攻击,上传从宿主机偷窃的到的信息,定时给感染机文件加密勒索等。

这篇文章总结了一些我在安全工作里见到过的千奇百怪的C&C控制服务器的设计方法以及对应的侦测方法,在每个C&C控制服务先介绍黑帽部分即针对不同目的的C&C服务器设计方法,再介绍白帽部分即相关侦测办法,大家来感受一下西方的那一套。这里的白帽部分有一部分侦测方法需要一些数据和统计知识,我也顺便从原理上简单讨论了一下用数据进行安全分析的方法,从数学和数据原理上思考为什么这么做,可以当作数据科学在安全领域的一些例子学习一下。

0x00 什么是C&C服务器

C&C服务器(又称CNC服务器)也就是 Command & Control Server,一般是指挥控制僵尸网络botnet的主控服务器,用来和僵尸网络的每个感染了恶意软件(malware)的宿主机进行通讯并指挥它们的攻击行为。每个malware的实例通过和它的C&C服务器通讯获得指令进行攻击活动,包括获取DDoS攻击开始的时间和目标,上传从宿主机偷窃的到的信息,定时给感染机文件加密勒索等。

为什么malware需要主动和C&C服务通讯?因为多数情况下malware是通过钓鱼邮件啊等方法下载到感染宿主机,攻击者并不能主动得知malware被谁下载,也不能主动得知宿主机的状态(是否开机是否联网等),除非malware主动告诉他,所以malware都会内置一套寻找C&C主控服务器的方法以保持和C&C的联络和断线重连。C&C控制服务的攻防要点在于,攻击者能不能欺骗防御者成功隐藏C&C服务:如果防御者侦测到了隐藏的C&C服务,通过一些技术(封禁域名和IP等)或者非技术手段(汇报给安全应急中心等)切断malware和C&C之间的联系,就可以有效的摧毁botnet

寻找到C&C之后malware和C&C之间的通讯方式并不是本文攻防重点,它可以是SSH文件传输也可以是简单的HTTP GET和POST,技巧性不是很大,不多的几个靠传输来隐藏的技巧比如用DNS隧道隐藏流量这类方法如果有需要以后再来一发详细阐述。

0x01 IP地址:难度低,易被抓

这是最常见的一类C&C服务器。攻击者在恶意软件的代码里硬编码写上C&C服务器的IP地址,然后在需要和C&C通讯的时候用HTTP拉取需要的攻击指令或者上传从宿主感染机上盗取的信息等等。

这并不是一个高级的办法,因为如果malware的二进制代码被获取,这种用IP的方法很容易被安全人员通过反向工程二进制代码或者检测蜜罐流量得到C&C服务器的地址,从而汇报给服务提供商封禁IP。所以这种方法并不能有效隐藏C&C服务,IP被抓了被反毒软件更新病毒库以后整个botnet就被摧毁了。现在国内的多数malware的主控服务器都是以这种拼运气不被抓的方式存在,他们靠的是malware数量多,今天抓一个当天就再出来三个,市场竞争很激烈。

国外用IP的C&C服务器一般是在Amazon AWS之类的云服务器上,通知了服务提供商很容易封禁IP。国内的云服务商态度暧昧,不过也算还行吧。有机智的国内malware作者在东南亚地区租用云服务IP,可以有效避开国内监管而且速度不错(我并不是教你这么做啊)。

安全人员也不要以为这个方法低级就以为能轻易有效防御,比如说如果感染机不能安装防毒软件或者根本你就不知道中毒了。最近的一个例子是最近比较火的植入路由器的Linux/Xor.DDOS,它的C&C控制就是在AWS上面的IP,造成的影响很大,因为多数人并不知道路由器会被大规模植入恶意软件,路由器本身也很少有防护,正好适合用IP做C&C,还省去了复杂的域名算法和DNS查询的代码保证了软件本身的轻量化。也由于路由本身常开的特性,路由木马也不用担心失去链接,一次C&C的通讯可以保持连接很久,降低了木马被发现的机会。技巧虽然不华丽,但是用的好还是威力强大。该木马的详细分析参见http://blog.malwaremustdie.org/2015/09/mmd-0042-2015-polymorphic-in-elf.html 。

0x02 单一C&C域名:难度较低,易被抓

因为硬编码的IP容易通过在二进制码内的字串段批量regex扫描抓到,一个变通的办法就是申请一些域名,比如idontthinkyoucanreadthisdomain.biz代替IP本身,扫描二进制码就不会立刻找到IP字段。这是个很广泛使用的方法,通常C&C域名会名字很长,伪装成一些个人主页或者合法生意,甚至还有个假的首页。即使这么用心,这种方法还是治标不治本,侦测的方法也相对简单,原因是:

安全厂商比如Sophos等的资深安全人员经验丰富,他们会很快人工定位到恶意软件可能包含C&C域名的函数,并且通过监测蜜罐的DNS查询数据,很快定位到C&C域名。这些定位的域名会被上报给其他厂商比如运营商或者VirusTotal的黑名单

新的C&C域名会在DNS数据的异常检测里面形成一些特定的模式,通过数据做威胁感知的厂商很容易侦测到这些新出现的奇怪域名,并且通过IP和其他网络特征判定这是可疑C&C域名。

所以常见的C&C域名都在和安全厂商的黑名单比速度,如果比安全研究员反向工程快,它就赢了,但是最近的格局是随着基于数据的威胁感知越来越普遍,这些C&C域名的生命周期越来越短,运气不好的通常活不过半个小时。攻击者也会设计更复杂的办法隐藏自己,因为注册域名需要一定费用,比如带隐私保护的.com域名需要好几十美元,寻找肉鸡植入木马也要费很大功夫,本来准备大干一场连攻半年结果半个小时就被封了得不偿失。

在这个速度的比赛里,一个低级但是省钱方便技巧就是用免费二级域名,比如3322家族啊vicp家族等不审查二级域名的免费二级域名提供商,最著名的例子就是Win32/Nitol家族,搞的微软靠法院判来3322.org的所有权把他们整个端了(虽然后来域名控制权又被要回去了)。这个方法是国内malware作者最喜欢的一个方法,数据里常见一些汉语拼音类的C&C域名,比如woshinidie.3322.org等喜感又不忘占便宜的二级域名,可能因为在我国申请顶级域名麻烦还费钱容易暴露身份,不如闷声发大财。你看,这也不是我在教你这么做啊。

真正有意思的是技术是,比较高级的C&C域名都不止一个,通过一个叫做fast flux的办法隐藏自己。

待续

时间: 2024-12-07 02:21:01

C&C控制服务的设计和侦测方法综述——DDoS攻击,上传从宿主机偷窃的到的信息,定时给感染机文件加密勒索等。的相关文章

java实现服务端守护进程来监听客户端通过上传json文件写数据到hbase中

1.项目介绍: 由于大数据部门涉及到其他部门将数据传到数据中心,大部分公司采用的方式是用json文件的方式传输,因此就需要编写服务端和客户端的小程序了.而我主要实现服务端的代码,也有相应的客户端的测试代码.这里须有一个需要提到的是,我在实现接收json文件的同时,而且还需将数据写到hbase中.写入到hbase当中采用的是批量插入的方式,即一次插入多条记录. 好了,有了前面的说明,下面来简单的说一下我实现的服务端的小程序把. 2.为了实现服务端能够监听客户端的行为,因此我在服务端采用多线程的技术

angulaijs中的ng-upload-file与阿里云oss服务的结合,实现在浏览器端上传文件到阿里云(速度可以达到1.5M)

angularjs结合aliyun浏览器端oos文件上传加临时身份验证例子 在服务端获取sts 源码: public class StsServiceSample { // 目前只有"cn-hangzhou"这个region可用, 不要使用填写其他region的值 //<setting name="accessKeyId" value="H6JSh0Y****z2cGa" /> //<setting name="ecr

JavaScript File API应用——如何设计和实现文件上传组件

(1)精简"带进度条文件上传组件"的设计与实现 XMLHttpRequest第二版为我们提供了便利的progress事件,通过为xhr.upload.onprogress指定处理函数,可以快速制作进度条,JQuery插件参考代码如下: (function($) { $.fn.uploader = function(userOptions) { var options = { id : "uploader", url : "uploadAction.acti

Struts2控制文件的上传与下载

Struts2控制文件上传与下载的几个注意事项: (1)必须将表单的method设置为post,将enctype设置为multipart/from-data.只有这样,浏览器才会把用户选择文件的二进制数据发送给数据. (2)Struts2默认使用的是Jakarta的Common-FileUpload的文件上传框架,因此,如果需要使用Struts2的文件上传功能,则需要在web应用中增加两个JAR文件,即commons-io-2.2.jar和commons-fileupload-1.3.1.jar

[C#]使用WebClient上传文件并同时Post表单数据字段到服务端

转自:http://www.97world.com/archives/2963 之前遇到一个问题,就是使用WebClient上传文件的同时,还要Post表单数据字段,一开始以为WebClient可以直接做到,结果发现如果先Post表单字段,就只能获取到字段及其值,如果先上传文件,也只能获取到上传文件的内容.测试了不少时间才发现WebClient不能这么使用. Google到相关的解决思路和类,因为发现网上的一些文章不是介绍得太简单就是太复杂,所以这里简单整理一下,既能帮助自己巩固知识,也希望能够

Ali OSS服务端签名直传并设置上传回调

服务端签名直传并设置上传回调 背景 请参考 Web端直传实践 里的背景介绍. 当采用服务端签名后直传方案后,问题来了,用户上传数据后,很多场景下,应用服务器都要知道用户上传了哪些文件,文件名字,甚至如果是图片的话,图片的大小等.为此OSS开发了上传回调功能. 用户的请求逻辑 用户向应用服务器取到上传policy和回调设置. 应用服务器返回上传policy和回调. 用户直接向OSS发送文件上传请求. 等文件数据上传完,OSS给用户Response前,OSS会根据用户的回调设置,请求用户的服务器.

服务计算 SO 服务的设计

服务计算: 一.产生:为弥补商业模式和信息技术之间的鸿沟 服务--商业 计算--信息技术 应用面向服务技术(SOA)将商业服务和信息技术相结合的产物 二.解决方面: 1.技术平台与架构 2.服务交付 3.业务管理与整合 三.服务: (1)什么是服务: 服务:至少有一个服务提供者和一个服务消费者并基于一定的商业目标或者解决目标而产生的基于关系的活动. 服务无处不在 (2)IT服务与非IT服务的差别: 1.衡量KPI(key performance indicators)方式不同: 如:对于看病的活

孢子框架-互联网金融平台微服务架构设计

按照孢子框架要义对互联网金融理财平台进行微服务架构设计.假设我们设计的目标是5年后的陆金所(https://www.lu.com/).陆金所简介,平安集团旗下理财平台,是中国最大的网络投融资平台之一,2011年9月在上海注册成立,注册资本金8.37亿元,lufax结合全球金融发展与互联网技术创新,在健全的风险管控体系基础上,为中小企业及个人客户提供专业.可信赖的投融资服务,帮助他们实现财富增值.截至2014年1月末,注册用户已逾570万. l 需求分析 参照陆金所,获得如下核心需求矩阵. 分类

TYPESDK手游聚合SDK服务端设计思路与架构之三:流程优化之订单保存与通知

经过前两篇文字的分析与设计,我们已经可以搭建出一个能够支持多游戏多渠道的聚合SDK服务端,但这只是理想化状态下的一个简化模型.如果接入渠道的逻辑都是按照理想化的简化过程来构建,那么对于支付的请求,我们可以简化成这样几步: 游戏客户端创建订单. 游戏客户端(通过TYPESDK客户端)调用渠道lib库中相应接口,发起支付. 用户在弹出的支付窗口完成支付. TYPESDK服务端等待渠道服务端的回调,收到回调后通知游戏服务端. 游戏服务端执行发货动作. 但是显然这个简化流程在实际上线时是不够满足需求的,