有pppoe的chap认证。
--------------------------------------几个链接------------------------------------
%20supplicant%20link%20%C9%ED%B7%DD%D1%E9%D6%A4%20chap&lm=0&od=0
---------------------------------------------------------------------------------------
这个协议的认证过程和分配IP过程是在数据链路层进行的,所以嗅探就不能用ip only过滤了.简单理解就是先认证后分配IP ,
认证分两步:
先通过ppp lcp(用lcp过滤)协商是用pap还是用chap认证.我这儿是chap,然后再chap认证.
分配IP :
使用ppp ipcp协议分配IP.
分配IP 后之后就可以上网了.
具体上网过程中的用户控制还没有涉及.
其中使用的协议有: ppp lcp /ppp chap /ppp ipcp ,都属于ppp协议一个,分别用于不同的阶段.
-----------
-------------------------知识点--------------------------------
CHAP全称为:Challenge Handshake Authentication Protocol(挑战握手认证协议),主要就是针对PPP的,除了在拨号开始时使用外,还可以在连接建立后的任何时刻使用。
CHAP 协议基本过程是认证者先发送一个随机挑战信息给对方,接收方根据此挑战信息和共享的密钥信息,使用单向HASH函数计算出响应值,然后发送给认证者,认证 者也进行相同的计算,验证自己的计算结果和接收到的结果是否一致,一致则认证通过,否则认证失败。这种认证方法的优点即在于密钥信息不需要在通信信道中发 送,而且每次认证所交换的信息都不一样,可以很有效地避免监听攻击。
CHAP缺点:密钥必须是明文信息进行保存,而且不能防止中间人攻击。
使用CHAP的安全性除了本地密钥的安全性外,网络上的安全性在于挑战信息的长度、随机性和单向HASH算法的可靠性。
---------------------------
知识点------------------------------------------
其中被认证的电脑(我的)最终需要给认证服务器发送一个包含用户名和密码的数据包.其中包含了用户名和密码,通过抓包分析,我本地的广-电对于用户名是明码的,密码是被加密过的一个16字节的值(我的,未必通用),公式下面有,是通用的,未必适合自己.
----------------------------------------------
知识点-----------------------------------------
Value:至少是一个字节,可变长,按网络序传输,挑战/响应信息在此字段中说明,
挑战信息必须是随机的,在每次认证时改变,挑战信息是由应用在实际实现
中自己定义的,RFC中并没有规定挑战信息的具体格式;
响应值按下面的公式进行计算:
Response=HASH(Identifier+secret+Challenge)
其中“+”号表示将各数据在内存中串起来,其中HASH算法可以使用MD5,所以计算出来的HASH值是固定的,16字节长。
Name:至少一个字节,用来标志所传的这个包,必须是以'\0'或“\r\n”结束,
Name字段的长度可根据Length和Value-Size计算出来。-----------------------------------------
知识点-----------------------------
由上面这个知识点可以看出,我这儿的Name字段包含的是用户帐号名,value包含了加密后的密码.难以破解的是这个密码每一次登录都是不同的,因为hash公式中的变量是论证服务器在每次登录时随机给出的,必须加上破解的算法才能重新编一个自己的客户端.这样难点就集中在了算法破解上.
具体步骤是通过跟踪内存复制汇编代码,然后编入自己的程序.有时间再来做.
有些操作思路可以参考以下:
-----------------------------------------
知识点-----------------------------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进行嗅探。
-----------------------------------------
知识点-----------------------------
阅读(7479) | 评论(0) | 转发(0) |