谈谈最近一段日子对校园网客户端拨号程序的研究过程以及一些心得吧。
首先,涉外的同学们应该都知道在涉外上网,要用到校园网客户端拨号程序这个东西,可问题也就出在这,现在发行的也只有在windows下的客户端,那,如果我是linux的或者手机想连上学校的无线网,又该怎么样实现呢?是等学校发行类似的东西?还是?(我个人觉得学校还是先花心思提速好些……)
细心的同学应该会发现,在我们安装好pppoe客户端之后,随之在网上邻居里面也建立了一个pppoe的宽带拨号连接,用的是拨号适配器。。。那么,我们会想想,为什么他还要用pppoe客户端呢?而且,在用pppoe拨号的同时,网上邻居里的连接也随之连接好了。于是,可以确定他就是通过宽带连接进行拨号的。但为什么我们直接用宽带连接输入账户密码却是错误的呢?这也是pppoe客户端的作用了。
可是问题出来了,为什么要用pppoe?其实,这个问题很简单。如果直接用宽带连接,那么,一个寝室=一个账号+路由器足以、共享连 接等等问题也会随之而来。(回过头来想想,如果不用pppoe客户端,校园网拿什么赚钱呢?但你丫的也稍微把网速弄快点啊。。。) 于是,阴险的商家想到了和电信的星空极速一样的方法,利用一个拨号客户端,实现既可以打广告又可以不让你知道真实密码的方法。(这个很绝!!!)
ps:pppoe的作用在于,将给你自己设置的密码通过一定加密方法再次加密,再次加密之后的密码才是真实的可以通过宽带连接拨号的密码。
但是,既然是用的宽带连接拨号,我们自然也有办法得到他的真实密码了。
我们的目的是得到真实密码,并且于原密码比较。看看pppoe客户端的加密手段,从而得到解码机。实现路由、linux、手机上网。
第一个想到的是网络嗅探。因为拨号嘛,他总得通过种种手段把用户名和密码发送出去吧,如果我们在他发送的过程中把它截获了,我们是不是就得到了想要的东西了。。。。
于是,操起手中的sniffer pro,加上自己的网卡就开始拨号了,一点嗅探,乖乖,直接蓝屏。。。好吧,多怪我搞了一个3g内存,搞得现在极不稳定。于是,去室友电脑上继续嗅探,成功获取到了request value (密码)以及name (用户名)。知道pppoe拨号原理的同学应该知道,pppoe拨号的鉴定有两个方法,一个是明码形式的PAP、一个是加密形式的CHAP
。。。很不巧,该死的校园网用的就是后者,更关键的是,这个request value=hash(identity+密码+challenge)(意思是:得到的request value是由一个identity的认定值连接真实密码、再连接一个每次拨号都不同的挑战值challenge,将前面三者连接号之后再进行md5加密。而且,嗅探得到的challenge居然也是通过md5加密了的)。。。想着就觉得恶心。。。这条路在走下去就没意思了。。。(要一个个解密会把电脑累死的。。。)
怎么办呢?还有什么办法能够得到这个真实的密码呢?想到了在pppoe客户端的安装目录下有一个叫做pppoe.cfg的配置文件,很早前就知道这个东西是用来存储我们输入的用户名、密码以及自动连接和记住密码的一些选项配置信息的文件。。。它和我们要找的东西有什么关系么?用winhex打开该文件,对着一串16进制的数字苦思冥想了很久,最终无果而终……
难道要就这样放弃了?不,这不是绝对不能。。。先出去吃个饭。
吃着吃着,突然发现了这么一个问题,为什么我们在拨号的时候没有看见宽带连接的界面?而且它能够连接上去?
于是随之就想到了一个单词,“函数”。而且是基于系统的API函数(学编程的孩子应该都知道这个东西。。。不知道的百度吧。)。我们可以直接调用函数把我们的用户名和密码对函数进行赋值,并有函数来发起这个连接,如果连接上了返回给pppoe客户端一个值,让他显示连接成功,else……
于是,灵光一现。我们可以利用传说中的“钩子”。。。当启用这个函数的时候,我们就先截获它,并且把它的值通过msgbox显示出来。。。于是。。。开动。。。
首先我们要知道的是,发起连接的这个.dll到底是谁。。。用C32ASM打开看了看,得知是一个叫做rasapi32.dll的动态数据连接库。调用的是里面的rasapia这个函数。
于是,download一个setdll,对这个dll进行注入。(考虑到校园网利益源代码以及工具这里不便给出。。。)
(制作程序处省略10000字)
制作好之后的图片:
就这样,我们就可以直接用得到的真实密码以及自己的账户进行宽带连接了。。。对于很多安卓手机用户来说,要的就是这个了。。。其实,校园网迟迟不发linux版的pppoe客户端,问题也就在这里了,通过linux客户端源程序,可以很快的知道我们原密码。。。这样,路由器就会在学校多起来了。。。学校也就自然赚不到钱了……
但是现在的问题出来了。我知道pppoe.cfg里面保存的是账号密码之类的。甚至那几个字节是保存什么信息的都弄出来了。但始终不知道他是怎么被主程序读取还原出来的,也就是说,还没弄清楚他的加密算法。
所以来这里和大家一起讨论。解决。希望得到各位的帮助。。。源程序传不上来(学校网速太慢了……
)。。。
下载地址是:http://www.hellosw.com/PPPoe_Setup1.2.EXE
安装成功后输入账户密码:
之后用winhex打开pppoe.cfg
问题是,从这些十六进制的乱码中还原出用户名NAG10101 和密码123456。。。
[课程]Linux pwn 探索篇!