這篇文章可以指導(dǎo)你使用虛擬機(jī)免費(fèi)地搭建一個基于RouterOS的PPPOE服務(wù)器,并且指導(dǎo)使用工具截獲在此PPPOE服務(wù)器上的認(rèn)證數(shù)據(jù)包,,其中包括用戶名和密碼等,。
PPPOE現(xiàn)在應(yīng)用很廣泛,很多小區(qū),,學(xué)校,,社區(qū)都在使用,ADSL也使用PPPOE,,它的技術(shù)原理就是把PPP幀作為凈荷封裝在普通以太網(wǎng)幀中,,從而使PPP幀可以在以太網(wǎng)中傳輸,利用PPP的優(yōu)點(驗證,,控制,,計費(fèi)等),解決現(xiàn)有以太網(wǎng)中存在的一些問題,,如先天缺陷ARP協(xié)議,,具體不再多說,要詳細(xì)了解的可以看RFC2516(PPPOE),RFC2364(PPPOA),,或者搜索引擎,。
一,、工具:
1.抓包工具,sniffer或者wireshark,;抓取網(wǎng)絡(luò)上的數(shù)據(jù)包并分析其內(nèi)容,,
2.PPPOE的服務(wù)器端,如果是LINUX,,推薦使用RHEL5,,鏡像中包含PPPOE的服務(wù)端,
在WINDOWS下我還不知道具體的服務(wù)器端什么比較好用,,試用過的RASPPPOR作為SERVER功能很簡單,,只能更改用戶的link
speed,上行或下行,并且不能更改驗證模式,,最大用戶數(shù)10個,,功能達(dá)不到要求。
此文章中的PPPOE server使用router
OS內(nèi)建的功能實現(xiàn),,我使用的ROS版本是2.9,,具體的不清楚,因為就用過這一次,。
3.虛擬機(jī),,我用的VMware
Workstation6.5,這是用來安裝ROS的硬件平臺,。
4.其他,,通用的一些命令行工具就可以了。
二,、安裝和配置
(1),、安裝
首先安裝ROS:在VMWARE中創(chuàng)建一個新虛擬機(jī),按照以下值配置:OS選擇Other/Other,,單處理器,,64-256M內(nèi)存,1G硬盤,,網(wǎng)卡需要選擇橋接(bridged)模式,,其他的都Default就可以了,需要注意的是,并不是配置越高越好,,推薦你就選擇我給出的值,,原因是ROS的某些版本不支持雙核或多路CPU,,內(nèi)存的大小和硬盤的類型(Only-IDE)都有限制,。(查看了ROS的official
Site),如圖:
創(chuàng)建好虛擬機(jī)之后就可以安裝ROS了,,很簡單,,如果你有ROS光盤,,插入光驅(qū),在虛擬機(jī)上選擇物理驅(qū)動器,,然后進(jìn)入虛擬機(jī)的BIOS里設(shè)置光盤啟動,,重啟就可以看見引導(dǎo)界面了。
如果沒有光盤可以下載一個ISO鏡像,,然后CD/DVD驅(qū)動器設(shè)置為使用鏡像文件,,設(shè)置CMOS,重啟即可引導(dǎo),。
在此我使用鏡像文件來引導(dǎo),。
引導(dǎo)解壓Linux內(nèi)核后可以看見一個ROS組件選擇的界面:welcome to
mikrotik router software installation,使用方向鍵移動光標(biāo),,空格選擇,,這里只作為PPPOE
server用,所以選擇system和ppp就可以了,,選完按I安裝,,然后屏幕下面提示是否保存舊配置,按Y,,然后提示磁盤上的所有內(nèi)容將清除,,繼續(xù)按Y,安裝了之后提示回車重啟,,按,,然后在BIOS中把啟動順序設(shè)置好(硬盤第一),重啟即可進(jìn)入ROS控制臺,,默認(rèn)用戶名是admin密碼空,,登陸進(jìn)去后開始設(shè)置ROS,由于在虛擬機(jī)中ROS操作很不方便,,推薦使用TELNET登陸,,不過首先要設(shè)置IP地址,進(jìn)去可以看到由字符組成的MiKroTik幾個字,,然后應(yīng)該還會問你是否查看軟件授權(quán)許可(試用24小時),,按N,然后就可以開始命令配置了,,默認(rèn)的prompt是[admin@MikroTik]
>,,看到這個說明你已經(jīng)安裝成功了。
(2),、配置
1.基礎(chǔ)配置
這里先說說ROS的操作特點,,基本的命令行操作,熟悉CMD里的netsh命令的人應(yīng)該能很快的上手,,在根提示符下可以輸入關(guān)鍵字而進(jìn)入特定的關(guān)鍵字上下文,,也就是我下面提到的子命令,,總而言之就是樹狀結(jié)構(gòu),和文件夾的結(jié)構(gòu)很類似,。
在任何地方都可以輸入,?來得到幫助,在任何地方都可以輸入print來顯示當(dāng)前上下文中的對象配置,,在任何地方都可以輸入export來輸出所有的命令配置清單,。
不詳述了,需要了解的請搜索引擎,。
這里我們配置接口的IP地址,。
[admin@MikroTik] >interface
接口子命令
[admin@MikroTik] interface>print
顯示接口
在這里可以得到網(wǎng)卡的名字,顯示在name字段的就是,,默認(rèn)是ether1,,即以太網(wǎng)接口,設(shè)置IP地址的時候要用到,,可以改個易記憶的名字,,這里改為lan
[admin@MikroTik] interface>set 0
name=lan 更改網(wǎng)卡名字,0代表第一塊網(wǎng)卡
[admin@MikroTik] interface>..
回到上級菜單,,這里是兩個點,,下同
[admin@MikroTik] >ip
進(jìn)入IP子命令
[admin@MikroTik] ip>address
進(jìn)入地址子命令
[admin@MikroTik] ip address>add
address=192.168.1.2/24 interface=lan
[admin@MikroTik] ip address>..
[admin@MikroTik] ip>..
[admin@MikroTik] >system
進(jìn)入系統(tǒng)子命令
[admin@MikroTik]
system>identity 進(jìn)入標(biāo)識符子命令
[admin@MikroTik] system identity >set
name=”TKMARK” 更改標(biāo)識為TKMARK
[admin@TKMARK] system identity
>..
[admin@TKMARK] system>..
[admin@TKMARK] >
這條命令設(shè)置lan接口的ip地址為192.168.1.2,掩碼為24位即255.255.255.0,,這里要注意,,此地址要和主機(jī)上的網(wǎng)卡的IP地址在同一網(wǎng)段才能通信,下面會說明,。
然后試著ping一下主機(jī)的IP,,看一下是否連通了,如果不通,,首先檢查主機(jī)上的防火墻(因為是以橋接方式連接,,所以防火墻是會阻止虛擬機(jī)的流量的),看防火墻里是否設(shè)置了阻止ICMP消息,,建議先關(guān)閉防火墻,,否則比較麻煩。
注意:如果主機(jī)有一個以上的網(wǎng)卡(包括loopback和wireless等),,那么必須在其他網(wǎng)卡的屬性中取消勾選vmware
bridge protocol(虛擬機(jī)的橋接協(xié)議),,只在要和虛擬機(jī)通訊的那個網(wǎng)卡上勾選此協(xié)議,這樣虛擬機(jī)就只和此網(wǎng)卡橋接了,。
接下來設(shè)置此網(wǎng)卡的IP地址和ROS中設(shè)置的IP在同一網(wǎng)段,,然后試著用telnet在主機(jī)上登陸ROS,成功后開始下一步設(shè)置。
2.地址池設(shè)置
地址池在PPPOE
server中的作用就是給客戶端分配IP地址,,當(dāng)然在實際應(yīng)用中,我們通常是通過NAT來上網(wǎng)的,,這就需要配置NAT,,地址池里的地址也要和ROS另外一塊網(wǎng)卡的地址在同一網(wǎng)段,這里不詳述,。
[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的客戶端地址分配中,是沒有子網(wǎng)掩碼的,,next-pool字段就是下個地址池,。
[admin@TKMARK] ip pool >..
[admin@TKMARK] ip>..
[admin@TKMARK] >
地址池配置完畢。
3. 配置PPPOE server默認(rèn)profile (客戶端相關(guān))
PPPOE
server的配置是保存在本地數(shù)據(jù)庫中的,,我們需要對這些配置進(jìn)行更改,。
[admin@TKMARK] >ppp
進(jìn)入ppp子命令
[admin@TKMARK] ppp>profile
進(jìn)入配置文件子命令
這里系統(tǒng)是自動生成了兩個默認(rèn)配置的,分別是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為本地服務(wù)器地址,,因為并不實際應(yīng)用,從tk-pool地址池讀取,,remote-address為遠(yuǎn)端地址,,即給撥號的客戶端分配的地址,也從tk-pool地址池讀取,,use-compression字段代表是否啟用壓縮,,可以選yes,no或者default,默認(rèn)為default,,defautl就是no,,dns-server就不用說了,如果有多個地址,,用逗號隔開,。這里我省略了幾個字段,比如use-encryption,,代表是否加密數(shù)據(jù),,rate-limit字段,這個比較重要,,代表客戶端的速率限制,,單位為bps,格式為rate-limit=txbps/rxbps,txbps和rxbps在客戶端方向分別代表下載和上傳,服務(wù)器方向相反,,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
進(jìn)入接口配置子命令
[admin@TKMARK] interface>pppoe-server
進(jìn)入pppoe-server子命令
[admin@TKMARK] interface
ppoe-server>server 進(jìn)入server子命令,這比較討厭
[admin@TKMARK] interface ppoe-server
server>add service-name="tkmark" interface=lan authentication=pap
default-profile=default disabled=no
這條我講多點,,service-name字段為服務(wù)名,,這個是比較重要的可省略項(對客戶端而言),客戶端建立連接的時候,,如果未指定服務(wù)名,,一般情況下會選擇響應(yīng)速度最快的服務(wù)器,如果指定了,,則指與指定服務(wù)名的服務(wù)器建立連接,,當(dāng)然在這里不能省略。interface字段是網(wǎng)卡名字,,authentication字段是驗證方式,,默認(rèn)為全部驗證方式,,即PAP(password
authentication protocol,,密碼驗證協(xié)議),,CHAP(challenge-handshake authentication
protocol,,挑戰(zhàn)握手驗證協(xié)議),,MS-CHAP(微軟的挑戰(zhàn)握手),,這里不詳述這幾個驗證協(xié)議,,只簡單說下,pap由客戶端使用明文的方式發(fā)送用戶名和密碼給服務(wù)器驗證,,而chap則由一方發(fā)起一個挑戰(zhàn),,而另一方回應(yīng)由hash單向函數(shù)計算的數(shù)據(jù)(密碼),,發(fā)起方使用自己的密碼經(jīng)過hash單向函數(shù)來計算出一個值,,將得到的值與對方發(fā)送的值比較,,如果值一致,,則驗證通過,,CHAP一般使用MD5算法作為hash函數(shù)的算法,。MS-CHAP是微軟的CHAP協(xié)議。PAP的兼容性是最好的,,但是安全性最差,。CHAP的安全性就高多了,密碼本身不在網(wǎng)絡(luò)上傳輸,,但是現(xiàn)在提供MD5破解的網(wǎng)站也很多,。
由于我們的目的的特殊性,,我們當(dāng)然只使用pap了,default-profile字段就是默認(rèn)配置文件,,跟上面的操作匹配,我們選擇default,,disable=no就不用說了,。這條語句里我省略了幾個字段,,他們是max-mtu,max-mru,one-session-per-host,max
–sessions等,這些字段跟一般設(shè)置為默認(rèn)即可,mtu最大傳輸單元,,mru最大接收單元,,one-session-per-host代表是否允許多個用戶使用一個賬號同時在線,max-session代表最大會話數(shù)目,。
到此PPPOE server的接口子命令下的配置就完成了。
使用雙點返回到根提示符下[admin@TKMARK]
>,,準(zhǔn)備下一步配置。
5.配置用戶
在ROS中添加用戶賬戶,,以此來驗證PPPOE客戶端的連接,。
[admin@TKMARK]
>ppp
[admin@TKMARK] ppp>secret
進(jìn)入賬戶設(shè)置子命令
[admin@TKMARK] ppp secret>add name=”tkmark”
password=”tkmark” service=tkmark
這條語句添加一個用戶名和密碼都為tkmark的賬號,,服務(wù)名和第四步配置的服務(wù)名相同即可,,此模式下省略的字段有profile,disable,,limit-bytes-in,,limit-bytes-out和caller-id等,profile即為配置文件,,在第三步中配置完成,,默認(rèn)為default,所以不用指定,,limit-bytes-in為限制流量的總量,,注意這里是流量的總量,不是速率,,即按流量計費(fèi)中使用,,就跟移動的GPRS包月一個道理。這里是以服務(wù)器為角色,,所以In代表上傳,,out代表下載,caller-id字段是個字符串,,用雙引號括起來,,就是本地標(biāo)識而已。
在本文中服務(wù)器是使用本地硬盤數(shù)據(jù)庫中的數(shù)據(jù)來驗證的,,審核和記賬的功能是沒有的,,在平常應(yīng)用中更多的是配置服務(wù)器使用外部的AAA(Authentication,Authoraziton,Accounting,驗證,,授權(quán),,記賬,by
CISCO)服務(wù)器來驗證用戶數(shù)據(jù),,通常是Radius服務(wù)器,,RHEL5提供這個服務(wù)器程序的安裝包,需要詳細(xì)了解的去看RFC2865,、2866,。
到這里,服務(wù)器上的配置就已經(jīng)全部完成了,,下面我們來測試,。
三,、PPPOE服務(wù)器測試
說明一下,最好找另外一臺在同一廣播域上的計算機(jī)來測試,,因為有很小的幾率你在本機(jī)上測試成功了,,但是網(wǎng)絡(luò)上的計算機(jī)卻不能連接。這可能是由于物理層的問題導(dǎo)致的,,也可能是其他的問題,,這里不詳述。
OK,,開始測試
這里以XP作為客戶端測試,,回到桌面,網(wǎng)上鄰居-屬性-創(chuàng)建一個新的連接-下一步-連接到Internet-手動設(shè)置我的連接-要求用戶名和密碼的寬帶連接來連接,,點下一步到了輸入ISP名稱的頁面,,這里填寫剛才配置的服務(wù)名tkmark,留空將連接到響應(yīng)速度最快的服務(wù)器,,繼續(xù)下一步,,填寫用戶名密碼,,這里填寫剛才配置的賬戶,用戶名:tkmark,,密碼:tkmark。
OK,,完成,點連接,,成功了,,可以打開寬帶連接的狀態(tài)看看,,服務(wù)器類型PPP,,傳輸類型TCP/IP,,身份驗證PAP,服務(wù)器IP地址10.255.255.247,,客戶端IP地址10.255.255.246,和我們剛才配置的一樣,。如圖:
如果失敗,,那么根據(jù)錯誤提示做以下操作:
用戶名、密碼錯誤:檢查你在ROS上配置的用戶名
和密碼,,或者大小寫之類的疏忽,,檢查服務(wù)名,。
遠(yuǎn)程計算機(jī)無響應(yīng):首先PING你的ROS看是否連通,然后看下你服務(wù)名是否正確,,檢查第二章節(jié)的所有配置無誤。
調(diào)制解調(diào)器正在使用:檢查你是否已經(jīng)連接其他pppoe連接,比如ADSL,,斷開正在使用的連接,然后重連,。
比較常見的就這幾種,,其他的就不多說了,,本文的重點并不是PPPOE連接排障。
順便提一下為什么服務(wù)名比較重要(在多服務(wù)器的環(huán)境下),,是因為在PPPOE連接的開始階段(無連接),客戶端會以二層廣播形式發(fā)送一個PPPOED幀,,即PADI(PPPOE
Active Discovery
Initiation,活動發(fā)現(xiàn)初始化),里面包含有服務(wù)名字段,,只有服務(wù)名相同的服務(wù)器才會響應(yīng),,并發(fā)送一個包含PADO(Offer)的PPPOED幀給客戶端,,然后協(xié)商進(jìn)行下一步工作,,所以要找到正確的服務(wù)器,,最好使用指定的服務(wù)名,。
四,、PASSWORD捕獲
安裝抓包工具,我使用的工具是WIRESHARK,一款很強(qiáng)大的協(xié)議分析器,。
下載好WIRESHARK的安裝包之后,,一路NEXT,完成后打開軟件,,在CAPTURE下的Interface
List中選擇你的物理網(wǎng)卡,,開始捕獲數(shù)據(jù)幀。如圖:
我選擇的是Realtek
10/100/1000的網(wǎng)卡,,也就是我的物理網(wǎng)卡(瑞昱千兆),,選擇后出現(xiàn)數(shù)據(jù)幀捕獲界面,在這里你可以看到所有流經(jīng)你的網(wǎng)卡的數(shù)據(jù)幀,,如圖
但是這里面的數(shù)據(jù)量太多了,,我們要對這些流量進(jìn)行過濾,篩選出我們需要的信息,,在filter里輸入你需要篩選的協(xié)議,,就可以對特定的協(xié)議進(jìn)行過濾,在此我們輸入pap,,就可以過濾出所有的使用pap協(xié)議的pppoe幀,,如圖:
Wireshark的filter有自己的語法,有一點點類似于正則表達(dá)式,,非常強(qiáng)大,,可以對協(xié)議中的某個字段進(jìn)行篩選,也可以針對地址進(jìn)行篩選,,比如ip.addr==192.168.1.1這個語句就篩選出ip地址為192.168.1.1的數(shù)據(jù)幀,,這里不再詳述。
下面的操作就非常簡單了,,可以看到在協(xié)議類型為PPP
PAP的幀中,,INFO列的內(nèi)容,
Authenticate-Request代表驗證請求,,是由客戶端發(fā)給服務(wù)器的驗證請求,,先選擇一個REQUEST類型的幀,展開內(nèi)容,,如圖:
Authentication-Ack類型代表服務(wù)器驗證成功,,發(fā)送給客戶端的回應(yīng),如圖:
上圖中顯示的字符串為LOGIN
OK,。然后就進(jìn)行下一步的PPP協(xié)商,。如果驗證失敗,那么Authentication-Ack就會變成Authentication-Nak,,服務(wù)器會發(fā)送包含Termination-Request請求的PPP的LCP(工作在PPP的LCP子層,Link
Control Protocol)幀,然后進(jìn)一步確認(rèn),,在此不再細(xì)述PPP協(xié)議,。
很多人可能已經(jīng)看到PASSWORD了,在pap幀中,,包含了完整的用戶名和PASSWORD,,而且數(shù)據(jù)幀中包含了所有能用到的信息,包括MAC地址,,IP地址等等,,在此有另外目的的同志就可以進(jìn)行下一步的行動了。
如果要防止別人對你進(jìn)行PPP的攔截,,那么只需要設(shè)置服務(wù)名為真正服務(wù)器的服務(wù)名就可以了,。不過這種方式也不是很保險,目前還沒不知道免疫此種認(rèn)證攔截的方法,,只有依靠網(wǎng)絡(luò)管理手段去封殺,,不過在傻瓜交換機(jī)上是實現(xiàn)不了的,也就是說,,在小區(qū)中使用PPPOE撥號的人,,基本上可以考此方法橫行。
【完】
很少在網(wǎng)上發(fā)文章,,希望朋友們多支持,,有不對的地方多指教。
附一張實際測試效果圖: