解密古老又通殺的路由器攻擊手法:從嗅探PPPoE到隱蔽性後門

隨著寬頻使用者爆發性增長,PPPoE被帶進了各家各戶,而它的安全缺陷卻一直沒有受到足夠關注,直至今日成為了一種低成本的通殺型路由器攻擊手段。

PPPoE(Point-to-Point Protocol Over Ethernet),是將點對點協議(PPP)封裝在乙太網(Ethernet)框架中的一種網路隧道協議。其由UUNET、Redback Networks和RouterWare所開發的,並於1999年發表於RFC 2516說明中。

近二十年過去了,PPPoE被廣泛應用在網路接入場景,較為有名的ADSL便使用了PPPoE協議,其成為了幾乎所有家用路由器的預設功能之一。隨著寬頻使用者爆發性增長,PPPoE被帶進了各家各戶,然而它所存在的安全缺陷卻一直沒受到足夠的關注,直達今日成為了一種對路由器攻擊成本極低、效果極好的攻擊方式。

以下是本文討論的重點——“古老的漏洞、上億級受影響裝置、極低的攻擊門檻、沒有完善的修復方案,危害極大的攻擊場景—從獲取寬頻密碼到隱蔽性後門”

極低的攻擊門檻

我們可以輕易的在網際網路上搜索到各種使用Linux、Windows平臺上的工具來捕獲PPPoE密碼的文章,按照描述相信各位都可以在短時間內復現。

解密古老又通殺的路由器攻擊手法:從嗅探PPPoE到隱蔽性後門

由於這些文章多是用於驗證性質的,在考慮實際的攻擊場景時往往會陷入誤區認為需要物理接觸的同時動靜很大。於是我在自己的Android手機上移植了一個PPPoE嗅探器,在開啟程式後幾秒鐘內便可以獲得賬號資訊,

PPPoE工作原理及缺陷

PPPoE協議的工作流程包含兩個階段—發現階段和會話階段,見以下兩圖。

解密古老又通殺的路由器攻擊手法:從嗅探PPPoE到隱蔽性後門

解密古老又通殺的路由器攻擊手法:從嗅探PPPoE到隱蔽性後門

在發現階段,Client透過傳送廣播PADI尋找PPPoE Server。攻擊者可透過自建PPPoE Server來接收PADI請求並與Client建立會話。進入會話階段後,透過在LCP協商時要求使用PAP(一種明文傳輸的認證方式),隨後利用Wireshark等工具就能嗅探到明文傳輸的PAP賬號及密碼,如下圖所示。

解密古老又通殺的路由器攻擊手法:從嗅探PPPoE到隱蔽性後門

沒有完善的修復方案

缺陷的關鍵在於Client廣播尋找Server時遭受釣魚,並被要求透過明文認證方式傳遞賬號密碼。

協議中的Client與Server分別對應到使用者得路由器裝置和運營商的認證裝置。很容易想到,只要路由器閹割掉PAP認證便能抵禦該攻擊。不過任何一個商業產品都是以保障可用性為首要條件,目前還有許多的使用場景(如小運營商或校園寬頻)只能使用PAP認證,所以要求商業產品減少其使用範圍的方案是不可能的。

解密古老又通殺的路由器攻擊手法:從嗅探PPPoE到隱蔽性後門

危險的攻擊場景

透過前面的內容,我們大致瞭解該攻擊的原理及攻擊條件。該攻擊需要與目標裝置保持二層網路可達(如透過網線直接連線)。當你在朋友家可以接觸到路由器時,你可以像演示demo中那樣直接進行連線捕獲賬號(好吧,這好像只有娛樂性沒有其他價值)。另外呢,在小運營商或校園網路這樣的大型二層網路裡邊,可以進行批次的釣魚。有些意思,但還有其他危害大些的攻擊場景嗎?

前些年,許多家庭無線路由器都因為預設密碼的問題可以被輕易黑掉。比如到別人家串門,我往往會跑到路由器旁按WPS按鈕來自助連上無線網,接著通常預設密碼就能進後臺了。如今的路由器都做了改進,初始化時就要求設定具有一定強度的密碼,這樣看上去只要密碼不被洩露就很安全了。

不久前一次出差的經歷,讓突然我發現了一個有趣的攻擊場景。

解密古老又通殺的路由器攻擊手法:從嗅探PPPoE到隱蔽性後門

為了節省經費我們選擇了一家民宿就住。當晚的無線網路不太好,自然就想進後臺檢視一番而後臺密碼攔住了我。我想到要是知道寬頻賬號不就可以無所顧慮的重置路由器。我跑到路由器旁,嗅探到了PPPoE賬號,重置路由器並迅速將原有配置進行還原(寬頻、無線熱點等),整個過程大概用了大概2分鐘。值得注意的是,由於還原後的網路通訊、無線熱點配置都與之前無異,我的幾位同事甚至沒有發現明顯異常,但我已經可以進入路由器後臺啦!

我把這種方式稱之為“路由器無感知重置繞過法”,通殺所有家用路由器。拿到後臺許可權後,我除了可以篡改DNS外,還可以開啟遠端Web管理、繫結動態域名解析弄成一個的遠控後門。

解密古老又通殺的路由器攻擊手法:從嗅探PPPoE到隱蔽性後門

我查閱了《2017年民宿產業發展研究報告》,報告指出2017年民宿客棧總量已達20萬。對於規模較小的民宿而言,價格低廉實施容易的家庭寬頻幾乎是最主流的入網方式,同時路由器會被放置在客人可接觸的區域。這幾乎完美匹配了PPPoE嗅探的攻擊場景,每一位入住使用者都有潛在可能對路由器實施無感知重置繞過攻擊植入後門,也都有潛在可能被之前使用者植入的後門所監聽流量。我將整個攻擊流程總結為下圖:

解密古老又通殺的路由器攻擊手法:從嗅探PPPoE到隱蔽性後門

後來,我想到一個混淆方案來緩解這種重置繞過攻擊:寬頻密碼的格式常見有身份證末幾位、固定數字編號或者其他亂碼。在使用者填寫賬號後,我們可以據此生成一批相似度高的字串,加上內建常見格式字串構成混淆字典。在PAP認證時,隨機發送混淆字串進行迷惑。從理論上講,在可接受等待時間內儘可能多的傳送出混淆賬號可以很大程度上緩解該重置繞過攻擊。(未實際測試,廠商的朋友請參考、指點可行性)

後記

雖然該漏洞的發現與利用都很“陳舊”,但希望能透過一些小小的推動來幫助早日達到“解決”的狀態。