我们的一位销售人员问我,病毒是否有可能跨网络、VLAN 或子网传播?
我回答说病毒很可能不会,但蠕虫可能会。但当被问到如何传播时,我意识到我实际上对蠕虫如何传播并没有一个扎实的理解……
在第 2 层网络上,这很容易,但第 3 层呢(例如跨子网或 VLAN 分布)?蠕虫如何自动做到这一点?
答案1
这都是关于病毒如何运作的。你说过On layer 2 network, it is easy
。
为什么这很容易 - 想象一下 2 级网络,其中有 200 台未感染的 Windows 计算机和 1 台受感染的 Windows 计算机(假设病毒通过端口 139 和/或 445 传播)。如果这些端口打开(默认情况下是打开的),病毒将迅速传播。
那么,这里发生了什么?受感染的机器能够与子网中的所有计算机通信并检查端口 139 是否打开。病毒找到打开端口 139 的机器,然后进入这台计算机。现在其中两台将对下一台计算机执行相同的操作,直到所有计算机都被感染。
是什么让病毒如此容易传播?假设(或知道)同一子网中有 Windows 计算机。我不是 Windows 专家,但我仍然记得有 Windows 网络邻居之类的东西 - 打开它,你会看到同一工作组中的 Windows 计算机。你只需注册你的机器,同一工作组中的所有计算机都会知道你的计算机的存在。因此,病毒可能可以利用这种自动发现的未来,并获取周围的计算机列表。之后病毒就会感染这些计算机。
很多 Windows 计算机都容易受到 139 端口攻击。此端口默认打开,不幸的是,它非常危险。
现在想象一下两个子网。没有额外的配置,计算机就不能成为同一工作组的一部分。因此,病毒无法获得不同子网上的计算机列表。它不知道要去哪里。如果不连接到它们,它就无法感染它们。这就像如果你不知道我的位置,你就不能给我一个盒子一样。
这是第一个答案- 在第 2 层,很容易猜出邻近机器的地址。(192.168.0.x、192.168.0.x+1...)
第二个答案- 子网由路由器划分。大多数路由器都有防火墙。系统管理员通常会关闭路由器上不必要且危险的端口,以防止未经授权的访问和病毒传播。
即使受感染的机器知道不同子网中计算机的地址 - 防火墙也不会允许病毒传播(如果需要阻止端口)。
用简单的观点来思考这个问题。这其中并没有什么魔法。病毒是一种计算机程序。为了连接到网络中的不同计算机,这些条件应该是真实的:
- 程序知道目标 IP 地址
- 程序知道目标网络端口
- Origin 和 Destination 之间可以进行网络通信
在第二层 Windows 网络中,所有这些条件通常默认为 TRUE。
答案2
A病毒(像它的生物学对应物一样)劫持其他活动(运行受感染的程序、启动受感染的媒体)来夺取控制权(搜索其他易受感染的主机,无论是程序还是可启动媒体;最后进行破坏或其他混乱)。
A虫(也像它的生物学对应物)是一个独立的过程,寻找易受攻击的宿主(在本例中是网络上的机器)进行传播。
根据其定义,病毒不会(直接)从一台机器传播到另一台机器。蠕虫通过不同的方式从一台机器传播到另一台机器,要么直接利用目标中的某些漏洞,要么诱骗用户启动它们。