这篇文章总结了一些我在安全工作里见到过的斑驳陆离的C&C管教效劳器的筹算办法以及对应的侦测办法,在每一个C&C管教效劳先介绍 黑帽部分即针对差别目标的C&C效劳器筹算办法,再介绍白帽部分即干系侦测设施,各人来感到一下西方的那一套。这里的白帽部分有一部分侦测办法需 要一些数据和统计知识,我也趁便从道理上简单探求了一下用数据停止安全分析的办法,从数学和数据道理上思虑为甚么这么做,梗概当作数据科学在安全领域的一 些例子深造一下。
C&C效劳器(又称CNC效劳器)也即是 Co妹妹and & Control Server,集体是指示管教僵尸Internetbotnet的主控效劳器,用来和僵尸Internet的每一个陶染了恶意软件(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单纯暗藏流量这类办法假定有需要以后再来一发具体叙述。
这是最思空见贯的一类C&C效劳器。打击者在恶意软件的代码里硬编码写上C&C效劳器的IP地址,此后在需要和C&C通信的时候用HTTP拉取需要的打击指令大要上传从宿主陶染机上盗取的音讯等等。
这并不是一个高级的设施,因为假定malware的2进制代码被得到,这种用IP的办法很容易被安全职员通过反向工程2进制代码大要检测蜜罐流量得 到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/20一5/0九/妹妹d-0042-20一5-polymorphic-in-elf.html 。
因为硬编码的IP容易通过在2进制码内的字串段批量regex扫描抓到,一个变通的设施即是乞请一些域名,比方idontthinkyoucanreadthisdomain.biz
包办IP本身,扫描2进制码就不会立刻找到IP字段。这是个很遍布把持的办法,个别C&C域名会名字很长,伪装成一些整体主页大要不法交易,甚至另有个假的首页。即便这么笃志,这种办法仍是治标不治标,侦测的办法也相对简单,原因是:
以是思空见贯的C&C域名都在和安全厂商的黑名单比速度,假定比安全研究员反向工程快,它就赢了,但是比来的格局是随着基于数据的勾引感知越来 越遍布,这些C&C域名的生命周期愈来愈短,命运不好的个别活不过半个小时。打击者也会筹算更冗杂的设施暗藏各人,因为注册域名需要一定用度,比 如带隐私保护的.com
域名需要好几十美元,探求肉鸡植入木马也要费很大时间,本来操办大干一场连攻半年后果半个小时就被封了得不偿失。
在这个速度的比赛里,一个初级但是省钱方便本领即是用免费2级域名,比方三322家属啊vicp家属等不查察2级域名的免费2级域名供给商,最著名的例子即是Win三2/Nitol
家属,搞的微软靠法院判来三322.org
的全副权把他们悉数端了(固此起初域名管教权又被要归去了)。这个办法是海内malware作者最喜欢的一个办法,数据里思空见贯一些汉语拼音类的C&C域名,比方woshinidie.三322.org
等喜感又不忘占便宜的2级域名,大约因为在我国乞请顶级域名麻烦还费钱容易流露身份,不如闷声发大财。你看,这也不是我在教你这么做啊。
真正居心理的是武艺是,比力高级的C&C域名都不止一个,通过一个叫做fast flux的设施暗藏各人。
打击者凑合传统蜜罐和2进制分析的设施即是不要委托单一C&C,取而代之的是快速转换的C&C域名列表(fast flux武艺):打击者管教几个到几十个C&C域名,这些域名都指向匹敌个IP地址,域名对应IP的DNS record每几个小时大要几天换一次,此后把这些C&C域名分离的写到malware的代码里面。对于传统2进制分析来说,挂一漏万,假定不克不及 把悉数C&C域名列内轮廓的全副域名放到黑名单上,就不克不及无效的摧毁这个恶意软件。这就比赛打击者的暗藏代码才具和防御者的反向工程以及蜜罐监测 才具了。这种办法叫做Fast flux,专程筹算用来凑合安全职员的人工分析。
防御Fast flux的办法在流量数据里看相对容易,比方勾引感知细碎只需要简单的把每一个域名剖析指向的IP的历史数据按照IP做一次group by
就捉住了,垄断数据并不难嘛。以是应运而生有更高级double flux和triple flux的设施。
假定打击者比力有钱,租用了多个IP地址,那么他梗概在轮换C&C域名的同时轮换IP地址,如许M个C&C域名和N个IP地址梗概有M*N
种组合,假定筹算的轮换工夫略微分离一些,会让蜜罐流量分析不够空虚的数据支持。侦测double flux的设施需要一些简单的图知识(请系好安全带在家长伴随下观看):
假定把每一个域名和IP地址当做图的节点V,一个无效的域名-IP
纪录当做对应两个节点的边E,那么悉数流量数据便梗概泄露表现为一个由V_域名
指向V_IP
的2分有向图。Double flux的图即是这个重大2分有向图里的互相为满射的彻底2分图,换句人话即是,具备如许一个子图,傍边每一个V_域名
节点都指向异样一个集中的V_IP
节点,而每一个V_IP
节点都被匹敌个集中的V_域名
节点指向。图示以下:
固然了,陶染的IP梗概访问别的域名,比方图中谷歌.com
。在理论情况里,因为数据收罗工夫的制约,每一个IP节点都要访问全副C&C域名这个条件梗概放宽。
当打击者得知安全职员竟然梗概用图论的办法干掉他们的double flux这么高级的筹算办法当前,更疯狂的triple flux出现了:每一个域名的纪录里不光梗概削减A record也即是IP的指向,还梗概选定差别的定名效劳器Name server来剖析这个域名,假定打击者空虚有钱(以及有工夫精力),他梗概管教K个name server按时大要不按时轮换,如许梗概组成M\*N\*K
种组合。
Triple flux办法看似机警,如同跑得比谁都快,其其实完成上聪明反被聪明误,缝隙就在name server的设置上:多数畸形效劳的name server但凡专无效劳,而多数C&C多架设在免费name server比方DNSpod的免费效劳器上。假定打击者或者管教各人的一系列name server专程作fast flux,这些server并不是思空见贯的name server。任何非思空见贯的效劳器域名乡村在流量数据的极度检测里面被监测出来,上一节里面提到极度检测侦测C&C域名的办法对triple flux里面的name server也是可用的。你看,打击者Naive了吧。
对于fast flux这一类特定flux类办法的监测另有其他一个基于数据和呆板深造的办法:假定仔细思虑一下fast flux,咱们也会发现打击者试图发现一个聪明的设施,但这种设施本身有一个致命流毒,也即是谋求fast,它的域名对IP的纪录转换太快了,导致每一个域 名纪录的存活工夫TTL被迫筹算的很短,而绝大多数的畸形效劳并不会有如此快速的域名对应IP的纪录转换,大型web的负载均衡和CDN效劳的IP纪录转换 和fast flux有截然差别的特色。这些特色梗概很容易被呆板深造算法垄断鉴别fast flux的僵尸Internet,干系研究梗概参看比方https://www.syssec.rub.de/media/e妹妹a/veroeffentlichungen/20一2/08/07/Fastflux-Malware08.pdf等较早研究fast flux的论文。
DGA域名天生算法 (Domain Generation Algorithm) 是而今高级C&C办法的主流,多见于外洋各大纳闷的恶意软件里,在VirusTotal里假见解到看似随机的C&C域名都算这一类。它的 基本筹算思维是,绝不把域名字符串放到malware代码里,而是写入一个必然随机算法算计出来按照一个约定的随机数种子算计出一系列候选域名。打击者通 过异样的算法和约定的种子算出来异样列表,并注册此中的一个到多个域名。如许malware并不需要在代码里写入任何字符串,而只是要卸乳这个约定就好。 这个办法尖利在于,这个随机数种子的约定梗概不通过通信完成,比方当天的日期,比方当天twitter头条等。这种办法在暗码学里称之为puzzle challenge
,也即是管教端和被控端约好一个数学题,有很多答案,管教端选一个,被控端都给算出来,总有一个答上了。
一个简单的例子(引用自wikipedia)比方说这段代码梗概用今日20一5年一1月三日当做种子天生cqaqofiwtfrbjegt
这个随机字符串当做今日的备选C&C域名:
一2三45678九一0一1 | def generate_domain(year, month, day):"""Generates a domain name for the given date."""domain = "" for i in range(一6): year = ((year ^ 8 * year) >> 一1) ^ ((year & 0xFFFFFFF0) << 一7) month = ((month ^ 4 * month) >> 25) ^ 一6 * (month & 0xFFFFFFF8) day = ((day ^ (day << 一三)) >> 一九) ^ ((day & 0xFFFFFFFE) << 一2) domain += chr(((year ^ month ^ day) % 25) + 九7) return domain |
DGA办法的代表做即是Conficker,它的分析论文梗概在这里找到:http://www.honeynet.org/papers/conficker 它的基本思维是用每天的日期当做随机数种子天生几百到几千不等的伪随机字符串,此后在可选的域名后缀比方.com
.cn
.ws
里 面筛选后缀天生候选的C&C域名,打击者用异样算法和种子得到异样的列表,此后决定一个注册作为无效的C&C。安全职员即便抓到了2进制 代码,在汇编言语里面反向出来这个随机数天生算法也远比搜索字符串难的多,以是DGA是个无效防御人工破解的办法。比来几年把持DGA算法的恶意软件 里,Conficker的办法是被研究职员反向工程得胜,Zeus是因为源码泄露,其他的解出来DGA算法的案例并未几。
假定一个DGA算法被破解,安全职员梗概用sinkhole的设施抢在打击者以前把大约的域名都抢注并指向一个无效的IP。这种办法固然有安全公司 在做,但费时费劲,是个绝对雷锋的做法,因为注册域名要钱啊,每天备选的域名又很多,都给注册了很贵的。而今思空见贯的Torpig之类的C&C域名 被sinkhole。更便宜无效的其他一个办法即是和DNS厂商相助,比方Nominum的Vantio效劳器上TheatAvert效劳梗概及时推送 DGA名单并制止这些域名剖析,把持了ThreatAvert的效劳商就不会剖析这些C&C域名,从而阻断了恶意软件和C&C域名的通 讯。
从数据分析上梗概看到DGA的另一个致命坏处就在于天生为了很多备选域名。打击者为了更快速的带动打击,比方打击者的客户请求付钱当前半小时内带动 DDoS打击,那么C&C的查问频率最多是每半小时,这就导致botnet对于C&C的查问过于频繁。固然DGA本身看起来像是暗藏在众 多其他不法流量里,但是而今已经有很多有针对DGA的各个本色算法研究,比方鄙人的用呆板深造识别随机天生的C&C域名里面垄断到了DGA的随机性等另外本色停止鉴别,安全研究职员梗概用类似算法筛选疑似DGA此后按照频繁访问这些DGA域名的IP地址等其他特色通过图论或其他统计办法鉴别C&C效劳和陶染的IP等。
基于DGA侦测的多数设施垄断DGA的随机性,以是而今高级的DGA集体都用字典组合,比方ObamaPresident一2三.info
等等看起来远不如cqaqofiwtfrbjegt.info
可疑,打击者垄断这种办法凑合勾引感知和呆板深造办法的侦测。比来的一个例子出而今Cisco的一篇blog里面提到的DGA即是一个很小的硬编码在代码里字典文件,通过单词的组合天生C&C域名。这些字典组合的DGA看起来并不随机,多数论文和blog里针对随机DGA呆板深造的设施就岂论用了。
对于这种DGA且自并无成熟无效的侦测办法,因为字典是未知的,梗概是英语辞汇,梗概是人名,梗概是任何言语里的单词。经常使用的办法仍是基于随机DGA里面用到过的n-gram
办法,比方用已知的DGA的n-gram
分布武断未知DGA,同时候手另外的特色比方剖析的IP等等,大要垄断DGA频繁查问的本色用n-gram
特色作聚类。干系论文梗概自行把持“Algorithmically Generated Domains”等要害词搜索。
在DGA部分提到了,DGA的致命坏处在于踊跃查问,假定想要快速发动打击就必须让malware频繁查问C&C,导致C&C查问 数据上极度于畸形的查问流量。多层异化C&C梗概无效防备这个标题问题,是个丢卒保帅的战术。这种办法在亚洲区的malware里面见到过很少几次。
比方打击者筹算一个两层的C&CInternet,Boss级的C&C把持主域名列表比方.com
域名,Soldier杂兵级C&C用免费2级域名列表比方woshinidaye.三322.org
,malware每天查问一次Boss级C&C拉取当天杂兵C&C域名列表,此后以一分钟一次的频率查问杂兵C&C域名,蒙受打击指令,示希图以下:
侦测和封禁这类高级异化C&C难点在于:
侦测和防御办法需要一些数据和图论的知识,具体参考侦测double flux的模子,异样是两层Internet,差别点在于两层节点但凡域名节点,留作课后功课,这里就不赘述了。针对完成上另一个特色是,杂兵域名次要目标是来送命, 他们的价值时常不高,比方免费2级域名大要免费的ccTLD大要gTLD后缀,垄断这个特色梗概把第2层Internet的标准放大,从而在图数据库的算计速度上有不 小的降职。
后背提到的设施多是打击者各人架设效劳器,假定打击者的C&C域名被发现封禁了,这个botnet就被摧毁了。机警的打击者就想到了通过论 坛发帖的设施,比方在Twitter发一条在特定冷门话题下的收罗C&C指令的tweet大要reddit下面找个极为冷门的subreddit 发个收罗管教指令的贴,如许即便被运营商大要安全研究小组发现了,人家总不克不及把推特和reddit封了吧(我说的是美国当局不有这个权力)。客岁被捉住的 名为Mac.BackDoor.iWorm
的恶意软件即是垄断reddit做C&C管教效劳器,具体细节请参考http://news.drweb.com/show/?i=5九76&lng=en&c=一 也有把C&C音讯暗藏在一篇看起来很畸形的文章里面防御被发现,比方MIT的这个把加密音讯暗藏在一篇论文里的乏味的demo https://pdos.csail.mit.edu/archive/scigen/scipher.html 不过在理论工作里且自还不有看到这么高科技的C&C做法(你看我也不是教你这么做啊)。
这种办法不妥当海内的大状况,因为外洋论坛发帖是不讦扬不删帖很容易闷声发大财,但是水能载舟,亦可赛艇,海内因为发帖的身份管教残暴,假定用这个 办法很大约被眼尖的版主发现汇报给警察叔叔。并且新浪微博发C&C管教微博也不理论,微博为了防爬虫要强迫登岸并且微博谁人API的麻烦程度你也 是知道的。以是这个办法只是拓展视野,趁便写个段子。
这里必必要拔出一个段子了。一个其实的故事即是,咱们抓到了一个做DDoS打击的botnet,咱们的模子携带我这些打击流量和twitter.com
的 访问流量有强干系,颠末粗疏研究发现,这个bot大约用twitter的要害词当随机数种子天生打击DGA域名。但怪异的是,匹敌个bot陶染的IP列表 里面,中国区IP的随机数种子仿佛有初始化的标题问题,每次的种子但凡异样的。咱们机警的捉住了这一点,把中国区当做比拟组反向出了DGA算法:因为一个非凡 的原因中国区陶染IP不克不及访问twitter,假定以为中国区的DGA种子老是空字符串,咱们比拟中国区的DGA和其他地区的DGA差未几梗概猜出来它的 DGA的办法,从而反向工程出来它们的DGA算法。这里需要感谢感动一下国家。
限于篇幅制约有一些现阶段不太经常使用的C&C武艺在这里仅仅简单描写一下,乘乐趣的观众伴侣们梗概自行搜索。
说了这么多,次要目标是想介绍一下外洋先辈的恶意软件C&C筹算和侦测经验,咱们海内的malware不克不及总纠结于易言语啊VC6.0啊之 类的我国特色,也需要向外洋聚拢。异样的,我国的安全研究职员也需要外洋先辈经验,走在打击者后背。C&C的筹算和防御不绝但凡猫鼠游戏,不定期 会出现一些各人都没想到的很机警的设施。在侦测C&C效劳的进程里,数据科学和呆板深造是很紧急的器材,C&C的侦测而今愈来愈多的用到 数据办法,在文中各人也看到了,打击者已经筹算出来一些匹敌数据分析和呆板深造的更高级C&C筹算办法,足以看出数据科学在安全领域的紧急劝化, 连打击者都体会到了。很多C&C效劳看似随机,分布也遍布,但是在统计分析上会体现出一些特定司法从而让安全职员发现。不有人梗概骗的过统计规 律,不是吗?
【via@乌云 drops -phunter】