黑客們的夏天——IoT Dev Hacking Vol.1

作者:L.A.M@Duncan SecTeam

0x00:前言

人類社會的發展史就是一部信息的發展史,從人類誕生之初的巫師、商人等職業就可以看出信息之於人類何其重要,這也是爲什麼美國國安局(NSA)會如此囂張的竊取全球隱私的原因。互聯網的發展加速了信息化的進程,而物聯網的飛速發展再次助推了這一原本就處於高速發展態勢的信息化進程。現如今,我們生活中幾乎無法離開物聯網(IoT)和物聯網設備(IoT Dev),智能手機,智能手環(表),共享單車等等。但是,物聯網發展速度實在太快,而企業願意爲此付出安全成本的意願未必如此強烈,這就導致了發展速度與安全防護能力之間的缺口或者步調不一。正如文章標題所示,我們將會用兩篇文章的內容來討論一個在現實生活中極其常見但卻難以得到有效防護的設備——查詢一體機。

0x01:背景

1)什麼是查詢一體機?

如果你把文章看到這個位置了,你此刻腦子裡應該在琢磨一事兒:這TM什麼是查詢一體機啊?這東西千變萬化,難以言說,屬於只可意會不易言傳那種,那就直接上圖吧,看圖識物。

其實,一開始我對這玩意兒也很納悶兒,這東西究竟咋稱呼啊?將來想靜下心來倒騰一下,連資料都找不到,更別提掙小編那點兒稿費了(啊這)!於是,藉助萬能的淘寶掃一掃,原來這東西大體叫做:查詢一體機!根據自己在生活中各個行當接觸到的這類查詢一體機設備,我斗膽給它做個不太準確但已經立求科學的定義吧。

查詢一體機:主要基於Windows和Android系統定製開發的物聯網終端設備,通常爲一體化設備(類似一體機和平板電腦),用於企事業單位或機構與用戶之間的信息獲取與反饋。礙於本人語言功底和技術水平限制,只能給出一個這樣的較爲籠統的定義,後面會詳細給出這類設備的各種技術層面特性。

2)硬件特性

顧名思義,查詢一體機這個詞兒本身就定義了這類設備的特性:一體機!因此,它的技術特性註定跟傳統PC有一定差距,但總的來說還是較爲靠近的。

CPU:由於這類設備能幹的活兒有限,大多數時候只能是充(顏)當(值)門(擔)面(當),少數時候能幹點正事兒,還有極少數的時候是在幹傻事兒(崩潰藍屏),因此它的“腦子”屬於不太好使那種,配置一個Intel i3算是頂配了(智商上限),很多時候就是AMD的芯片(不超過4核)。當然,還有部分設備會配備高通或者聯發科的芯片,主要目的還是省錢和省事兒(後面會細說)。

內存:如前所述,幾乎不幹什麼正事兒,因此內存很少有超過4GB的,如果你碰到了可以私信我,讓我開開眼,看看蜀地外面的天是啥樣的。

外部存儲:既然幹不了什麼活兒,那硬盤也只能按照最低容量需求採購了,500GB頂天,如果是SSD的話,110GB是典型配置。

網絡接口:嘿嘿,這或許是這貨唯一可以吊打很多PC的優勢吧。考慮到現實應用環境下的佈線以及維護成本等問題,這貨通常有至少兩張網卡,RJ-45,Wi-Fi,部分變態一點的甚至還配備了藍牙!不過,我可以負責任的告訴你,這貨消化不了那麼多,一般情況只會用到一種網絡接口(RJ-45)。爲什麼要嗶嗶這麼多呢,一是這一點是這貨唯一的優勢,再者這也是這貨身上最大的禍根(後面接着嘮)!

顯卡:集成的,別想拿這玩意兒當遊戲機(master不在此範圍之內)!!!

其它:SIM卡插槽(往往有多個),攝像頭,打印機,RFID,鈔票點收設備等等,內在不夠,外設來湊,說的就是這貨!

3)軟件特性

先來說說系統軟件。根據從網上bing到的結果來看,這類設備中70%安裝的是Windows操作系統,這是版權,軟件開發等諸多因素的共同作用導致的結果。再者,Android系統基本佔據了剩下的30%份額,而且這一份額在逐年上漲,主要是因爲Android系統的穩定性和配套設備低廉的價格。目前,還沒有看到有豪橫企事業單位用iOS來作爲底層系統的。

在系統軟件之外,最重要的就是前端服務程序,就是企事業單位找軟件開發商或者個人定製化開發的、爲用戶提供查詢服務的軟件。由於底層操作系統的限制,這類服務軟件大多采取一下方式實現:——定製化開發的可執行程序(.exe)——基於瀏覽器(IE,Edge和Chrome)的Web應用——定製化開發的APK程序

0x02:查詢一體機攻擊面

IoT hacking相比於傳統的Web hacking而言,最有趣的地方應該就是可以看得見,甚至摸得着,當然最可悲的也是這一點,你若是看不見或者摸不着,你想要進行的101種hacking的想法全都白搭,因此買設備是最利於IoT hacking研究的,可以這些個玩意兒都死貴,死貴的,所以大家看到的IoT hacking很多都是針對燈泡,路由器,智能手錶和跳蛋之類的,你見過動不動就hacking特斯拉,ATM存取款機,胰島素泵和心臟起搏器(致敬巴納拜·傑克)嗎?爲什麼?IoT研究太費錢了。。。

【插播電線杆小廣告】我team(Duncan SecTeam)歡迎IoT設備廠商贊助研究設備,並且保證相關研究結果絕對保密,絕對保密,絕對保密!

當然,凡事都是利弊共存的!IoT Hacking最大的好處就在於,攻擊面更多而且更容易實施攻擊,這主要還是得益於可研究的設備巨多,完了願意做這個研究的人非常少(相較於Web,二進制安全而言)。廢話不多說,不然小編要不爽了,都是“打工人”得相互體諒。那麼,我們就接着說查詢一體機存在的軟硬件攻擊面。

1)硬件攻擊面

正如前面所說,查詢一體機自身的硬件性能非常一般,但是有着豐富的外部接口和外圍設備,接下來就慢慢說道說道。

——網絡接口:查詢一體機這類設備在出廠之前,往往都無法預測設備最終安裝位置,因此對於網絡接口往往都是採用“超配”,比如無線網卡,有線網卡以及藍牙網卡全都給整上。只要是部署在局域網裡頭,這三種接口都能包打天下。然而,有些設備天生就不合羣,喜歡“獨處”,比如自動售販機,公安的天網以及交通指示燈。這些設備往往會配備SIM卡插槽,而且會在機體外部放上最多三根外接天線。

其實,查詢一體機很少會通過運營商移動網絡接入自己的內部網絡,因此通常是走有線或無線網絡接口實現內網接入。那麼,這些網絡接口自然就可以成爲天然的攻擊面。但是,這類設備的因爲應用環境的安全等級和安全意識不同,所暴露的外圍接口大相徑庭,比如在地鐵網絡中的查詢終端,通常只會暴露出電源接口,確切的說是暴露的是電源線插頭。像在其他一些不敏感或者運維人員安全意識較低的場所,RJ-45,USB各種接口都敞開了讓你玩兒。這樣就可以藉助類似NSA“棉花口”之類的工具實施攻擊,但是難度較大且成本也要高一些,對於一個凡胎肉體都能進入的場所估計沒人會做這種嘗試,當然BK份子除外。但是,如果能夠獲得系統管理猿權限,這些網絡接口的攻擊面就更大了,可以輕鬆改造爲打通內外網的橋樑和渠道。

——電源開關/插頭:如前文所說,終端設備暴露的接口與自身的安全等級是相關的,這一點大家通過日常生活中稍不留心的觀察就能印證,比如銀行自動取款機,你能看到接口都是銀行希望暴露給你使用的接口,你回想一下看到過ATM機的電源線插頭或者開關嗎?在地鐵站,你看到過自動售票機的開關,插頭或者網線接口嗎?其實,IoT設備屏蔽外部硬件接口還有另外的原因:一是,適用範圍太廣無法有效管控設備,因此儘可能減少暴露的外部接口;二是,這類設備特別容易遭受“重啓攻擊”,沒錯就是“重啓攻擊”,因爲系統重啓之後,從系統自舉到操作系統獲得控制權限,再到將控制權限交給業務系統,這個過程的安全性往往沒有得到軟件開發人員和運維人員的重視,黑客可以很容易打斷這個控制權限交接流程,從而獲得系統控制權限。

2)軟件攻擊面

(1)Windows系統攻擊面

Windows因其先發優勢以及一大幫MSDN喂出來的程序猿,因此這類查詢一體機操作系統市場絕大部分份額屬於“巨硬”,就想前面說的份額在70%左右。由於Windows先天就是爲PC而生的,因此在查詢一體機這種IoT場景下的應用就註定會有各種水土不服。

——前端應用未能實現最爲徹底的全屏操作。大家都知道Windows全稱是“巨硬”視窗系統,正常情況下每一個應用(不包括Service)都會對應一個窗口,哪怕是CMD下的程序。作爲負責與用戶進行前端交互的服務程序,如果不小心暴露了操作系統的“後庭菊花”,那麼後果可想而知了。尤其是,前端程序已Administrator賬戶啓動並運行,那麼後果有多嚴重就無需多言。造成這種情況的原因是多方面的,比如程序猿沒能禁止全局菜單彈出,沒能屏蔽掉“xx殺毒”的懸浮圖標。對於此種情況,攻擊手段極爲簡單和粗暴,直接幹掉前端服務程序,直取後庭之菊花,添加用戶,查看路由,開啓共享,遠程桌面,共享熱點,想怎麼玩就怎麼玩。

——操作系統配置缺陷,導致軟件盤可被喚出。軟鍵盤這東西在PC端的Windows上幾乎不會被用到,當然這幾年帶觸摸屏的筆記本越來越多,追個劇、聊個天的時候還是可能用到的。然而,在查詢一體機這類終端上軟鍵盤是一個幾乎無法迴避的安全問題,因爲買賣雙方都不喜歡實體鍵盤(銀行等金融機構例外),因此用戶只能通過軟鍵盤實現輸入。Windows自帶的軟鍵盤有兩種:“屏幕鍵盤”(On-Screen Keyboard,osk.exe)和Win7之後纔出現的“虛擬鍵盤”(TabTip,tabtip.exe)。前者是伴隨着Windows NT一路成長的N朝元老,後者則是“巨硬”發力平板市場後的新起之秀。但是,他們的功能都太過強大了,比如給了Win鍵,Ctrl鍵,Alt鍵和Del鍵,這些鍵的組合能幹啥呢,大家心裡明白就行了。如果一個全屏運行的程序被喚出了這兩種軟鍵盤,而且沒有對鍵盤的特定鍵進行屏蔽,那麼這就給了黑客幹掉前端程序,直取後庭花的機會。

當然,在一些安全級別要求相對較高的系統和應用場景下,這些軟鍵盤都是無法喚出的,因爲開發者根據應用場景設計了特定的軟件盤。再者,像銀行等金融機構的ATM或者業務自助設備往往都會使用實體鍵盤獲取用戶的敏感信息(密碼),壓根兒不給黑闊們機會啊,此處甚感下體球狀物劇烈疼痛。

——前端應用缺乏足夠保護,可以被非法侵入用戶終止且無法自動恢復運行。這一點其實非常要命,因爲我看過很多的查詢一體機終端設備,只在某地鐵的終端線路上看到過有進程保護,但是讓我極其不解的是,爲啥守護進程能被幹掉卻再也起不來呢?當然,如果前端應用採用一些病毒或者惡意軟件才使用的“下三濫手段”是完全可以保住前端全屏應用的身子,不至於被破門而入,那麼黑闊們當然沒有辦法喚出後臺的軟鍵盤或者沉底的任務欄。

——前端應用的權限過大,多爲管理員權限運行。不知道是不是由於程序猿天生的惰性和管理猿選擇性失明,這類終端設備幾乎都是以Administrator身份登錄,那麼一旦前端應用失身,這不這個後庭菊花都暴露了嗎?其實,這個並不算什麼攻擊面,寫這裡就是想知道爲什麼,爲什麼,爲什麼要用Administrator賬戶登錄和運行前端業務應用,這麼低級的錯誤咋就屢次觸犯,這麼明顯的配置bug咋就不能改呢?或許,是因爲應用場景充滿了不確定性,張三李四和王二麻子都可能開關機器,爲了竭盡所能的減少重啓之後可能出現的故障和異常,彼此協商狼狽爲奸地就這麼幹了。

(2)Android系統攻擊面

——前端應用未能徹底全屏,直接暴露系統操作界面。雖然Android天生就是移動終端的主子,暴露後庭菊花的缺陷也是存在的。究其原因,仍舊是前端應用未能按照Google官方關於APP全屏應用的安全要求進行嚴格的編碼和配置。當然,有不少前端應用會選擇基於Chrome開發,這樣的話要進行全屏運行其實更容易,在bing裡面可以百度到一大把。對於這類沒有充分保護好自己和系統的應用而言,只需要喚出任務欄虛擬按鈕就可以解決一切問題。當然,在沒有root的情況下,能夠進行的攻擊非常有限,往往只能將設備變成一個熱點進而未攻擊者提供接入內網的捷徑。如果攻擊者是專業的黑客或者BK份子,甚至可能借助僞裝的3G\4G\5G移動熱點,把整個內網給拖到互聯網上。

——允許用戶修改配置或開啓Wi-Fi熱點。很明顯,如果前端應用不失身,不管設備有沒有root,攻擊者始終沒有施展拳腳的機會。但是,其實這也是該死的程序猿沒有動腦子去想的,前端程序一旦失身,任務欄被喚出,那麼權限就極爲重要了啊。你想想,黑闊就順手摸了一下屏幕,就把你的前端應用幹掉了,湯師爺被打死了,夫人也被別個給擄走了,熱點打開了,文件被藍牙給順走了,你的心難道就不痛嗎?

0x03:小結

IoT設備是個什麼東西?嗯,管理得好,那就是個好東西;若要是管理不好嘛,那就真不是個東西。是的,我們通過前面對查詢一體機這種有一定典型性的設備進行安全研究,就發現了許多問題,做一個簡單的總結,也算是給下篇文章做個鋪墊。

——IoT設備在給大家帶來便利的同時,也引入了全新的攻擊面。當然,這是符合事物發展規律的,從辯證法的角度來看,科技本就是一把雙刃劍。

——大家對IoT安全(網絡安全與設備安全)的認識不夠。雖然,美國東海岸——美國互聯網的半壁江山,曾將讓200多萬臺IoT設備給幹崩了,雖然Mirai曾經肆意囂張、飛揚跋扈,但貌似大家仍沒長記性。

——一些最基本的網絡安全準備被忽視。安全圈有句老話“網絡安全,三分技術,七分管理”,可是有些人就是管理不好自家的設備啊!試想一下,你在警察叔叔眼皮子底下,把他們的辦證設備給黑掉了,完了還順手幫別人把證件辦了,這味道不比老壇酸菜更酸爽嗎?

0x04:參考