黑客如何入侵你的路由器?

jobbole發表於2014-04-27

  一段時間以前一位從事資訊保安的朋友請我做一件奇怪的事情。讓我黑掉他的路由器。我們可以叫他bill,出於保護隱私的原因,其它的名字和地點都會有所改變。但是供應商的名字會被保留。

  入侵一個大公司很容易(也許吧)。他們的資訊資源可能分佈在全球各地,儘管他們會投資各種各樣的防護技術,但這也僅僅是讓我們很難追蹤他們所有的東西而已。他們得日復一日的為所有資產嚴格地執行掃描-修補-重啟流程,不容有失。

  但是入侵個人則很困難。的確,黑帽技術在非對稱的資訊保安性方面有它的優勢。有時只需要一個bug(就可以成功黑掉大公司)。但是與大公司相比,個體目標暴露的攻擊區域是非常的小的。此外,很多人都相信大型供應商提供的資訊,以及雲供應商通常會做保護人們免受攻擊這樣高尚的事情。

  我從最基本的偵察開始。我喜歡使用Maltego,再附加上像checkusernames.com、knowem.com、piple search這樣的網站,以及其他工具來計算線上狀態。同樣還有一些比較經典的網站如Google+,Facebook以及Linkedin。我們可以使用Facebook上的一些假資料來做這樣的工作。你需要為你的目標準備好的誘餌資訊,這樣可以通過社交引擎提取額外的資訊。

  而線上狀態方面,密碼重置問題是非常好的“低垂的果實(唾手可得的東西)”。我見過有些web郵箱賬戶詢問的資訊是可以直接從目標的Facebook資料裡面找到的。我確信大多數人甚至都不會意識到這一點,他們可能在五年前寫的這些重置問題(而現在早忘了)。然而現在這些東西在這裡都不管用了。要知道我的目標是個搞資訊保安的書呆子,而他正期待著我。

  是時候跟他決鬥了。首先,我檢查了他是否有在他的家庭網路連線上託管任何東西。他可能以前做過但沒有注意。很多的應用和裝置使用UPnP在消費級的防火牆上面打孔。有時候我們只需要一個NAS或媒體伺服器來開啟一個後門即可。為了找到他的家庭IP地址,我使用了一個Skype解析器,比如resolvme.org。它非常棒。我掃描了他的ip地址(以及一些鄰居的ip)來看是否可以找到一些服務。雖然沒有骰子…但我確信他認為我會這樣做。

  好吧,接下來,821.11。無線網路是一個非常棒的攻擊媒介。我有兩塊Radeon 6990′s的顯示卡在i7平臺上,通過WPA雜湊值咬合在一起。我使用一個馬爾科夫預測字表生成器來為oclHashcat提供預測值。它在8小時內能達到80%的平均破解率。

  所以我從bill的地址著手(用各種Alfa wifi卡)。實際上我也是知道Bill的地址的,可能我之前已經通過偵察或社交引擎得到了這些資訊。這可不是什麼祕密。在我成功的捕捉到一個WPA握手之後,我執行了一週的破解器,還是不行。也許對大多數人來說這是有用的,但Bill是個從事資訊保安的傢伙。他的WPA的key很可能大於32個字元長度。

  此時你可能會想為什麼我沒有利用java 0-day漏洞對他魚叉式釣魚然後享受我的勝利啤酒。答案很簡單——我知道我的目標。他精於掃描-修復-重複的咒語。我要手上真有一個瀏覽器0-day漏洞,上週就贏了。

  在我參觀了Bill的地盤後,帶了一點有用的資訊離開了。他的無線路由器的MAC地址(BSSID):06:A1:51:E3:15:E3。由於我有OUI(MAC的前3個位元組),我知道這是Netgear的路由器。我當然也知道Netgear的路由器有一些問題,但Bill執行的是最新的韌體。可這並不意味著所有的漏洞都在這個韌體中被修復了。想要確定唯一的辦法就是自己買一個Netgear路由器並親自測試它。

  要獲取準確的型號也許不可能(反正從遠端是不行)。消費者裝置可能在不同型號間有許多變體,因為參考平臺來自於Soc供應商,比如Broadcom和Atheros。我知道Bill有點簡樸,所以我選了WNDR3400v3——入門級的產品。

  在瞭解了一些該裝置的一些弱點後,我做了兩個Metasploit模組。在第一個模組,我用一個CSRF漏洞傳送post請求到UPnP介面並打了個孔來訪問路由器自身的遠端連線服務。這個問題在很多其他裝置上都存在,而且非常值得重視。

  如果你能通過CSRF欺騙UPnP請求,你可以將整個網路鬧的天翻地覆。

  這是非常關鍵的一點。我開啟了一個單獨的埠。你可以從受害者的瀏覽器上使用Ajax請求為每一個子網中的IP配置NAT入口,從而有效的禁用防火牆。當然對於UPnP的NAT入口數量有很多硬限制,但是大多數裝置都會允許有足夠的入口來為100臺左右的主機對映一些關鍵埠。

  為了引誘Bill走到我設的陷阱上,我給他傳送了一封內建連結的郵件。Cobalt Strike有個工具可以拷貝一封已存在的郵件(標題和所有),所以就很簡單了。我需要做的僅僅是修改這個連結。那麼什麼郵件是每個人都會點的呢?哪怕是個從事資訊保安的傢伙?——邀請。

  編輯:有些讀者可能會懷疑為什麼Bill會喜歡這個。哪怕簡單的檢查下發件人域或是連結都會發現有問題。一個好的藉口是成功的關鍵所在。至於藉口的背景,我們看這篇文章。在這種情況下,邀請似乎從那個下午他與某個人的會議就發出了。好吧,是還有很多非正式的工作面談,我想這是個確認偏差——他願意相信自己得到了這個工作。

  在我傳送這封郵件之前,我需要一個跟蹤負載。預設情況下telnet埠在Netgear路由器上是開啟的,但是服務沒有響應。你必須連線到埠併傳送一個特殊的解鎖碼。事實上存在對這個漏洞的公開利用,但我還是寫了另一個MSF模組,因為我喜歡我的Ruby(以及Metasploit)。

  Bill點選了這個連結。在我看到回撥時,我觸發了第二個模組然後通過telnet登陸到了路由器。在我獲得路由器的root訪問許可權後,我立即更改了DNS設定讓其指向一個由我控制的DNS伺服器。

  控制DNS是一件非常過癮的事情,它有效的為你提供所需要的中間人攻擊。有很多的MITM攻擊載體,但我還是喜歡Evilgrade——因為其隱祕性。Evilgrade已經問世很多年了,但仍然很棒(有一些必要的修改)。在Bill決定升級notepad++到新版本之前我等了大概一週的時間。當他做時,他送了一個有後門的版本,這也在他的電腦上給我提供了一個Meterpreter shell。我立即發了封帶有截圖和擊鍵記錄的郵件,幾分鐘後他拔去了電腦的插頭。

  最後,我得到了6瓶裝的Ruby啤酒的獎勵。我愛我的Ruby!

  原文連結: disconnected   翻譯: 伯樂線上 - deathmonkey

相關文章