黑客如何入侵你的路由器?
一段時間以前一位從事信息安全的朋友請我做一件奇怪的事情。讓我黑掉他的路由器。我們可以叫他 bill,出于保護隱私的原因,其它的名字和地點都會有所改變。但是供應商的名字會被保留。
入侵一個大公司很容易(也許吧)。他們的信息資源可能分布在全球各地,盡管他們會投資各種各樣的防護技術,但這也僅僅是讓我們很難追蹤他們所有的東西而已。他們得日復一日的為所有資產嚴格地執行掃描-修補-重啟流程,不容有失。
但是入侵個人則很困難。的確,黑帽技術在非對稱的信息安全性方面有它的優勢。有時只需要一個 bug(就可以成功黑掉大公司)。但是與大公司相比,個體目標暴露的攻擊區域是非常的小的。此外,很多人都相信大型供應商提供的信息,以及云供應商通常會 做保護人們免受攻擊這樣高尚的事情。
我從最基本的偵察開始。我喜歡使用 Maltego,再附加上像 checkusernames.com、knowem.com、piple search 這樣的網站,以及其他工具來計算在線狀態。同樣還有一些比較經典的網站如 Google+,非死book 以及 Linkedin。我們可以使用 非死book 上的一些假資料來做這樣的工作。你需要為你的目標準備好的誘餌信息,這樣可以通過社交引擎提取額外的信息。
而在線狀態方面,密碼重置問題是非常好的“低垂的果實(唾手可得的東西)”。我見過有些 web 郵箱賬戶詢問的信息是可以直接從目標的 非死book 資料里面找到的。我確信大多數人甚至都不會意識到這一點,他們可能在五年前寫的這些重置問題(而現在早忘了)。然而現在這些東西在這里都不管用了。要知道 我的目標是個搞信息安全的書呆子,而他正期待著我。
是時候跟他決斗了。首先,我檢查了他是否有在他的家庭網絡連接上托管任何東西。他可能以前做過但沒有注意。很多的應用和設備使用 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!
翻譯: 伯樂在線 - deathmonkey
譯文鏈接: http://blog.jobbole.com/65624/
<span id="shareA4" class="fl"> </span> </div>