已论证---PPPOE可以防止ARP病毒.
我已经实验过了,虽然我没有多一点的机器来完全模拟PPPOE的网络.我抓取了PPPOE认证阶段的包来论证的.认证的前2个包是这样的:
客户端发出以太网广播包,寻找PPPOE服务器(即:PADI包)
服务器用PADO包回应,此时不再是广播了.目的MAC为客户端,源MAC为PPPOE服务器.
客户端得到服务器的MAC,正常的通讯就开始了.
PPPOE能真正防止ARP的原因不在于,PPPOE接口IP和以太网接口IP不同,也不是通讯建立后不再用MAC等原因.
而是因为PPPOE根本就没用的ARP协议,尽管它是用以太帧封装的,但它获得服务器MAC的方法不是用ARP协议,而是通过PADI包,所以它可以防止ARP攻击.
但又出现了一个新的问题,如果我写一个类似ARP攻击的病毒,让它只回应PADI包,那会怎样呢? .................不是这样的吧?....应该是掩码的缘故的吧? 和掩码无关.因为PPPOE根本不使用ARP协议,他对MAC的获得不是通过ARP协议的,所以根本就不怕ARP病毒.当PPPOE建立连接后用的是p-to-p形式,也不需要ARP协议,所以就不怕ARP病毒.
只是我想到一种类似ARP病毒的,专门攻击PPPOE协议的新病毒. 我也是这样认为的,我就给每个用户的DHCP分配的时候都是255.255.255.255的掩码,并且没有网关和DNS地址,然后PPPOE上网,这样,每台机器除非他自己修改IP,不然,任何非本网段的IP都将只能通过PPPOE,因为本地连接里面没有网关地址,而且掩码是255.255.255.255,所以也无法进行广播,基本就解决了广播问题,也就没有ARP问题了! 我想知道,大家都是二层直连的话,默认 IP 都是 169.254.x.x/16,那么 ARP 会对这部分 802.3 的起作用,那么 ARP 会最多将他们搞成什么样呢 我也见过platinum描述的环境,pppoe下来不是255.255.255.255而是其他,可能会有N个ip,那依然还需要ARP吧? PPPOE应该是P-TO-P链路,不需要MAC的. 每个PPPOE的连接都有一个唯一的会话号码 转一个几个月前看到过的帖子,和你所设想的问题相关,作者名已找不到了(致敬)
PPPoE验证与利用【2006-09-19 08:10】【】【IT专家网论坛】 一、 前言
近年来,网络数据业务发展迅速,宽带用户呈爆炸式的增长,运营商在采用xDSL,LAN,HFC,无线等多种接入方式的同时,为了构建一个可运营、可管理、可盈利的宽带网络,十分关心如何有效地完成用户的管理,PPPoE(PPP over Ethernet)就是随之出现的多种认证技术中的一种。
1、PPP over Ethernet
1998年后期问世的以太网上点对点协议(PPP over Ethernet)技术是由Redback 网络公司、客户端软件开发商RouterWare公司以及Worldcom子公司UUNET Technologies公司在IETF RFC制的基础上联合开发的。通过把最经济的局域网技术——以太网和点对点协议的可扩展性及管理控制功能结合在一起,网络服务提供商和电信运营商便可利用可靠和熟悉的技术来加速部署高速互联网业务。它使服务提供商在通过数字用户线、电缆调制解调器或无线连接等方式,提供支持多用户的宽带接入服务时更加简便易行。同时该技术亦简化了最终用户在动态地选择这些服务时的操作。
PPPoE 基于以太网的点对点协议,当前的 PPPOE 主要被 ISP用于 xDSL 和 cable modems 与用户端的连接,他们几乎与以太网一样。 PPPoE 是一种标准的点对点协议 (PPP), 他们之间只是传输上的差异: PPPoE 使用 modem 连接来代替普通的以太网。一般来说 , PPPoE 是基于与用户认证和通过分发 IP 地址给客户端。一个 PPPoE 连接由客户端和一个访问集线服务器组成,客户端可以是一个安装了 PPPoE 协议的 windows 电脑。 PPPoE 客户端和服务器能工作在任何以太网等级的路由器接口
2、网通的宽带接入方式
网通的宽带接入方式通常都是LAN的方式,即所有的用户都位于一个大的局域网中,客户端要上网,需要先使用相应的账号进行PPPoE拨号,通过验证之后获得公网IP,然后才能上网。
二、PPPoE验证过程
1、PPPoE验证过程
首先了解一下PPPoE验证过程:
假如客户端要通过一个局域网与远程的PPPoE服务器进行身份验证,这时,它们会有两个不同的会话阶段,Discovery阶段和PPP会话阶段。当一个客户端想开始一个PPPoE会话时,它必须首先进行发现阶段以识别对端的以太网MAC地址,并建立一个PPPoESESSON_ID。在发现阶段,基于网络的拓扑结构,客户端可以发现多个PPPoE服务器,然后从中选择一个,不过通常都是选择反应最快的一个。Discovery阶段是一个无状态的阶段,该阶段主要是选择接入服务器,确定所要建立的PPP会话标识符Session ID,同时获得对方点到点的连接信息;PPP会话阶段执行标准的PPP过程。当此阶段完成,通信的两端都知到PPPoESESSON_ID和对端的以太网地址,它们一起定义了一个唯一的PPPoE会话。这些步骤包括客户端广播一个发起分组(PASI),一个或多个PPPoE服务器发送响应分组(PADO),客户端向选中的服务器发送请求分组(PADR),选中的PPPoE服务器发送一个确认分组(PADS)给客户端。当客户端接收到确认分组,它可以开始进行PPP会话阶段。当PPPoE服务器发送出确认分组,它可以开始PPP会话。当客户端在指定的时间内没有接收到PADO,它应该重新发送它的PADI分组,并且加倍等待时间,这个过程会被重复期望的次数。如果客户端正等待接收PADS,应该使用具有客户端重新发送PADR的相似超时机制。在重试指定的次数后,主机应该重新发送PADI分组。PPPOE还有一个PADT分组,它可以在会话建立后的任何时候发送,来终止PPPOE会话。它可以由客户端或者PPPOE服务器发送。当接收到一个PADT,不再允许使用这个会话来发送PPP业务在发送或接收PADT后,即正常的PPP不能使用时,可以使用PADT,一旦PPPOE会话开始,PPP数据就可以以任何其它的PPP封装形式发送。所有的以太网帧都是单播的,身份验证是发生在会话阶段的,PPPoE会话的SESSION_ID一定不能改变,并且必须是发现阶段分配的值。
2。 PPP over Ethernet基本帧格式
建立一个以太网上点对点协议会话包括两个阶段:1。 发现(Discovery)阶段。在Discovery过程中用户主机以广播方式寻找可以连接的所有的接入集线器,并获得其以太网MAC地址。然后选择需要连接的主机并确定所要建立的PPP会话识别标号。2。 PPP会话阶段。用户主机与接入集线器根据在发现阶段所协商的PPP会话连接参数进行PPP会话。因此对应于这两种过程,以太网上点对点协议帧格式(如图2)也包括两种类型:发现阶段的以太网帧中的类型字段为0x8863;PPP会话阶段的以太网帧中的类型字段为0x8864,它们均已得到IEEE的认可。PPPoE包中的版本(VER) 字段和类型(TYPE)字段长度均为4比特,在当前版本PPPoE建议中这两个字段值都固定为0x1。代码(CODE)字段长度为8比特,根据两阶段中各种数据包的不同功能而值不同。在PPP会话阶段CODE字段为0x00,发现阶段中的各种数据包格式将在下面详细介绍发现阶段时给出。版本标识号码(SESSION_ID)字段长度为16比特,在一个给定的PPP会话过程中它是固定不变的。值0xffffff为保留值。长度(LENGTH)字段为16比特长,指示PPPoE净荷长度。发现阶段PPPoE载荷可以为空或由多个标记(TAG)组成,每个标记都是TLV(类型-长度-值)的结构;PPP会话阶段PPPoE载荷为标准的点对点协议包。
3。 发现(Discovery)阶段的详细介绍
一个典型的发现(Discovery)阶段共包括4个步骤:
1、主机发出PPPoE有效发现启动(PADI)包。以太网目的地址为广播地址0xffffffffffff, CODE字段为0x09,SESSION_ID为0x0000。PADI包必须至少包含一个服务名称类型的标签(标签类型字段为0x0101),向接入集线器提出所要求提供的服务。
2、接入集线器收到在服务范围内的PADI包后,发送PPPoE有效发现提供(PADO)包以响应请求。其CODE字段为0x07 ,SESSION_ID仍为0x0000。PADO包必须包含一个接入集线器名称类型的标签(标签类型字段为0x0102)以及一个或多个服务名称类型标签,表明可向主机提供的服务种类。
3、主机在可能收到的多个PADO包中选择一个合适的,然后向所选择的接入集线器发送PPPoE有效发现请求(PADR)包。其CODE字段为0x19 ,SESSION_ID仍为0x0000。PADR包必须包一个服务名称类型标签,确定向接入集线器请求的服务种类。
4、接入集线器收到PADR包后准备开始PPP会话,它发送一个PPPoE有效发现会话确认(PADS)包。其CODE字段为0x65 ,SESSION_ID为接入集线器所产生的一个唯一的PPPoE会话标识号码。PADS包也必须包含一个接入集线器名称类型的标签确认向主机提供的服务。当主机收到PADS包确认后,双方就进入PPP会话阶段。
三、PPPoE验证的利用
从上面的过程我们需要注意两点:发现阶段是广播方式进行的。会话阶段是单播;客户端通常选择反应最的PPPOE服务器进行身份验证和接入,什么是反应快?我们可以理解成客户端将与最近的PPPOE服务器进行身份验证。
利用思路:这就是今天要说的关键,如果我们架设一个PPPOE服务器,那么与我们同一交换机或集线器(通常是一个楼层)的用户都将会选择这个服务器进行接入和身份验证,而不会去寻找远方的PPPOE服务器。
下面说一下利用过程:
1、架设PPPOE服务器。架设PPPOE服务器,原作者是利用Windows Server2003的“路由与远程访问”服务来架设的,然后安装PPPoE驱动,这样使得路由与远程访问服务增加了PPPOE服务。当然也可使用Linux系统,网上有一篇关于Linux+PPPoE服务器的文章。
2、 将PPPOE身份验证设为未加密方式(具体情况还得取决与PPPOE服务器),不用多说,这主要是为了方便明文嗅探。
3、 使用Sniffer进行嗅探。
四、解决方案与结束语
有关解决方案还在琢磨之中。偶所处地问题相当严重 :victory: 兴奋 PPPOE和PPP差不多
模型和VPN很相识......知道了不 个人估计内网建VPN,不能防止ARP病毒,不过要实验才能确定。至少IP隧道应该是。
[ 本帖最后由 ssffzz1 于 2006-11-23 10:40 编辑 ] 原帖由 xqs428 于 2006-11-23 09:09 发表
PPPOE和PPP差不多
模型和VPN很相识......知道了不
为何差不多?相似在哪里?不妨给大家解释解释一下? 原帖由 ssffzz1 于 2006-11-23 10:37 发表
个人估计内网建VPN,不能防止ARP病毒,不过要实验才能确定。至少IP隧道应该是。
不同的 VPN 实现方式不同,原理也大不相同
比如 OPENVPN 及 PPTP,一个可以通过 arp 命令看到其他 client 的 MAC(有可能是虚拟的,没验证过),一个看不到
本来嘛,pppoe都给以太网帧包起来了,当然不怕ARP了
但802.1X认证后并没将以太网帧包起来再形成新的帧,所以就怕ARP,很简单啊
页:
[1]
2