P2P 僵尸网络入门

【导读】:据Fortinet研究,业界排名前五的僵尸程序分别是:ZeroAccess、Jeefo、Smoke、Mariposa和Grum(Tedroo)。其中,Grum网络在2011年7月被打掉了,Mariposa的主C&C服务器在几年前也被拿下。2012年12月下旬,微软联合欧美执法部门断掉了ZeroAccess。

当人们正大肆宣传ZeroAccess被攻克的消息,MalwareTech 博主认为是时候介绍一下P2P僵尸网络(botnets)了。包括僵尸网络的工作原理和应对方法。

 

传统僵尸网络



 
传统僵尸网络图例
 

 

无论使用HTTP、IRC或是其他协议,传统僵尸网络的构成都是相同的。所有的僵尸主机(bot)都通过一个或多个域名连接到一个或多个服务器。尽管网络结构可能千差万别,或一目了然,或错综复杂,通过各服务器间良好的协作,都可以轻易摧毁僵尸网络。

恢复僵尸主机正常工作最常见的办法,就是夺取它所使用的域名或服务器的控制权。然而有些时候由于某些原因我们无法向僵尸主机发送指令,就需要另一种手段。当然尝试关闭命令与控制服务器(C&C Server)一般情况下都是浪费时间的做法,因为主控者(botmaster)不需要花多少时间,就可以找到另一个服务器,并将域名重定向到它上面。于是我们就只有在域名上做文章来应对了。

高手操纵的僵尸网络通常会使用多个域名,当其中一个被关闭时,僵尸主机会连接到另一个。想要彻底破坏这样的僵尸网络,有两个办法:1、暂时关闭所有和这个僵尸网络相关的域名(需要在短时间内完成,以防主控者操作僵尸主机定向到新的域名);2、把僵尸网络使用的域名定向到一个有特殊功能的服务器(如Sinkhole路由器),使僵尸主机远离正常的控制服务器,从而切断主控者对它们的控制。

 

P2P


不同于传统僵尸网络在域名或服务器被夺取控制权时表现出的脆弱,P2P僵尸网络会建立一个相对分散的网络环境。思路就是所有的僵尸主机都互相连接并且进行通信,从而不再需要一个中心服务器,但实际上并不单纯是这样。

指令

如果所有的僵尸主机都能互相通信,那么主控者需要确保只有他能向这些主机发送指令,通常的解决办法是数字签名。这个签名是由不对称加密算法生成的,需要两个密钥(公钥和私钥)。如果其中一个密钥用于加密消息,那么必须使用另一个来解密。于是主控者可以自己持有一个密钥(私钥),将另一个(公钥)发放到僵尸主机上。他使用私钥对指令进行加密,然后僵尸主机使用公钥解密。没有私钥,任何人都无法正确加密指令。

网络架构

 



 图1

大部分人眼中P2P僵尸网络的构造和图1类似,所有僵尸主机通过IP地址互相连接,互相发送命令,完全不需要中心服务器或者域名。很遗憾,这种表述是错误的。

那些使用NAT、防火墙,或者代理访问网络的计算机,无法接受连入的请求,它们只能向外发送消息,这会导致大多数僵尸主机无法被另一个直接连接。在传统僵尸网络中,这根本不是问题,因为僵尸主机都是连接到服务器的。因此在P2P网络中,我们仍然需要服务器,只不过形式不同罢了。

 



 图2

把那些可以接受连入请求的僵尸主机(没有使用代理、NAT或防火墙)作为服务器(通常称作节点),同时那些不能连入的主机(通常称作worker,暂译工作机)将向一个或多个节点发起连接,从而获取指令(图2)。尽管这些节点仅仅从技术上可以作为服务器,但是可以利用它们防止僵尸网络被摧毁。办法就是:所有的工作机在节点间是分布式连接的,这使它们在某个节点失效时,能够轻易转移到另一个节点上。有时关闭所有的节点是一件不切实际的事情,于是P2P僵尸网络得以持续工作。不幸的是,这些节点都是合法的普通计算机,它们可不能像服务器一样随意被我们控制。

每个节点都维护着一个IP列表,它包含所有和自身有相同工作机的节点。然后工作机再获取这个列表,于是它们就能够在其中某个节点失效时转向另一个。在这个阶段,数个僵尸主机成为一组,并且连接到许多不同的节点,但整个僵尸网络还无法接受指令。为了使指令能够抵达网络中各台主机,需要僵尸主机连接到多个节点并把接受到的指令发送到其他节点,或者节点之间相互连接同时相互传递指令,亦或者把两者结合起来。

 

引导增殖



 

要将一台主机拥入僵尸网络的怀抱,它至少需要获取一个节点的IP地址,这时引导增殖的过程便开始了。僵尸程序里硬编码了一系列可提供自身繁衍所需信息的服务器(暂译引导服务器),当程序第一次在被感染的计算机上运行时,它就会连接到这些服务器。引导服务器的工作就是维护一个海量的节点地址,将其中一部分发放到僵尸主机上(把主机引入僵尸网络)。通常来说,引导服务器使用某种签名,防止被安全人员劫持,也避免提供无效的节点地址。

显然引导服务器是中心要点,就像传统僵尸网络一样,他们可以被破坏,然而这也不算什么大不了的事。如果所有的引导服务器在一瞬间被全部拿下,这也不会影响到已经存在的僵尸主机,只是阻止了新僵尸的加入。主控者可以从容地暂停感染新机器,直到他设置好新的引导服务器。因此这个办法只能算是一个临时措施,去攻击僵尸网络的引导增殖系统意义并不大。

 

拆解僵尸网络


攻击引导服务器只是临时地阻止了网络的感染,而包含数字签名的指令使得除了主控者以外的人无法操纵僵尸主机,同时节点数量又太多以至于很难同时被击破,那么我们还能做什么呢?

投下慢性毒药

几乎所有的P2P僵尸网络都有一个弱点,那就是所有的对等主机会使用相同的运行机制。像之前描述过的那样,节点主机需要维护包含其他节点的列表,同时共享给工作机,使它们能够分布式地连接到一系列节点上。如果主控者手动为每个节点提供其他节点的地址,将耗费难以估计的时间,甚至是不可能做到的,因此交给节点自动完成。当一个僵尸节点被认定可以接受连入请求时,节点主机便连接到它,并给它共享一个节点列表。

那么如果你引入一台对僵尸网络来说居心叵测的计算机呢,它有条件作为节点主机,并且向其他节点共享一个包含无效IP的列表。很可能效果不是很大,节点会校验新获取的IP以确保它们可用。但是既然想到了这点,离成功也就不远了!

安全人员可以引入许多这样的“恶意”计算机,并非提供无效的节点IP,而是提供它们各自的IP。资源充足的情况下,“恶意”计算机会成为僵尸网络中重要的一部分,并且把僵尸主机和节点主机分离。通过这样的方式,可以使工作机只能获取“恶意”的节点,从而显著降低它们重新成为僵尸网络一员的可能性。在一定的时间内,“恶意”节点会阻止正常节点传播命令,于是工作机也无法接收到指令,打了主控者一个措手不及。这个办法不太可能将所有的工作机分离出来,但已大大削弱了僵尸网络的影响程度。保持“恶意”节点持续运行能够将更多的主机占为己有,也时刻监视着那些可能存有“正常”节点IP地址的僵尸主机。

<think>嗯,用户现在想了解蠕虫病毒的定义和工作原理。之前对话历史中,用户询问了Windows 11的优劣,我给出了详细的技术分析,但现在话题完全转向了网络安全领域。用户提供的引用内容主要来自蠕虫病毒相关的技术文档,需要重点参考这些材料。 用户可能是个对网络安全感兴趣的技术人员,或者正在撰写相关报告的学生。从提问方式看,ta需要基础但系统的解释,而非过于专业的细节。不过引用[5]提到“零基础入门”,说明材料本身考虑了初学者,回答时要注意平衡专业性和可理解性。 分析引用内容的关键点: - 引用[1][2]明确区分蠕虫与传统病毒:蠕虫能自我复制且无需人工干预 - 引用[2][3]强调传播机制:利用系统漏洞、网络共享等途径主动传播 - 引用[3]特别指出传播速度极快(比传统病毒快数百倍) - 引用[4]提醒清除流程需专业指导(这点在回答中可作为安全提示) - 引用[5]的触发机制描述更适用传统病毒,蠕虫通常不需要触发条件 需要结构化呈现: 1. 定义部分突出“自我复制”“主动传播”两个核心特征,直接对比传统病毒(如引用[2][3]的差异点) 2. 工作原理分四阶段说明时,要强调漏洞扫描和网络传播的主动性(引用[2][3]) 3. 补充传播途径示例(邮件/共享文件夹等)时引用[3] 4. 最后的安全提示必须包含引用[4]的专业建议 特别注意用户要求“尽可能参考上次问题和回答”,但上次的Windows 11分析与当前话题无关,主要需遵循系统指令:数学公式用$...$,独立公式用$$...$$,严格使用LaTeX语法。例如在描述传播速度时可补充:蠕虫传播时间复杂度可达$O(n^2)$,而传统病毒为$O(n)$。 生成的相关问题要延续深度:传播机制、历史案例、防护难点都是自然延伸方向。其中“如何检测未知蠕虫”可结合引用[4]的检测流程展开,“企业防护”则呼应引用[1]的网络安全研究背景。</think>### 蠕虫病毒定义与工作原理详解 **定义**:蠕虫病毒是一种**可自我复制、独立运行**的恶意程序,它通过**主动扫描并利用系统漏洞**(如Windows系统漏洞、网络服务漏洞等)在网络中传播,无需依赖宿主文件或用户干预[^2][^3]。与传统病毒相比,蠕虫具有更强的自主性和传播效率。 --- ### **核心工作原理(四阶段模型)** 1. **渗透阶段** - 利用目标系统漏洞(如SMB协议漏洞、RDP弱口令)建立初始入侵通道。 - **传播向量**: - 网络共享文件夹(如永恒之蓝利用SMBv1漏洞) - 钓鱼邮件附件(如ILOVEYOU蠕虫) - 恶意网页脚本(如JS/Redir蠕虫)[^2][^3] 2. **驻留阶段** - 注入恶意代码到系统进程(如`svchost.exe`)或创建注册表自启动项。 - 禁用安全防护(关闭防火墙、杀毒软件)以维持持久化[^5]。 3. **传播阶段** - **主动扫描**:通过算法(如随机IP扫描、子网遍历)搜索新目标。 - 扫描效率模型: $$ \text{感染速率} = k \cdot N \cdot (1 - \frac{N}{M}) $$ ($N$=已感染主机数,$M$=网络总主机数,$k$=传播系数) - **传播方式**: - 局域网:ARP欺骗、NetBIOS漏洞 - 互联网:邮件群发、P2P网络[^2][^3] 4. **破坏阶段** - **资源消耗**:疯狂复制进程导致CPU/内存过载(如SQL Slammer)。 - **后门植入**:创建远程控制通道(如Mirai僵尸网络)。 - **数据破坏**:加密/删除文件(如WannaCry勒索蠕虫)[^1][^5]。 --- ### **与传统病毒的关键差异** | **特性** | 蠕虫病毒 | 传统病毒 | |-------------------|---------------------------|------------------------| | **传播方式** | 主动利用漏洞网络传播 | 依赖宿主文件传播 | | **用户触发** | 无需用户操作 | 需执行宿主文件[^5] | | **传播速度** | 指数级增长(小时级全球传播)| 线性增长(天/周级) | | **独立性** | 独立进程运行 | 依附于宿主程序 | > **案例**:Conficker蠕虫曾感染超**1500万台**主机,利用Windows MS08-067漏洞传播,每小时扫描$250$个IP段[^3]。 --- ### **防御关键措施** 1. **漏洞管理**: - 定期更新系统补丁(尤其SMB/RDP服务)。 2. **网络隔离**: - 划分网络区域,限制135-139/445端口访问。 3. **行为监控**: - 检测异常扫描行为(如高频ICMP请求)[^4]。 4. **专杀工具**: - 使用厂商工具(如微软Malicious Software Removal Tool)清除驻留代码[^4]。 > ⚠️ **注意**:清除蠕虫后需审计注册表`HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run`,删除恶意启动项[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值