iOS逆向工程之KeyChain與Snoop-it,keychainsnoop-it

來源:互聯網
上載者:User

iOS逆向工程之KeyChain與Snoop-it,keychainsnoop-it

今天部落格的主題是Keychain, 在本篇部落格中會通過一個登陸的Demo將使用者名稱密碼存入到KeyChain中,並且查看一下KeyChain中存的是什麼東西,把這些內容給匯出來。當然本篇部落格的重點不是如何使用Keychain來儲存你的使用者名稱和密碼了。不過今天的部落格中會用到這些知識。Apple的開發著文檔上有Keychain的完整使用執行個體(請參見iOS Keychain Services Tasks)。今天部落格中使用者名稱和密碼的儲存和更新就是使用的官方文檔給的樣本。也就是說,直接拷貝的開發文檔上的代碼呢,這些代碼今天就不往上拷貝了,具體的看官方的開發文檔即可。

今天部落格的主題是,將使用者名稱和密碼進行儲存,然後在下次登入的時候從鑰匙串進行載入。當然keychain在同一個組中是可以共用的,也就是說同一個開發人員帳號下的App可以進行keychain的共用的。我們先不將使用者名稱密碼進行加密,直接存在keychain中,然後看一下效果。在然後就得使用一些加密策略對使用者名稱密碼進行處理了。下方會給出具體的實現細節。

 

一、KeyChain的使用

KeyChain的使用在此呢不做多說,因為我之前也沒怎麼用過Keychain呢,今天部落格中關於KeyChain操作的代碼主要來自於蘋果的開發文檔。下方中的內容,是對keyChain的操作進行了一個簡單的封裝,keychainData用於暫存將要儲存到keychain中的資料。genericPasswordQuery則用於從KeyChain中查詢資料,kKeychainItemIdentifier就是我們儲存在keyChain中的資料的唯一標示了。

其他關於KeyChain的作業碼都可以在上述串連的開發文檔中找到,在此就不做過多贅述了。

    

 

封裝完KeyChainManager後,我們就可以調用這個類的單例來進行KeyChain的操作了。下方就是KeyChainManager的使用方式,從下方中,可以看出,將AES加密的代碼給注釋掉了,也就是傳給KeyChainManager什麼內容,就會儲存什麼內容的。關於Keychain的使用就先說這麼多,還是那句話,上面的Apple官方文檔講的很清楚了,在此就不做過多贅述了。

  

 

二、查看Keychain資料庫中的內容

越獄手機中我們是可以查看Keychain中所儲存的內容的。keychain在我們是以資料庫的形式儲存在裝置上的,儲存目錄為“/private/var/Keychains”。剛好我旁邊就有越獄裝置,下方就是keychain的儲存位置,下方這個keychain-2.db正是鑰匙串儲存內容的資料庫。

  

既然我們找到了這個檔案的話,那麼我們可以將他拷貝到Mac上,可以看看其儲存的是神馬內容。將上述檔案考到Mac上後,我們可以使用SQLiteManager開啟,可以看一下裡邊的內容。下方是keychain-2.db這個資料庫中的結構,其中有5張表,我們可以重點關注一下genp這張表的結構和內容。

  

下方這個是對keychainData字典中的資料進行的列印,也就是說下方的資料是從Keychain中查詢出來的。我們可以看出下方字典的key與genp表中的欄位是相對應的,所以嘍,我們存在keychain中的一些資料實際上是儲存在genp這張表中的。

  

下方是我們對相關資料進行的查詢,表中的資料是非常的多的,不過我們有SQL語句不是,可以根據自己的資訊對資料進行查看。當然從這直接看到的一些資料即使你存入Keychain中是沒有加密的資料,在表中也是進行加密處理的。這一點還是相對安全的。

  

 

三、使用Snoop-it來抓取相應app中Keychain中的資料

我們可以使用Snoop-it來查看一些App中的資料,在此我們就以我自己寫的Demo為例。之前我們存在Keychain中的資料,在代碼中沒有做任何的處理,就以字串的形式直接儲存的,那麼接下來我們就要使用Snoop-it來查看這些資料。

1.簡述Snoop-it的配置與使用

Snoop-it這個工具非常強大,查看keychain中儲存的資料是其功能之一,接下來就來認識一下這個工具。首先在你的Cydia商店中把這個(http://repo.nesolabs.de)源添加上,然後搜尋snoop-it進行安裝即可。安裝後你的手機上會多一個帶著黃色帽子的小狗表徵圖的App, 這個就是我們要使用的Snoop-it。下方就是Snoop-it開啟時的介面。點擊“Select App Store Apps”可以選擇你要分析的App, 在Settings中可以進行相應的配置。

  

 

在Mac瀏覽器中輸入上述http的訪問地址,然後開啟你選擇監聽的App, 重新整理頁面即可。從下方中我們是可以看到一些儲存的資訊是以明文的形式被擷取到的。這就說明直接以明文的形式儲存資訊還是有一定風險的,所以我們要對資料進行加密。

  

我們將代碼中的AES加密的相關代碼開啟,將加密後的資料存放區到keychain中看一下效果。下方代碼就是調用AES加密模組,將資料加密後在儲存到Keychain中。開啟後,我們重新運行工程,然後再觀察其效果。 

  

當然,我們對資料進行AES加密,使用Snoop-it監聽到的就是加密後的資料,這樣一來就增加了逆向工程的難度。

  

 

經過上述步驟,我們可以看出,將使用者名稱和密碼儲存到Keychain中,為了安全起見呢還是要進行加密處理的呢。說到這兒了,今天做這個Demo的時候,把App間共用keychain資料的內容也給搞了一下,過程並不複雜,需要將Keychain Sharing開關開啟,並且添加上其他App的Boundle ID即可。 

  

 

四、Snoop-it的其他作用

Snoop-it是很強大滴,接下來再看一下Snoop-it的另一個強大的功能。它可以瀏覽你手機上App的類的層級,當然在AppStore上下載的App也是適用的。並且可以查看該App中某個檔案的屬性和方法。方法是該類對應的所有方法,即使在.h檔案中沒有留調用介面,也是可以查看的,功能還是蠻強大滴。好了今天的部落格就到這兒吧。

  

 

五、Keychain-Dump

我們還可以通過KeyChain-Dump這個工具來查看鑰匙串中的內容,也就是適用keychain-dump可以匯出keychain中的資料。keychain-dump在github上的為(https://github.com/ptoomey3/Keychain-Dumper)。將keychain-dump這個二進位檔案拷貝到越獄裝置上進行執行即可。剛拷貝過去的二進位檔案是沒有執行許可權的,下面為了省事,直接賦值了一個最高許可權,然後就可以執行該二進位檔案了。

  

執行完後,會匯出keychain中儲存的內容,下方就是我們上述Demo在keychain中儲存的資料。

   

在瀏覽資料的時候無意中看到了比較敏感的資料。下面這個是家裡的WiFi帳號和密碼,可見,是明文儲存的呢。之前用這個裝置儲存的所有WiFi密碼都可以看到呢,直接搜AirPort就可以了。

  

 

由於個人原因呢,今天部落格中所使用的登陸Demo就不往github上放了,還望大家諒解。 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.