文献:An advanced Hybrid p2p botnet(Ping wang, Sherri sparks, cliff c.zou, University of Central Florida, Orland,FL)
01 作者怎么为自己的论文狡辩:
To be well prepared for future attacks, it is not enough to study how to detect and defend against the botnets that have appeared in the past. More importantly, we should study advanced botnet designs that could be developed by botmasters in the near future.
02 作者怎么定位自己要实现的botnet:
Harder to be shut down, monitored, and hijacked.
It provides:
由此可以看出,作者想做一个几乎天衣无缝的botnet,但为了表明作者不是与人类为敌,还在Abstract后加上一句:Possilbe defense against this advanced botnet are suggested. 多么言不由衷的话啊,作者恨不得说,nnd,谁也别想defense。(开个玩笑,我们还是要承认这是作者严谨的科学态度使然)
I 先看Introduction
最后作者语重心长的说:既然安全从业者practitioner都开始defend against botnet, hacker肯定会开发和部署下一代botnet(拥有不同的控制结构)。
I.A当前P2p botnets和它们的弱点*********************************
不知道为什么莫名其妙的出来个A部分,可能前面都是Introduction的begin吧,这里又要着重ABCD几下。
A部分的主题是:当前P2p botnets和它们的弱点(作者之前说了那么多,就是说集中式不行啦,赶紧换P2p吧,但是发现自己其实不是第一个提出的,nnd之前已经有个搞这个了,怎么办,我也要发论文混饭啊,怎么办,找找他的缺陷吧)
作者很直接的说既然集中式不行,自然而然botmaster就应该搞p2p结构啊。而且你们这些hacker啊,你们还真是做了啊,太过分了,看看吧,就这几年,你们就做了[Slapper, Sinit, PhatBot, Nugache]这么多P2p botnet,哎,真实惨不忍睹啊。来看看你们的高级别恶行吧:首先说Slapper,这家伙看到Bootstrap过程容易被防御者利用而摧毁botnet,就builds a list of known bots for each infected computer during propagation来去除bootstrap. (这句我不是不会翻译,而是我不懂啊,到底你比peacomm高级到哪里了?什么?build a list of known bots? 这个不就是bootstrap么,4年后横空出世的peacomm都没有解决这个问题,都还要Bootstrap的,你就不要了,看来我还是要去看他的源文献的了【An analysis of the slapper worm, IEEE S&P 杂志,2003】)。Sinit就更牛了,连公钥加密都用到升级认证了【这个我也要好好看看,Sinit p2p Trojan analysis】;再说Nugache也attempts to实现加密和混淆控制信道来逃避检测(什么叫试图?到底有木有实现啊?哎,看论文吧,Ping wang不能这么不严谨啊,【Bot software looks to improve peerage,2006/5】)
虽然上面表扬了前期的P2p worm的工作,但是作者还是要鄙视一下他们,哥们,光靠直接迁移p2p协议可不会做出一个完美的botnet啊,不懂啊,不懂哥教你啊。怕什么。你看你们有多么的不成熟啊:
I.B摧毁地球还是靠哥吧:看看哥提出的hybrid p2p botnet*********************************
既然小弟们不努力,只有靠哥出手了。此时,作者非常正义而无私的提出,要想做一个超级大坏人,应该做到以下几点:
为了能够做到以上,哥正式宣布,我们要有以下特点:
顺便提下论文结构:
II 看看相关工作
直接翻译吧:
botnets最近很火,03年, [R.Puri: bots&botnet: An overview,2003]给了一个overview,McCarty【Botnets:Big and bigger, IEEE S&P2003】介绍了使用Honeynet来监控botnets。Arce和Levy很好的分析了Slapper worm怎么构建p2p botnet。Barford和Yegneswaran【an inside look at botnets】对过去出现的几个botnets惊醒了深入和系统的剖析(我去看下啊,到底搞了那几个:Agobot 2002/10, SDBot 2002/10, SpyBot 2003/4, GT Bot 1998/4. nnd,果然都是经典的啊)。
当前的研究集中在:监控和监测。
较少关于botmaster会如何改进他们攻击技术的研究。
介绍一个哥的工作:
******************************
偶的工作和【army of botnets】是同时独立进行的,(心里郁闷啊,既生亮何生瑜),这哥们提出了【super-botnet】:which is a super-size botnet by inter-connecting many small botnets together in a peer-to-peer fashion. 然而(总得挑点刺啊),这哥们忽略了两点:
*****************************
III 哥提出的Hybrid p2p botnet结构
III.A 对Bots的分类
补充说明:只有Servent会被推荐进入peer-lists, 包括client bots和servent bots的所有bots会主动连接它们Peer-lists中的Servent bots来retrieve command。一般来讲,Servent不会改变他们的IP地址,这种设计增加了网络的稳定性。由于大量的肉鸡都在防火墙后,或者使用DHCP或者私有IP(由于IPV4的缺乏),这种分类将会变得非常重要。补课:一个Bot可以很容易判断它寄生主机的IP类型。如windows下,bot可以运行 ipconfig /all. 但并非所有的静态全局IP地址就适合当Servent bots: 因为一些在防火墙后面,很难访问到。botmaster可以依赖bots间的合作来决定such bots。eg:一个bot运行自己的服务程序,请求其peerlist中的serven bots来初始化连接到其自己的services port。如果bot可以接收到测试连接,就可以把自己作为一个servent bot,否则,老老实实当client吧。
III.B Botnet命令和控制结构
图2描述了命令与控制结构of proposed botnet:5个Servent bots和3个client bots。(peer-lists 大小为2,每个bot拥有2个servent bots的IP)。
botmaster可以通过任意bot发布命令。不管是client bots或者servent bots都会主动和周期的连接自己的peer-lists列表来retrieve 命令。当一个bot受到一个它没见过的命令(拥有unique ID),它就会立即转发命令到它peer-lists中的所有servents。
表明:在命令转发方法,给出的拓扑是无向图:undirected graph topology. A botmaster的命令在图2上可以是双向的。如果Peer-lists的大小用M表示(is denoted by M),那么这种设计就确保至少有M个地方来接受命令。
III.C 传统C&C botnets和本文提出Botnet的关系
比较传统的C&C botnets,如图1:
可以看出:Proposed botnets是对C&C botnets的拓展。(还算哥们你比较实在,没说什么颠覆之类的话)。在Servent bots作为C&C servers方面,两者是等价的。不过C&C servent数量大大增加了,并且它们之间相互通信。这些大量的Servent bots也是提出的Hybrid p2p botnet非常难被关闭的首要原因。后面我们会详细介绍这些特征在VI和VII部分。
IV Botnet的命令与控制
botnet的核心部分:command和control通信。比起C&C botnet,我们提出的botnet更鲁棒,也有更复杂的通信结构。主要挑战就是设计一个botnet:难关闭,难监控(by defenders or other attackers).
IV.A 命令验证 command Authentication
跟C&C botnet不同,我们的botnet不能从固定的预定义的地方获取命令,因此实现强认证是非常重要的。一个标准的公钥key验证应该足够了:A botmaster产生一对公私钥
【作者还给出了对C&C botnets的建议:公钥体制这么简单,也可以用到当前C&C机制中,傻子们,这样就不会被劫持了啊】
IV.B 【个性化加密key:individualized encryption key】
在Proposed botnet中,每一个servent bot i 随机产生对称密码Ki 如果用La表示bot A的Peer-list,那么它不仅包含M个Servent bots的IP,还包含这些Servent bots使用的Keys。 表示为:
通过这样的设计,每个Servent bot就会使用自己的对称密码来进行其他bot前来连接的加密。因为如果bot B希望连接 Servent B,那么它就必须拥有
这也保证了如果defender捕获了一个bot,也只能获得M个Servent bots的keys (in peerlists).剩余的botnet中加密是不会被破坏的。
IV.C 【个性化服务端口 individualized Service port】
建立在 peer-lists基础上的结构还能保证Proposed botnet的通信流量变得分散(在服务端口方面 in terms of service port)。由于servent bot需要接受来自其他bots的请求,它就必须开启服务进程来监听服务端口。如果Servent i上的服务端口用Pi表示,是可以被bot随机挑选的。这就要求peerlist更加复杂点了,看公式【2】:
这样的服务端口设计方案,有两个好处:(OMG,这就可以了,我以为有什么高级方法呢)(这个"这样"指什么?? 看来,唯一的创新就是每一个都是随机的了,但是哥们,你说清楚啊)
当然(注意了,作者为了避免以后研究者对其围攻,也要写点不足。。),随机产生的服务端口也并不都好:因为网络流量用一些特殊的端口也是Abnormal。为了克服这些,一个botmaster可以指定一个bot选择的服务端口集,特别是从标准的那些端口选,如 22(SSH), 443(HTTPS), 993(IMAPS)。此外,(这个方法,我还不清楚) 一个复杂的botmaster可以编程模仿honeyd中的服务端口实现。
V Botnet 监控by its Botmaster
另外的挑战:让botnet不容易被defender监控,但是同时,容易被botmaster监控。有了足够详细的botnet信息,botmaster可以:
这一部分,我们提供一个简单但是有效的way for botmaster 来随时监控botnets ,同时,拒绝被其他人监控。
V.A 通过动态变化的传感器监控 Monitoring via a Dynamically Changeable Sensor
(前文其实已经提到过了,这里再说一遍,看来,学术论文的冗余真实不少啊)
要监控,Botmaster发布一个report命令,告诉所有bot发布自己的消息到一个指定的肉鸡,这个肉鸡就叫做Sensor,同时report命令还附带有这个肉鸡的IP地址。每一轮的都可能使用不同的sensor host.这会阻止defender在见到真实的report命令之前知晓这个Sensor。当report命令发出之后,很有可能defender很快发现这个sensor主机,(通过Honeypot加入botnet【】【】),并且关闭或者检测这个Sensor host。为了处理这个威胁,a botmaster需要实现以下过程:
如果一个botmaster只是简单的想知道botnet的大小,可以选择一个概率性报告:在report命令中指定每个bot使用一个小概率p来决定是否报告。那么botnet大概就是X/p个bots, 如果有X个bots报告。这样的概率报告可以减小泄露的流量到report sensor。
每个bot可以使用其硬编码的公钥K+来保证其report data的机密性。除此之外,botmas应该使用几个肉鸡作为反馈数据到sensor的垫脚石(as stepping stones in retrieving the data on sensors)(作者解释:these are standard practices so we not explain more, 这个我还要研究下!)
V.B 额外的监控信息
从我们理解来看,有三个额外度量直接印象botnet攻击的效率:攻击带宽,ip地址类型,昼间动态性(diurnal dynamics)。
VI Botnet 构建 botnet construction
VI.A 基本的构建进程
Botnet的连通性有每个bot中的peerlist单独掌控。一个自然的方式来构建Peerlist就是在传播过程中构建它们。为了保证构建的botnet是连通的,初始bots应该包含几个Servent bots(所有初始bot中都包含这些ip地址)。假定每个bot中的peerlist大小指定为M。在bot程序传播过程中,peerlist将按照以下几步来完成:
einfection进程使defender通过捕获的peerlist来推断bots间的感染时间顺序变得十分困难(traceback)。在这个过程中,bot不会提供它的peerlist到reinfect它的那个bot(单向),这个很重要,因为:如果不这样,defender就可以递归的感染(或者监控)所有的Servent bots(基于它们honeypot中捕获的bot)通过以下方式:defender使用防火墙重定向那些(被俘虏的A reinfect its peerlist中的servent bots)发出的感染企图;然后接下来获得servent bots的peerlist,并且反过来再感染它们的peerlists。(这个我还看懂?这个防火墙到底怎么redirecting?? 原文:following way: defenders use a firewall redirecting the outgoing infection attemps from captured bot A to reinfect the servent bots in A's peer list ; then subsequently get the peer lists from these servent bots and reinfect servent bots in these peer list in turn)
为了通过模拟研究一个构建好的botnet的拓扑和鲁棒性,我们需要决定模拟设置。
首先,Bhagwan 【understanding availability】在03年研究了p2p 文件共享系统并且观察到50%的电脑在4-5天内会改变他们的IP。所以我们期望bots中拥有动态IP的一部分会有类似的变化规律。之外,一些在防火墙后或者NAT包装下的bots不能接受interet 连接。作者在这里说:我们不能找到一个关于这个统计的好来源,在这篇文章中我们制定25%的bots是Servent bots。
第二,【bots slim down to get tough】【washington post: The botnet trackers】指出,botnets在这些年已经将它们的大小降低到2万左右,即使可能的脆弱主机正变的更大。这样我们假定一个可能脆弱主机的数目为50万,但是botnet在到达2万后就停止增长。之外,我们假定peerlist大小为M=20,并且有21个初始的servent主机来启动botnet传播。这样,peerlist就永远都full的。
从我们的模拟实验,我们发现近以上两个构建过程是不够鲁棒的:当botnent达到2万后停止增长时, reinfection事件很少发生(大概600)。由于鉴于此,连接到servent bots也会极度不平衡:大于80%(4000)的servent bots的度小于30,而每一个21初始化servent却拥有14000~17500的度。这不是一个ideal botnet。这种建造的混合P2p几乎就退化为了C&C botnet(把初始的Servent bots当做C&C服务器)。
【Army of botnets】的构建就采用类似以上仅有"new infection 和 reinfection"两步的算法。虽然作者指出其构建的super-bot是鲁棒的,但他有一个潜在的假设:super-botnet将会有足够的reinforces在构建周期内。【注意了,注意了,下一句,让我对Ping wang印象大增,敢于挑衅啊,哈哈】 我就不翻译了,原文如下:【We believe this assumption is incorrect in a real world scenario】, botmaster为了不浪费感染力量并且防止被defender检测到,会希望他们的botnets发生足够少的infection。
为了解释这种争论,我们模拟了另外的botnet场景(将脆弱主机数量由前面的50万调整到这里的2万),并且botnet会在所有的脆弱主机被感染后停止传播。在这样的模拟下,21万个reinfection事件发生了。这次,由于重组的reinfections,构建的botnet有了一个很好的度平衡---所有的servent bots都有一个正常的分布。80%的servent都有度连接在30到150之间。
VI.B 高级构建进程
Word出问题,导致工作丢失,也没有心情继续写了,直接看文献吧。
把几个图和公式贴上:
[丢失的工作大概有下面几项: