Translator

Chinese (Simplified) flagItalian flagKorean flagChinese (Traditional) flagPortuguese flagGerman flagFrench flagSpanish flagJapanese flagArabic flagRussian flagGreek flagDutch flagBulgarian flagCzech flagCroatian flagDanish flagFinnish flagHindi flagPolish flagRomanian flagSwedish flagNorwegian flagCatalan flagFilipino flagHebrew flagIndonesian flagLatvian flagLithuanian flagSerbian flagSlovak flagSlovenian flagUkrainian flagVietnamese flagAlbanian flagEstonian flagGalician flagMaltese flagThai flagTurkish flagHungarian flagBelarus flagIrish flagIcelandic flagMacedonian flagMalay flagPersian flag
防骗资料 服务器架设 淘宝技巧 网页制作 新闻摘要 非技术
lnmp 服务器架设教程
国外VPS 招调工 linux学习 技术文档 linux编程 ros 相关

破解ADSL密码–自架PPPOE服务器密码拦截的方法讨论

首先需要申明,写这篇文章的目的并不是为了鼓励大家拦截普通用户的密码,而是为了让管理者能更清楚地认识到网络管理中的一些漏洞,防止有心之人利用。 

写的有些啰嗦,谅解。 

这篇文章可以指导你使用虚拟机免费地搭建一个基于RouterOS的PPPOE服务器,并且指导使用工具截获在此PPPOE服务器上的认证数据包,其中包括用户名和密码等。
      PPPOE现在应用很广泛,很多小区,学校,社区都在使用,ADSL也使用PPPOE,它的技术原理就是把PPP帧作为净荷封装在普通以太网帧中,从而使PPP帧可以在以太网中传输,利用PPP的优点(验证,控制,计费等),解决现有以太网中存在的一些问题,如先天缺陷ARP协议,具体不再多说,要详细了解的可以看RFC2516(PPPOE),或者搜索引擎。
一、工具:
1.抓包工具,sniffer或者wireshark;抓取网络上的数据包并分析其内容,
2.PPPOE的服务器端,如果是LINUX,推荐使用RHEL5,镜像中包含PPPOE的服务端,
在WINDOWS下我还不知道具体的服务器端什么比较好用,试用过的RASPPPOR作为SERVER功能很简单,只能更改用户的link speed,上行或下行,并且不能更改验证模式,最大用户数10个,功能达不到要求。
此文章中的PPPOE server使用router OS内建的功能实现,我使用的ROS版本是2.9,具体的不清楚,因为就用过这一次。
3.虚拟机,我用的VMware Workstation6.5,这是用来安装ROS的硬件平台。
4.其他,通用的一些命令行工具就可以了。
二、安装和配置
(1)、安装
首先安装ROS:在VMWARE中创建一个新虚拟机,按照以下值配置:OS选择Other/Other,单处理器,64-256M内存,1G硬盘,网卡需要选择桥接(bridged)模式,其他的都Default就可以了,需要注意的是,并不是配置越高越好,推荐你就选择我给出的值,原因是ROS的某些版本不支持双核或多路CPU,内存的大小和硬盘的类型(Only-IDE)都有限制。(查看了ROS的official Site)。
  

下载 (33.79 KB)
2010-1-7 13:23

创建好虚拟机之后就可以安装ROS了,很简单,如果你有ROS光盘,插入光驱,在虚拟机上选择物理驱动器,然后进入虚拟机的BIOS里设置光盘启动,重启就可以看见引导界面了。
如果没有光盘可以下载一个ISO镜像,然后CD/DVD驱动器设置为使用镜像文件,设置CMOS,重启即可引导。
在此我使用镜像文件来引导。
引导解压Linux内核后可以看见一个ROS组件选择的界面:welcome to mikrotik router software installation,使用方向键移动光标,空格选择,这里只作为PPPOE server用,所以选择system和ppp就可以了,选完按I安装,然后屏幕下面提示是否保存旧配置,按Y,然后提示磁盘上的所有内容将清除,继续按Y,安装了之后提示回车重启,按,然后在BIOS中把启动顺序设置好(硬盘第一),重启即可进入ROS控制台,默认用户名是admin密码空,登陆进去后开始设置ROS,由于在虚拟机中ROS操作很不方便,推荐使用TELNET登陆,不过首先要设置IP地址,进去可以看到由字符组成的MiKroTik几个字,然后应该还会问你是否查看软件授权许可(试用24小时),按N,然后就可以开始命令配置了,默认的prompt是[admin@MikroTik] >,看到这个说明你已经安装成功了。 

(2)、配置
1.基础配置
这里先说说ROS的操作特点,基本的命令行操作,熟悉CMD里的netsh命令的人应该能很快的上手,在根提示符下可以输入关键字而进入特定的关键字上下文,也就是我下面提到的子命令,总而言之就是树状结构,和文件夹的结构很类似。
在任何地方都可以输入?来得到帮助,在任何地方都可以输入print来显示当前上下文中的对象配置,在任何地方都可以输入export来输出所有的命令配置清单。
不详述了,需要了解的请搜索引擎。
这里我们配置接口的IP地址。
[admin@MikroTik] >interface      接口子命令
[admin@MikroTik] interface>print          显示接口
在这里可以得到网卡的名字,显示在name字段的就是,默认是ether1,即以太网接口,设置IP地址的时候要用到,可以改个易记忆的名字,这里改为lan
[admin@MikroTik] interface>set 0 name=lan        更改网卡名字,0代表第一块网卡
[admin@MikroTik] interface>..       回到上级菜单,这里是两个点,下同
[admin@MikroTik] >ip               进入IP子命令
[admin@MikroTik] ip>address          进入地址子命令
[admin@MikroTik] ip address>add address=192.168.1.2/24 interface=lan
[admin@MikroTik] ip address>..
[admin@MikroTik] ip>..
[admin@MikroTik] >system              进入系统子命令
[admin@MikroTik] system>identity               进入标识符子命令
[admin@MikroTik] system identity >set name=”TKMARK”     更改标识为TKMARK
[admin@TKMARK] system identity >..
[admin@TKMARK] system>..
[admin@TKMARK] >
这条命令设置lan接口的ip地址为192.168.1.2,掩码为24位即255.255.255.0,这里要注意,此地址要和主机上的网卡的IP地址在同一网段才能通信,下面会说明。
然后试着ping一下主机的IP,看一下是否连通了,如果不通,首先检查主机上的防火墙(因为是以桥接方式连接,所以防火墙是会阻止虚拟机的流量的),看防火墙里是否设置了阻止ICMP消息,建议先关闭防火墙,否则比较麻烦。
注意:如果主机有一个以上的网卡(包括loopback和wireless等),那么必须在其他网卡的属性中取消勾选vmware bridge protocol(虚拟机的桥接协议),只在要和虚拟机通讯的那个网卡上勾选此协议,这样虚拟机就只和此网卡桥接了。
接下来设置此网卡的IP地址和ROS中设置的IP在同一网段,然后试着用telnet在主机上登陆ROS,成功后开始下一步设置。 

2.地址池设置
地址池在PPPOE server中的作用就是给客户端分配IP地址,当然在实际应用中,我们通常是通过NAT来上网的,这就需要配置NAT,地址池里的地址也要和ROS另外一块网卡的地址在同一网段,这里不详述。
[admin@TKMARK] >ip
[admin@TKMARK] ip>pool         地址池配置
[admin@TKMARK] ip pool>add name=”tk-pool” ranges=10.1.1.1-10.255.255.254 next-pool=tk-pool
这条语句的作用就是添加一个IP地址池,名字叫tk-pool,范围从10.1.1.1-10.255.255.254,这里给的是一个A类地址,注意在PPPOE的客户端地址分配中,是没有子网掩码的,next-pool字段就是下个地址池。
[admin@TKMARK] ip pool >..
[admin@TKMARK] ip>..
[admin@TKMARK] >
地址池配置完毕。 

3. 配置PPPOE server默认profile (客户端相关)
PPPOE server的配置是保存在本地数据库中的,我们需要对这些配置进行更改。
[admin@TKMARK] >ppp          进入ppp子命令
[admin@TKMARK] ppp>profile       进入配置文件子命令
这里系统是自动生成了两个默认配置的,分别是default和default-encryption,我们只需要对default更改即可
[admin@TKMARK] ppp profile>set default local-address=tk-pool remote-address=tk-pool use-compression=no dns-server=1.1.1.1
这里的local-address为本地服务器地址,因为并不实际应用,从tk-pool地址池读取,remote-address为远端地址,即给拨号的客户端分配的地址,也从tk-pool地址池读取,use-compression字段代表是否启用压缩,可以选yes,no或者default,默认为default,defautl就是no,dns-server就不用说了,如果有多个地址,用逗号隔开。这里我省略了几个字段,比如use-encryption,代表是否加密数据,rate-limit字段,这个比较重要,代表客户端的速率限制,单位为bps,格式为rate-limit=txbps/rxbps,txbps和rxbps在客户端方向分别代表下载和上传,服务器方向相反,t代表transmit,r代表receive,比如我在上面语句加入rate-limit=200000/100000就代表将客户端的速率限制为上传100k,下载200k,注意这里的b是bit,不是byte。
[admin@TKMARK] ppp profile>..
[admin@TKMARK] ppp>..
[admin@TKMARK] > 

4.配置PPPOE server
这个配置和第三个配置不同的地方在于这个是在interface子命令中配置,直接开始
[admin@TKMARK] >interface     进入接口配置子命令
[admin@TKMARK] interface>pppoe-server     进入pppoe-server子命令
[admin@TKMARK] interface ppoe-server>server    进入server子命令,这比较讨厌
[admin@TKMARK] interface ppoe-server server>add service-name=”tkmark” interface=lan authentication=pap default-profile=default disabled=no
这条我讲多点,service-name字段为服务名,这个是比较重要的可省略项(对客户端而言),客户端建立连接的时候,如果未指定服务名,一般情况下会选择响应速度最快的服务器,如果指定了,则指与指定服务名的服务器建立连接,当然在这里不能省略。interface字段是网卡名字,authentication字段是验证方式,默认为全部验证方式,即PAP(password authentication protocol,密码验证协议),CHAP(challenge-handshake authentication protocol,挑战握手验证协议),MS-CHAP(微软的挑战握手),这里不详述这几个验证协议,只简单说下,pap由客户端使用明文的方式发送用户名和密码给服务器验证,而chap则由一方发起一个挑战,而另一方回应由hash单向函数计算的数据(密码),发起方使用自己的密码经过hash单向函数来计算出一个值,将得到的值与对方发送的值比较,如果值一致,则验证通过,CHAP一般使用MD5算法作为hash函数的算法。MS-CHAP是微软的CHAP协议。PAP的兼容性是最好的,但是安全性最差。CHAP的安全性就高多了,密码本身不在网络上传输,但是现在提供MD5破解的网站也很多。
由于我们的目的的特殊性,我们当然只使用pap了,default-profile字段就是默认配置文件,跟上面的操作匹配,我们选择default,disable=no就不用说了。这条语句里我省略了几个字段,他们是max-mtu,max-mru,one-session-per-host,max –sessions等,这些字段跟一般设置为默认即可,mtu最大传输单元,mru最大接收单元,one-session-per-host代表是否允许多个用户使用一个账号同时在线,max-session代表最大会话数目。
到此PPPOE server的接口子命令下的配置就完成了。
使用双点返回到根提示符下[admin@TKMARK] >,准备下一步配置。 

5.配置用户
在ROS中添加用户账户,以此来验证PPPOE客户端的连接。
[admin@TKMARK] >ppp               
[admin@TKMARK] ppp>secret               进入账户设置子命令
[admin@TKMARK] ppp secret>add name=”tkmark” password=”tkmark” service=tkmark
这条语句添加一个用户名和密码都为tkmark的账号,服务名和第四步配置的服务名相同即可,此模式下省略的字段有profile,disable,limit-bytes-in,limit-bytes-out和caller-id等,profile即为配置文件,在第三步中配置完成,默认为default,所以不用指定,limit-bytes-in为限制流量的总量,注意这里是流量的总量,不是速率,即按流量计费中使用,就跟移动的GPRS包月一个道理。这里是以服务器为角色,所以In代表上传,out代表下载,caller-id字段是个字符串,用双引号括起来,就是本地标识而已。
在本文中服务器是使用本地硬盘数据库中的数据来验证的,审核和记账的功能是没有的,在平常应用中更多的是配置服务器使用外部的AAA(Authentication,Authoraziton,Accounting,验证,授权,记账,by CISCO)服务器来验证用户数据,通常是Radius服务器,RHEL5提供这个服务器程序的安装包,需要详细了解的去看RFC2865、2866。
到这里,服务器上的配置就已经全部完成了,下面我们来测试。 

三、PPPOE服务器测试
说明一下,最好找另外一台在同一广播域上的计算机来测试,因为有很小的几率你在本机上测试成功了,但是网络上的计算机却不能连接。这可能是由于物理层的问题导致的,也可能是其他的问题,这里不详述。
OK,开始测试
这里以XP作为客户端测试,回到桌面,网上邻居-属性-创建一个新的连接-下一步-连接到Internet-手动设置我的连接-要求用户名和密码的宽带连接来连接,点下一步到了输入ISP名称的页面,这里填写刚才配置的服务名tkmark,留空将连接到响应速度最快的服务器,继续下一步,填写用户名密码,这里填写刚才配置的账户,用户名:tkmark,密码:tkmark。
OK,完成,点连接,成功了,可以打开宽带连接的状态看看,服务器类型PPP,传输类型TCP/IP,身份验证PAP,服务器IP地址10.255.255.247,客户端IP地址10.255.255.246,和我们刚才配置的一样。
  

下载 (33.14 KB)
2010-1-7 13:25

如果失败,那么根据错误提示做以下操作:
用户名、密码错误:检查你在ROS上配置的用户名
和密码,或者大小写之类的疏忽,检查服务名。

远程计算机无响应:首先PING你的ROS看是否连通,然后看下你服务名是否正确,检查第二章节的所有配置无误。
调制解调器正在使用:检查你是否已经连接其他pppoe连接,比如ADSL,断开正在使用的连接,然后重连。
比较常见的就这几种,其他的就不多说了,本文的重点并不是PPPOE连接排障。
顺便提一下为什么服务名比较重要(在多服务器的环境下),是因为在PPPOE连接的开始阶段(无连接),客户端会以二层广播形式发送一个PPPOED帧,即PADI(PPPOE Active Discovery Initiation,活动发现初始化),里面包含有服务名字段,只有服务名相同的服务器才会响应,并发送一个包含PADO(Offer)的PPPOED帧给客户端,然后协商进行下一步工作,所以要找到正确的服务器,最好使用指定的服务名。 

四、PASSWORD捕获
安装抓包工具,我使用的工具是WIRESHARK,一款很强大的协议分析器。
下载好WIRESHARK的安装包之后,一路NEXT,完成后打开软件,在CAPTURE下的Interface List中选择你的物理网卡,开始捕获数据帧。
我选择的是Realtek 10/100/1000的网卡,也就是我的物理网卡(瑞昱千兆),选择后出现数据帧捕获界面,在这里你可以看到所有流经你的网卡的数据帧
但是这里面的数据量太多了,我们要对这些流量进行过滤,筛选出我们需要的信息,在filter里输入你需要筛选的协议,就可以对特定的协议进行过滤,在此我们输入pap,就可以过滤出所有的使用pap协议的pppoe帧,如图:

  

下载 (45.71 KB)
2010-1-7 13:26

Wireshark的filter有自己的语法,有一点点类似于正则表达式,非常强大,可以对协议中的某个字段进行筛选,也可以针对地址进行筛选,比如ip.addr==192.168.1.1这个语句就筛选出ip地址为192.168.1.1的数据帧,这里不再详述。
下面的操作就非常简单了,可以看到在协议类型为PPP PAP的帧中,INFO列的内容,
Authenticate-Request代表验证请求,是由客户端发给服务器的验证请求,先选择一个REQUEST类型的帧,展开内容,如图: 


 
 
 

  

下载 (44.55 KB)
2010-1-7 13:26

Authentication-Ack类型代表服务器验证成功,发送给客户端的回应,如图: 

 
 
 

  

下载 (32.61 KB)
2010-1-7 13:23

上图中显示的字符串为LOGIN OK。然后就进行下一步的PPP协商。如果验证失败,那么Authentication-Ack就会变成Authentication-Nak,服务器会发送包含Termination-Request请求的PPP的LCP(工作在PPP的LCP子层,Link Control Protocol)帧,然后进一步确认,在此不再细述PPP协议。
很多人可能已经看到PASSWORD了,在pap帧中,包含了完整的用户名和PASSWORD,而且数据帧中包含了所有能用到的信息,包括MAC地址,IP地址等等,在此有另外目的的同志就可以进行下一步的行动了。
     如果要防止别人对你进行PPP的拦截,那么只需要设置服务名为真正服务器的服务名就可以了。不过这种方式也不是很保险,目前还没不知道免疫此种认证拦截的方法,只有依靠网络管理手段去封杀,不过在傻瓜交换机上是实现不了的,也就是说,在小区中使用PPPOE拨号的人,如果没有使用带有VLAN或者端口ISOLATE功能的交换机,则无法控制此现象,由此提醒做工程的人,一定要使用管理型交换机,否则必然埋下隐患。 

写的比较匆忙,难免有错误之处,望大家指正。 

1 comment to 破解ADSL密码–自架PPPOE服务器密码拦截的方法讨论

Leave a Reply

  

  

  

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>