你見過“僵屍”來襲嗎?
你自己也成為其中一個“僵屍”會是怎樣的感受? 這次,可能要玩得更酷炫一點! 如果你家路由器被破解,那麼就可能是5萬僵屍網絡中的一員!
帶來此次講座的是一個“别人家的小孩”,他目前還在讀大三,卻已經是長亭科技核心安全團隊中的一員。2016年,他和團隊在黑客盛會geekpwn上破解了11款路由器,獲得冠軍,并拿下42萬元獎金。
為什麼要聊這個話題?
路由器是網際網路絡的樞紐——"交通警察"。目前路由器已經廣泛應用于各行各業,各種不同檔次的産品已成為實作各種骨幹網内部連接配接、骨幹網間互聯和骨幹網與網際網路互聯互通業務的主力軍。
好,一本正經的介紹結束。我們來一個狂野版:現在的青年坐下來就找wi-fi,誰家還沒有個把路由器啊!你家路由器要是被人破了,輕則隻是被蹭個網,重則各種隐私資訊,包括硬碟裡珍藏的小片片都會被一洗而空!不甘心?!來,跟大神一起玩破解和反破解,隻有知道是怎麼被破的,才能預防被破!
趙漢青,長亭科技安全研究員,geekpwn 名人堂成員。主要從事軟體逆向工程、漏洞挖掘、exploit編寫,熟悉智能裝置漏洞挖掘與利用、android本地權限提升漏洞挖掘與利用、浏覽器漏洞挖掘與利用,2016年 geekpwn 512,與楊坤一起以十一款路由器的漏洞挖掘與利用獲得 geekpwn 512 的冠軍。中國海洋大學 blue-whale 安全研究團隊隊長,帶領成員進行安全競賽、漏洞挖掘。
q1
之前其他媒體對你有報道,報道的題目是《八九點鐘的太陽,照在他的身上》,看照片也确實很年輕,能否再做一個高難度的“圖+文”的自我介紹?
趙漢青:我大學過來的三年和其他大學生有一點點不一樣,教室、班級或是宿舍并不是我的主戰場,我是在實驗室度過的,就這樣我算是半個研究所學生,也受到了安全學術圈的很多熏陶,了解到了很多學術圈一線大佬的研究方向等,了解了非常多前沿的系統安全方面的技術。
當時我的學長崔勤(現在也在長亭任職)在2012年左右依托着實驗室創辦了一個ctf戰隊,算是比較早的開始打國内外比賽的戰隊。但是非常不幸的是我剛去實驗室,學長就畢業了。雖然沒有了老司機帶,但是自己對這方面又十分的感興趣,是以當時就自己天天呆在實驗室白天黑天的解題、打比賽,總之就是自己瞎折騰,雖然走了不少彎路,但是還是成了一個賽棍,整個幾年算是學了一點皮毛知識。
大約是16年初,過來北京以後就從以前的瘋狂比賽轉到一些real-world的軟體、裝置進行研究了。
q2
雷鋒網:請你介紹一下你所在的團隊和長亭科技。
趙漢青:2011~2014年,幾個年輕的創始人在興趣的驅動下,最終孵化出了這個新興的網絡安全服務公司——長亭科技。
q3
雷鋒網:今年5月,在安全極客大賽 geekpwn2016 澳門站上,你所在的長亭科技團隊一口氣攻破了市面上銷售10款主流品牌路由器和1款攝像頭,獲得了最高獎金,請給大家介紹下為什麼選擇這10款路由器和1款攝像頭?花了多長時間研究破解?真正破解一款路由器需要多久?
趙漢青:之是以選了那10款路由器,其實沒有什麼特别的考慮,在确定了澳門站我們要來展示路由器後,就是去京東輸入路由器關鍵詞,把銷量比較高的全買了一遍,盡量每個大品牌都買了,這樣可以使我們的研究在面兒上更能展現路由器的一些安全性問題,也能更好的引起各大廠商以及消費者的重視。
整個研究過程其實有幾個月吧,從二月底到5月中旬,我們小夥伴們都一直在研究這個事情。這期間我們經曆了選方向、選裝置、漏洞挖掘、漏洞利用、示範準備、撰寫文檔等等環節。真正破解一款路由器的話其實并不需要太久,其實我們完成一個裝置的破解長則需要一周,短的話其實一晚上就夠了。
q4
雷鋒網:具體破解過程是怎樣?介紹下酷炫吊炸天的技術吧!
趙漢青:首先,當然是去購買一個裝置了。
在拿到一個裝置時,第一件事情通常是去盡量收集一些關于固件、架構、端口等資訊以友善我們分析攻擊面,為我們之後對binary(可執行二進制檔案)進行詳細逆向分析提供便利。一般最容易想到的就是能拿到一個可以操作的shell進入路由器中檢視,這樣所有的資訊對于我們來說就一覽無餘了。
如果可以給路由刷一個ssh或者路由本身就有telnet之類的shell,可以直接上去搜集資訊。如果沒有任何ssh之類的程式,我們可以拆掉路由器,觀察焊點,因為有一大部分廠家在出廠時會好心的留下一個用于調試的序列槽,我們隻要能找到這個序列槽然後連入一般就可以獲得一個可以執行指令的shell。
(編者注:這是什麼意思呢?就好一個特工想潛入一個家庭,先了解下家庭成員的情況,然後找一個最笨的成員給自己帶路,而序列槽就是去了解這個家庭的一個手段。至于最笨的成員是哪一個?沒有通用的尋找規律,每一個路由器都要經過一些攻擊面分析、然後具體的逆向,才能找出程式員寫出的漏洞,然後再利用。)
(編者注:ssh 為 secure shell 的縮寫,由 ietf 的網絡小組(network working group)所制定;ssh 為建立在應用層基礎上的安全協定。telnet協定是tcp/ip協定族中的一員,是internet遠端登陸服務的标準協定和主要方式。telnet是常用的遠端控制web伺服器的方法。)
如果序列槽不太明顯,我們可以用示波器去測試,在序列槽向外輸出的時候,示波器上回顯示出規則的方波,讓我們可以更準确的找到調試的接口。之後我們可以用usb轉ttl的裝置接入電腦,就有一個shell可以用了。
在有了一個可以用的shell之後下一步就是去找尋攻擊面了,最容易想到的就是去打它開放的端口。
例如,上圖我們探測到了一個對外開放的webserver,非常簡單,接下來我們要做的事情就是根據端口找到對應的binary,接下來我們就可以對其做逆向分析了。
下面我來介紹一個非常簡單的漏洞示例。
這是一個webserver的中解析參數的函數,通過簡單的分析我們就可以看出參數長度并沒有檢查就被copy到了棧上,實在是再簡單不過的棧溢出了。
雖然介紹的這個漏洞如此簡單,但是在實際的分析過程中,由于binary一般都算是比較多比較大,還是比較占用時間的。
那麼找到了漏洞以後,無非就是要繼續想利用了,因為在這些智能裝置上我們發現的漏洞都比較簡單,是以用的利用技巧也相應比較簡單。
遇到的小問題無非下面幾個:
1.不能再棧上寫0,但是如果我們要做rop(return-oriented programming)的話,一般代碼段起始的位址都是以0開頭的。遇到這種問題我們可以對傳回位址做部分改寫,用一個“add sp,xxx”之類的gadget将棧遷移到高處。這樣我們就可以在棧的高處繼續做rop了;
2.如果開了位址随機化,我們不能直接做rop。可以先洩露一次函數的got位址,然後算出真正的代碼段或是lib庫的加載位址,然後在繼續做rop;
3.遇到一些mips大端的架構,這樣我們做部分覆寫的小trick也會失效,但是由于性能原因,我們發現大部分mips的路由都是沒有開随機化的,是以我們可以幹脆對lib基址進行爆破,就可以去用到lib裡的gadget(一些指令片段)了。
在确定好寫利用的思路以後,寫的過程中我們也許需要debug,最通常的辦法還是利用ftp或是tftp等工具傳一個gdbserver到路由内部,然後用gdb進行遠端調試。我們可以用一個非常好用的gdb輔助插件(https://github.com/kelwin/peda),使用效果如下。
之後我們用我們的exploit腳本(攻擊腳本)發起遠端攻擊,就能遠端獲得路由器的最高權限,接管這台路由了。
q5
雷鋒網:還有一個重要問題是,為什麼朝路由器下手?
趙漢青:選擇路由器作為主要研究對象的原因是:在去年的極棒上,我們重點研究了多款網絡攝像頭。而對于路由器我們隻研究了一款,就發現了多個安全漏洞,這引發了我們的興趣和擔憂。
路由器作為家庭的上網入口,連接配接了許許多多的裝置,不僅筆記本電腦、手機需要連網,還有越來越多的智能裝置。例如,攝像頭、網絡電視、智能插座、智能烤箱等也同樣接入了家庭網絡。是以,路由器這個網絡入口裝置的安全性就顯得尤其重要。一旦路由器存在安全漏洞被黑客攻破,家裡的其他裝置就會更容易被監聽、劫持,甚至長期植入後門。
如今,路由器市場競争激烈,很多傳統大品牌大廠商都推出了自己的産品,主流的品牌非常多。我們希望能用自己的技術積累,對各大知名品牌路由器的安全性做一些分析和對比。盡可能多、盡可能早地去發現問題,進而來提醒消費者和廠商。一方面,想引起路由器廠商的重視,推動他們在安全方面投入更多的努力。另一方面,讓消費者了解安全的重要性,提高對安全的訴求。
現如今在pc、浏覽器等的漏洞挖掘都已經進入了“very-hard”模式時,想完成一次此類的攻擊通常都需要幾個精巧的漏洞的巧妙組合。然而現在的”iot裝置”基本是10年前pc的安全水準吧。更确切的話,我們有一位小夥伴曾經講過一個非常精髓的話:”感覺現在做所謂的‘iot裝置’的還是處在設計的時候不考慮任何潛在的安全問題的狀态,勸都勸不動”。是以現在市面上的各種智能硬體從設計上對安全的考慮還是要再學習一個。
q6
雷鋒網:這些路由器被破解後,後續發生了什麼?廠商有找你們嗎?說說後續可能的“金錢誘惑”吧?
趙漢青:大部分廠家其實是非常友好的,例如華為、極路由等廠家都非常重視這些安全問題,其中大部分的廠家都積極的與我們取得聯系,在我們向廠家披露後也進行了積極的修複工作,之後對我們表示了感謝。還有像華為還非常好心的幫我們申請了cve編号,确實是良心廠商。
對于”金錢誘惑”是沒有這種事情的,因為我們研究的初衷就是讓廠商和大衆能看到這些問題,一起聯合起來去改善這個現狀。是以我們從來都是隻協助廠家修複漏洞,不做過分的披露。
q7
雷鋒網:吃瓜群衆最好奇的是,路由器破解了之後會有哪些後果?能否舉例一些具體場景和案例?比如,要追一個妹子,可以通過破解她家的路由器了解她的各種喜好嗎?
趙漢青:
上圖是我們研究的一款我們可直接通路到的有安全問題的路由在2016年5月左右在全球的分布情況。這個數字大約接近5萬,也就是說憑着一個路由的漏洞我們就可以建構一個規模如此巨大的僵屍網絡,不說接管所有使用者的流量使得使用者的隐私受到侵犯。如果有不法分子利用其做ddos之類的攻擊,後果是非常之嚴重的。
其實當對一個路由發起遠端攻擊并擷取最高權限以後,就完全接管了這個路由的一些,從這個路由中走的所有流量都會被接管,你不僅可以了解到一個平常都在看什麼網站,用什麼app,甚至一些敏感的私人資訊,比如賬号名、甚至有可能是密碼都是有可能知道的。甚至可以讓使用這個路由上網的人在通路正常網站時被導向釣魚網站。是以如果大家有這種擔心的話,平時還是要注意不要将自己的路由暴露在公網上。在公共場合也最好不要連入陌生的、免費wifi之類的 上網,這都是同樣不安全的。當然對于追一個女孩兒的話,建議大家不要去搞這種奇奇怪怪的東西,還是用心好好交流體會陪伴比較好。
q8
雷鋒網:除了你們的破解路徑,還有别的主流破解路徑可以說說嗎?
趙漢青:在這裡我們總結了一個hack一台智能裝置大約需要的過程。
1.當然是買一個 2.去搜尋它的固件(官網下載下傳或者直接抓取更新連結) 3.最好能得到一個可以用的shell以便搜集資訊 4.找尋攻擊面 5.逆向分析或者像openwrt之類的會有一些腳本我們可以審計 6.寫利用代碼
那麼還有其他的一些途徑來入侵一台路由,比如,路由的加密采用的是wep這種易于破解的,就可以通過一些暴力手段來加入一台wi-fi路由,之後再進一步做一些其他的事情。
q9
雷鋒網:事實上,沒有什麼技術基礎的吃瓜群衆可以在聽了你的講座後破解一款路由器嗎?有壁壘嗎?
趙漢青:大家聽了這麼多之後,其實可以感受到,現在大多數所謂智能裝置的漏洞其實還是比較弱的狀态。隻要大家有一些計算機系統的基礎或是做過一些程式的開發,隻要再加上對逆向和簡單的漏洞利用有一定了解其實就可以去嘗試hack一台路由了。
是以對于沒有技術基礎的群衆們來講的話,可能還會是有一定的難度,談不上壁壘,但是完成這個事情還是要有一點點的計算機友善的綜合能力的,就是軟體硬體都稍微懂點就可以了這樣。
q10
雷鋒網:除了那十款路由器,可以總結下一般路由器的漏洞嗎?
趙漢青:從平時研究來看,路由器本身可能存在的安全問題大緻包含以下3類:
1. 暴露了較多遠端服務,這些服務可能存在漏洞,增大了攻擊面; 2. 管理平台存在預設賬戶; 3. 功能設計缺陷可繞過驗證登入管理平台。
在我們實際的研究過程中遇到的具體問題大概有下面幾種:
1.一些系統配置檔案的注入 2.棧溢出 3.堆溢出 4.指令注入 5.弱認證 6.記憶體資訊洩露 7.由sql注入而間接導緻的棧溢出
q11
雷鋒網:可以反過頭來技術支招下,如何防止路由器被破解嗎?可以分為專業技術級與普通吃瓜群衆級來說一下嗎?比如一個專業做網絡安全的人和一個不想被人追的普通妹子,操作肯定會不一樣。
趙漢青:針對以上安全問題,我們建議廠商提高在裝置安全方面的投入,提高産品的安全性。這不僅是對消費者負責,也是為自身可持續發展鋪路。在改進産品的安全性之前,可以先多了解黑客攻擊的過程和方法,針對黑客攻擊流程中的每一步去做相應的防護。例如:使用自定義固件格式、對固件做加密和簽名校驗,來阻止攻擊者輕易拿到軟體來分析或篡改;盡可能多的去減少暴露的攻擊面來降低風險;當然根本解決問題還需要編寫安全的軟體,現在很多廠商的軟體中依然使用了不少危險函數,建議首先對這些函數做替換。
對于普通使用者,我們強烈呼籲他們要形成安全保護的意識,養成好的資訊保護習慣。針對路由器來說,雖然目前漏洞很難避免,但是隻要保證家庭内網不對外開放,不給不信任的人接入,路由器不對公網暴露,就可以相對安全一些。具體來說,這些保護措施包括:wifi密碼使用強加密算法例如wpa2,而不是容易被破解的wep;禁用路由器wps功能,防止pin碼被破解;不用所謂的wifi蹭網軟體,因為你在蹭網的同時也會将自己家裡的wifi密碼分享出去。
q12
雷鋒網(公衆号:雷鋒網):可以講解下“破解不成快要抓包”的場景嗎?即如何發現有人在破解你的路由器?
趙漢青:其實我們今天所講的路由器的破解并不是說對一個路由的登入密碼做爆破或者怎麼樣。在對路由器的系統固件做完分析,開發出漏洞利用程式後,其實發起攻擊大多隻需要一瞬間就可完全接管目标路由器。是以從這個角度來說,想要發現有人正在攻擊你的路由,對于普通使用者來講其實是比較困難的事情。但是我們平時通過一些簡單的措施就可以大大降低自己家路由被攻擊的幾率,比如說設定非常複雜的連入密碼,絕對不要讓不可信的人連入你的wifi等。
q13
趙漢青:這種以及類似的事情的确是有可能會發生的。就像生物的染色體在收到一些宇宙射線的照射會發生基因突變一樣,電子裝置在受到了一些強烈輻射其記憶體可能也會受到影響。更實際的也有類似的事情,比如,2015年project zero曾發現rowhammer漏洞,在最近的安卓上也出現了利用方法,雖然這個是由于硬體上設計的缺陷導緻的,通過頻繁通路記憶體中的 一行資料,會導緻臨近行的資料發生反轉,加以巧妙利用可導緻權限提升等問題。
是以思科所說的這些事情在硬體設計有缺陷或者其他特殊的情況下完全也是可能存在的。但是就我們所更關注的安全問題來講,通常我們把可以利用的bug才叫做漏洞,不可利用的bug可能更多的隻是會給使用者或者管理人員帶來使用上的不便。對于這種宇宙射線導緻bug的事情其實我們普通群眾并不需要過多的去擔心,第一個我個人認為碰到這種事情的機率蠻小的。第二,就算可以觸發bug其利用難度也許比較大。是以對于我們普通群眾來說不需要擔心,當成好玩的事情了解就可以了。
q14
雷鋒網:除了破解路由器,你們之前還朝什麼下手了?之後又打算朝着什麼下手?為什麼?
趙漢青:我們之前對一些例如pos機等支付裝置,智能攝像頭,甚至現在越來越普及的平衡車、各種藍牙裝置都有過一定研究。
在此次geekpwn1024大家可能已經看到了我們對用戶端漏洞的一些研究成果,在之後的日子裡,我們更會不光局限于智能裝置、linux kernel、windows kernel、android kernel、浏覽器、安卓系統服務、以及ios都有可能是我們的下一個目标,是以大家敬請期待我們以後的消息吧。
那之是以會把注意力轉移到其他地方主要還是因為團隊風格和我們個人的興趣吧,我們大多數人的興趣其實還是在用戶端上,還是更渴望去玩一些更加有趣、更加有挑戰性的東西。
q15
雷鋒網:聽說你們在2016極棒大會上又搞了一個項目?可否詳細介紹?
趙漢青:在今年1024的geekpwn上,我們團隊的slipper通過對ps4浏覽器引擎與作業系統核心的攻擊,實作和示範了對最新版本4.01的遠端越獄。大家可能知道geohot是世界上第一個越獄ps3的人。國外團隊fail0verflow也曾實作過ps4較老版本的破解。算起來這應該算是世界上第二次公開破解ps4。據我對攻擊細節的了解,索尼對ps4的核心做了非常多複雜的mitigation(攻擊緩解措施),整個利用過程非常的複雜和巧妙,是以完成這件事情其實是非常令人激動和佩服的。在楊博士和slipper示範了越獄之後,也引起了國内外的瘋狂讨論,twitter、fb、以及國内各大遊戲網站、媒體都對這個事情非常的關注。也請大家繼續在近期繼續關注我們的twittercchaitintech,我們會有更多新消息放出。
另外我們還在今年的的geekpwn 1024上利用手機驅動中存在的漏洞,示範了一款安卓智能手機的root,示範了在手機裝了我們的app并運作後,即可替換掉開機畫面(隻有手機最高權限才能替換開機畫面),并将手機裡的照片竊取穿回我們的伺服器,在之後的時間裡我們也會繼續對android或 ios系統的核心安全作出貢獻。
q16
雷鋒網:在長亭科技介紹中,你是核心成員之一。你才大三,年紀輕輕,想八卦下是怎麼進長亭,然後又這麼酷炫的?
趙漢青:大約在16年初,當時我适逢在北京參加一個世界大學生超級計算機競賽的訓練營,然後經由我的學長介紹在那個時間第一次見到了楊坤博士,後來我就參與到其中,開始和大家一起玩real-world的裝置和軟體了。
真正炫酷的并不是我,我們團隊的楊坤博士、slipper、marche、cc還有其他小夥伴都是年紀非常輕,但個人能力非常之強也非常炫酷的人。當初剛過來其實什麼都不會,然後楊博士就教我們各種知識,各種技巧,帶我們學會了非常多的東西。大家一起攻堅克難,每天的生活充滿了機遇和挑戰,十分的開心。
自己可能比較早的接觸了一些不管是學術圈還是工業界的事情,也能體會到純研究型的實驗室、或是組織、團隊可謂越來越稀有和珍貴。能在這樣一個地方和大家一起折騰一起玩無疑是非常開心的一件事情。大家每天吃飯、睡覺、膜slipper。互相分享、共同進步,研究最前沿的東西。有一群志同道合的人一起玩就每天非常開心。
自己未來的話并沒有想太過遠,如果沒有一些重要的變數的話,5~10年内應該不會考慮一切其他事情,因為自己還欠缺的非常多,隻想能把握住學習的機會,每日有所提高,和大家一起做出一些比較有趣的研究成果吧。
q17
雷鋒網:你們是怎麼花極棒的獎金的?聽說有42萬?
趙漢青:首先當然是會請全公司的小夥伴們吃一頓大餐。然後給每人發一個大大的紅包,最後從裡面抽取一部分作為後續研究的經費,剩下的部分分給為這次比賽付出的同僚們。
聽衆:接觸式的路由器,就是手機在路由器上滑一下然後自動連結的那種,容易遠端被破譯嗎?
趙漢青:不管是什麼有着花裡胡哨功能路由器,它的身上都是有着最基本的路由器的功能的。那麼不管是什麼樣的路由器,那麼如果我們能夠遠端通路到這台路由的話,假設它存在一些遠端服務的記憶體或者其他漏洞的話,我們并不一定需要知曉它的密碼,在對存在漏洞的遠端服務進行攻擊利用後,即可遠端獲得路由的最高權限。即使現在我們依然不知道這台路由的登入密碼到底是什麼。
聽衆:自己的路由器如何才不會暴露在公網上?
趙漢青:其實作在大多數的路由器都已經自帶了防火牆功能并且預設打開,對于一台連結内外網的路由,隻要大家不去關掉這個防火牆,路由也就不會暴露在外網上。
聽衆:針對未知聯網路由器怎麼開展攻擊?
趙漢青:那麼在此我認為這個問題所說的未知代表的是:“這台裝置是聯網的,你可以遠端通路到他的服務,你不知道它到底是不是路由,你不知道它到底是那個牌子,型号的路由”。對于此種情況其實是在一些實際的滲透測試中會遇到的。是以用一定的手段收集資訊就顯得尤為重要,通常的方法是通過對遠端服務做端口掃描,向遠端服務發送資料包,從傳回的資訊中搜尋指紋,利用開放的服務類型、一些版本、型号資訊确定這台裝置到底是什麼。之後我們可以購買這台裝置、或者下載下傳這台裝置的固件進行測試和研究。在本地調通以後,再對遠端裝置進行攻擊。當然這一切必須要在已授權的情況下進行。
聽衆:第三個問題補充一下,遠端可以通路到ip,其他情況未知,判斷是什麼裝置,如果是路由器怎麼開展攻擊?
趙漢青:這個在回答的第二部分已經提過了,通常的方法是通過對遠端服務做端口掃描,向遠端服務發送資料包,從傳回的資訊中搜尋指紋,利用開放的服務類型、一些版本、型号資訊确定這台裝置到底是什麼。可以實際購買一些裝置和遠端的服務開放情況,傳回包資訊等做一些比對,在買到确定的裝置或者下載下傳到固件後,對其進行一些逆向分析,尋找并發現漏洞。本地調通之後再進行對遠端的攻擊。再次強調,必須要在已授權的情況下進行。
聽衆:手機4g做熱點共享wifi,有機會被破解嗎?
趙漢青:手機做共享熱點和我們平常wifi連接配接一台路由的技術是不一樣的,攻擊面是也不一樣的。因為個人并沒有對此做過深入研究,無法過多解答這個問題。
聽衆:希望推薦學習這方面知識的書,還有需要學習的知識。