中午吃完飯,看到一個微博中別人轉的央視新聞《別被改裝充電寶盜取隱私》覺得又是啥高大上的東西上了央視,看完後才知道是數字公司的某研究員做的偽裝充電寶盜取隱私的玩意。
視頻地址:http://video.sina.com.cn/p/tech/mobile/n/v/2014-12-01/160464317397.html
心裡豁然開朗,原來這玩意也可以上央視啊!那麼問題來了: 這玩意都應用到了哪些技術,並且那個防護神器又是怎麼實現的?我們這些天天寫腳本的能玩不?還是需要那些玩二進位的牛人幫忙才能完成呢?
那麼下面我給大家介紹一種方法,揭秘攻擊者是如何低成本快速打造一個偽造的充電寶的,以及我們該如何防禦。主要是IOS系統,至於Android的方法我想滿大街都是吧這裡就不說了,以後說不定會在博客中寫下。至於用途嗎不關你是進行物理社工還是什麼的就自由發揮,本文所提技術並不局限於「充電寶」 ,不費話了進入正題。
原理分析
首先,我們來分析下在不了解已有技術情況下假設要從零開始做起,我們是怎麼分析和設計這個東西?我估計大多數人第一個想到的應該是iTunes , 蘋果手機管理的配套軟體,因為在它裡面有個功能是備份數據用的,即使刷機後,只要恢復下數據那麼所有的通訊錄,簡訊,甚至上網信息等等都會被恢復回去,二進位牛如果看到了應該會說逆下iTunes分析下它通訊協議不就完事了。
嗯,確實可以實現奈何我們腳本小子操起IDA跟看天書的應該差不多,不過這裡有一點說的對,那就是通訊協議。如果我們能夠模擬iTunes協議,告訴iPhone我需要給你備份數據,那麼按照它的接受協議把數據copy到存儲單元不就ok了。至於它怎麼去打包那些數據,根據它打包的方式解包不就還原所有數據了。上面我們分析的是如何把數據從手機拿到存儲單元,那麼和充電寶又有什麼關係? 看過那個視頻的應該注意到,手機查到充電寶上面會提示 「是否信任此電腦」 。回想下,我們自己充電的時候是否會提示?那麼在什麼情況下會提示?
是的,在手機數據線插到別人電腦上面的時候會提示!這裡我們在分析下,在正常充電寶上和電腦上面為什同為USB,一個提示一個卻不提示,為後面的防禦做個鋪墊。
我們先看下下圖:
圖是網上找來的, 其中黃色部分為四個usb裡面的觸點, 其中1,4 從圖中可以看到是正負極(雖然只有+,-號),2,3 是 「D+ 和D-」 是什麼呢?其實就是data+ 和 data- 數據信號的輸入和輸出。其實從這張圖上也能猜到為什么正常充電寶不會提示,而插到陌生電腦上會提示。因為在陌生電腦上面data+和data-上面產生了數據信號,所以導致iPhone會進行詢問是否應該信任此設備以進行數據交互,下面看看如何快速實現。
設計實現
上面原理分析了那麼多,還是沒有進入核心部分 「 如何快速製造」 估計罵街的已經開始了….
所需材料:
1. 樹莓派 (raspberry pi) 一枚2. 大號鋰電池(至於多大,看你想要多大容量的充電寶)3. 充電器(為啥要這個?充電寶要充電唄)4. 小燈 led小燈 3-4 枚 (充電寶充電閃爍效果)
上面這些東西怎麼組合? 樹莓派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 -lidevicebackup 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的那個圖你應該知道兩種防禦方法了吧?
1. 提示信任信息的時候如果是充電寶,堅決選NO2. 也就是數字公司的「防禦神器」切掉USB的data數據(猜測數字公司這麼幹的)
哎,好久沒寫文章了有點手生,寫了快一個小時就到此打住了,寫著文章沒有任何惡意,只是想分享一些東西,認識我的人都知道我很樂意分享所掌握的知識並且是無條件的。你會問為啥從始至終都沒有看到你的「充電寶」,額沒錢買唄,哈哈…
版權資訊
原創作品FreeBuf獨家首發,我博客都還沒發布
weibo: @creturn
blog: www.creturn.com
後面有時間了再寫個IOS關機竊聽的東西,哎,上次吃飯時候說要弄一個,感覺給自己挖了個坑…
[本文由作者creturn原創並投稿FreeBuf,版權屬於creturn,轉載須註明來自FreeBuf.COM]