感受好神奇,分享一下。原文 揭祕:充電寶是如何盜取你的我的隱私的?html
中午吃完飯,看到一個微博中別人轉的央視新聞《別被改裝充電寶盜取隱私》以爲又是啥高大上的東西上了央視,看完後才知道是數字公司的某研究員作的假裝充電寶盜取隱私的玩意。ios
內心豁然開朗,原來這玩意也能夠上央視啊!那麼問題來了: 這玩意都應用到了哪些技術,而且那個防禦神器又是怎麼實現的?咱們這些每天寫腳本的能玩不?仍是須要那些玩二進制的牛人幫忙才能完成呢?git
那麼下面我給你們介紹一種方法,揭祕攻擊者是如何低成本快速打造一個僞造的充電寶的,以及咱們該如何防護。主要是IOS系統,至於Android的方法我想滿大街都是吧這裏就不說了,之後說不定會在博客中寫下。至於用途嗎不關你是進行物理社工仍是什麼的就自由發揮,本文所提技術並不侷限於「充電寶」 ,不費話了進入正題。github
原理分析cookie
首先,咱們來分析下在不瞭解已有技術狀況下假設要從零開始作起,咱們是怎麼分析和設計這個東西?我估計大多數人第一個想到的應該是iTunes , 蘋果手機管理的配套軟件,由於在它裏面有個功能是備份數據用的,即便刷機後,只要恢復下數據那麼全部的通信錄,短信,甚至上網信息等等都會被恢復回去,二進制牛若是看到了應該會說逆下iTunes分析下它通信協議不就完事了。app
嗯,確實能夠實現奈何咱們腳本小子操起IDA跟看天書的應該差很少,不過這裏有一點說的對,那就是通信協議。若是咱們可以模擬iTunes協議,告訴iPhone我須要給你備份數據,那麼按照它的接受協議把數據copy到存儲單元不就ok了。至於它怎麼去打包那些數據,根據它打包的方式解包不就還原全部數據了。上面咱們分析的是如何把數據從手機拿到存儲單元,那麼和充電寶又有什麼關係? 看過那個視頻的應該注意到,手機查到充電寶上面會提示 「是否信任此電腦」 。回想下,咱們本身充電的時候是否會提示?那麼在什麼狀況下會提示?ide
是的,在手機數據線插到別人電腦上面的時候會提示!這裏咱們在分析下,在正常充電寶上和電腦上面爲什同爲USB,一個提示一個卻不提示,爲後面的防護作個鋪墊。工具
咱們先看下下圖:ui
圖是網上找來的, 其中黃色部分爲四個usb裏面的觸點, 其中1,4 從圖中能夠看到是正負極(雖然只有+,-號),2,3 是 「D+ 和D-」 是什麼呢?其實就是data+ 和 data- 數據信號的輸入和輸出。其實從這張圖上也能猜到爲何正常充電寶不會提示,而插到陌生電腦上會提示。由於在陌生電腦上面data+和data-上面產生了數據信號,因此致使iPhone會進行詢問是否應該信任此設備以進行數據交互,下面看看如何快速實現。spa
設計實現
上面原理分析了那麼多,仍是沒有進入核心部分 「 如何快速製造」 估計罵街的已經開始了….
所需材料:
上面這些東西怎麼組合? 樹莓派USB 對外供電, 鋰電池給樹莓派供電,充電器拆了(裏面的東西)給鋰電池充電,至於led小燈,接樹莓派GPIO口。讓樹莓派閃爍小燈的教程網上應該也是一大把了,這裏就不詳述了請自行查詢。
其實樹莓派就是一個ARM平臺上面能夠跑跑Linux, 你們最關心的應該都是在ARM平臺上面的Linux怎麼模擬數據讓iPhone把備份數據給存儲到樹莓派上面的存儲器。看到上面的分析估計不少人內心不自在了,都說了腳本小子爲何又扯到上面的分析,難道又要讓咱們逆向iTunes了。固然不是了,既然咱們能想到模擬數據難道就沒有人作過?是的,你又一次猜對了,由開源實現
libimobiledevice , 這就是咱們今天的主角,看看它介紹(官方介紹):
libimobiledevice is a cross-platform software library that talks the protocols to support iPhone®, iPod Touch®, iPad® and Apple TV® devices. Unlike other projects, it does not depend on using any existing proprietary libraries and does not require jailbreaking. It allows other software to easily access the device's filesystem, retrieve information about the device and it's internals, backup/restore the device, manage SpringBoard® icons, manage installed applications, retrieve addressbook/calendars/notes and bookmarks and (using libgpod) synchronize music and video to the device. The library is in development since August 2007 with the goal to bring support for these devices to the Linux Desktop.
上面囉嗦了那麼多E文其實就是說它不依賴於第三方庫,跨平臺的實現了iPhone,iPod Touch, Ipad等蘋果設備的通信協議。
在樹莓派上面怎麼編譯能夠看這裏所需依賴
https://github.com/libimobiledevice/libimobiledevice
編譯後有它的動態庫,能夠根據它的文檔本身實現想要的功能,不過對於僅僅只是須要「竊取」隱私數據,其實自帶的tools目錄中的工具就已經夠用了,在看編譯完後的工具都長什麼樣(圖片演示均爲筆記本上面的libimobile):
能夠看到編譯後tools目錄自帶的這些小工具,比較顯眼的幾個:
idevice_id 獲取已鏈接設備ID, idevice_id -l idevicebackup ios較低版本用來備份數據的工具 idevicebackup2 ios新版本備份數據工具 idevicesscreenshot 從名字就能看出來是屏幕截圖 idevicesyslog 實時顯示log信息的,跟adb logcat 同樣 ideviceinfo 設備信息 .... 其餘的看名字基本就知道大概了
好了,咱們直接上主角吧,idevicesbackup2。在當前目錄創建文件夾bak,固然你願意放在那裏都行只是用來存儲備份數據的。usb鏈接電腦和手機(不是說好的充電寶麼,好吧…沒啥差吧^_^)
輸入命令:
idevicebackup2 backup ./bak
若是沒有配置環境變量就給idevicebackup2 指定當前目錄./
運行過程以下圖所示:
運行結束後在bak目錄下會生成一個由字符串組成的目錄,打開咱們能夠看到一堆不太可以容易理解的文件,其實這些就是備份通過處理的數據,如圖所示:
那麼拿到這些數據有毛用… 別捉急,既然能拿到確定有辦法解包還原數據
輸入命令:
ideivcesbackup2 unpack ./bak
命令執行完後咱們就能夠看到bak目錄下多了一個unpack目錄,看看裏面有些什麼吧。
因爲層級太多隻顯示了3級目錄,不過咱們先找找數字公司演示的照片是在什麼地方存儲的能夠在var/mobile/Media/DCIM 目錄中看到這裏存儲的都是我的相機拍的照片和視頻(沒拍攝過因此裏面木偶有顯示~)以下圖:
僅僅只能拿到相片麼? 其實細心的讀者確定都看到了Keychains 就應該知道這玩意是啥了。好了再看看能獲取到其餘信息不? 好比safari或者其餘APP的本地遺留數據,例如cookie 、 聊天記錄? 看看var/mobile/library下面的sms和cookie信息:
我不會告訴你 var/mobile/Applications 所有是應用的備份文檔信息裏面包含的帳戶密碼,聊天信息等。這裏就不看了,太尼瑪冷了,得進被窩了…
防護措施
這會再看結合USB的那個圖你應該知道兩種防護方法了吧?
哎,很久沒寫文章了有點手生,寫了快一個小時就到此打住了,寫着文章沒有任何惡意,只是想分享一些東西,認識個人人都知道我很樂意分享所掌握的知識而且是無條件的。你會問爲啥從始至終都沒有看到你的「充電寶」,額沒錢買唄,哈哈…