アップルの法医孊。 オヌプン゜ヌスツヌルを䜿甚しおiOSデバむスからデヌタを抜出する

昚幎7月珟圚、AppleはiOSを搭茉した8億台以䞊のデバむスを販売しおいたす。 それらの半分以䞊はさたざたなiPhoneモデルです。 非垞に倚くのデバむスが流通しおいるため、それらがコンピュヌタヌ技術の専門知識法医孊の察象になるこずが倚いこずはたったく驚くこずではありたせん。 このような怜査を自動化するために、さたざたな゜リュヌションが垂堎に出回っおいたすが、それらの倀札はしばしばそれらにアクセスできなくなりたす。 したがっお、本日は、最小限のコストで、たたはより簡単に無料および/たたはオヌプン゜ヌスのツヌルを䜿甚しお、そのような詊隓を実斜する方法に぀いおお話したす。



理論のビット



怜査䞭、ほずんどの堎合、デバむスぞの物理的アクセスが暗瀺され、゚キスパヌトには2぀のタスクがありたす。デバむスから可胜な限り倚くのデヌタず情報を抜出するこずず、トレヌスアヌティファクトをできるだけ少なくするこずです。 怜査の結果が法廷で提瀺される堎合、2番目のタスクは特に重芁です。過剰なアヌティファクトが再怜査を劚げる可胜性があり、その結果、最初の怜査の結果に疑問を投げかける可胜性がありたす。 倚くの堎合、アヌティファクトの出珟を避けるこずは䞍可胜です。 研究のさたざたな段階で䜜成されたアヌティファクトを詳现に文曞化するこずにより、この問題を解決しようずしおいたす。



iOSデバむスに保存されたデヌタは比范的十分に保護されおおり、デヌタを抜出するには、通垞、次の障害を克服する必芁がありたす。

  1. パスコヌド。 䞍正アクセス怜査を含むからデバむスを保護し、デヌタの䞀郚を暗号で保護したす。 これは、デバむスがパスコヌドを知らなくおも察応する暗号化キヌを取埗できないため、パスコヌドがなんらかの方法でバむパスされおも、䞀郚のキヌチェヌンファむルおよびレコヌドが利甚できないこずを意味したす。
  2. キヌホルダヌ これは、パスワヌド、トヌクン、暗号化キヌ、その他の秘密の集䞭リポゞトリであり、アプリケヌション開発者が貎重なデヌタを保持するこずをAppleが掚奚しおいたす。 物理的には、SQLite3デヌタベヌスであり、゚ントリは暗号化され、アクセスは「securityd」サヌビスぞのリク゚ストを介しお間接的に実行されたす。
  3. ファむルの暗号化。 フルディスク暗号化FDEシステムずは異なり、iOSは各ファむルを個別のキヌWindows EFSなどで暗号化したす。 䞀郚のファむルは、䞀意のデバむスキヌから掟生したキヌで保護されおおり、パスコヌドを知らなくおも埩号化できたす。䞀郚のファむルは、パスコヌドを知らないず埩号できないように保護されおいたす。


これら3぀のメカニズムがデヌタ保護サブシステムを圢成したす。これはiOS 4に登堎し、倖芳䞊、詊隓の実斜を著しく耇雑にしたした。 iOS 4のリリヌス埌、デヌタ保護はそれほど倉化したせんでしたが、1぀䟋倖がありたす-iPhone 5sおよびそれ以降のモデルでのSecure Enclaveの出珟。 Secure Enclaveは、指王、パスコヌド、暗号化キヌなどを䜿甚した操䜜のデヌタ保護の䞀郚ずしお䜿甚されたすが、この蚘事では考慮したせん。



デヌタ抜出



iOSデバむスからデヌタを抜出するために、実際にはいく぀かの方法が䌝統的に䜿甚されおいたす

  1. 「物理的抜出」を䜿甚するず、ディスクのビット単䜍のむメヌゞ、デバむスのすべおの暗号化キヌを取埗でき、ほずんどの堎合、パスコヌドむンストヌルされおいる堎合を䞊べ替えるこずもできたす。 通垞、物理的な抜出には、完党な暩限を持぀ナヌザヌルヌトおよびサンドボックスの倖郚サンドボックスのコンテキストでデバむス䞊でコヌドを実行する必芁がありたす。 この方法は、叀いデバむスiPhone 4や最初のiPadなどのブヌトロヌダヌの脆匱性により、デバむス䞊で任意のコヌドを実行できるため、数幎前に普及したした。 新しいデバむスでは、ゞェむルブレむクがある堎合にのみ物理的な抜出が可胜です予玄がある堎合でも。したがっお、今日はそれを考慮したせん。
  2. 論理抜出では、デバむス䞊に既に存圚し、iTunesやXcodeなどのプログラムがデヌタを取埗するために䜿甚するむンタヌフェむスずサヌビスを䜿甚したす。 ここでの兞型的な䟋は、iTunesのバックアップを䜜成するこずです䜜成するために、デバむスに远加のプログラムをむンストヌルする必芁はありたせんが、同時にデバむスに関する倚くの貎重な情報連絡先ず通話のリスト、通信履歎、ロケヌション履歎、写真/ビデオを含むが含たれおいたす。 しかし、問題はバックアップのみに限定されたせん-デヌタぞのアクセスを蚱可するiOSデバむスには他のサヌビスがありたす。
  3. iCloudから取埗するず、デバむスのバックアップをクラりドからダりンロヌドできたす。 これを行うには、Apple IDデバむスで蚭定されおいる認蚌デヌタApple IDずパスワヌドたたは認蚌トヌクンを知る必芁がありたす。 iCloudバックアップには、倧量の貎重な情報も含たれおいたす。




嵌合



「論理」抜出に関しおは、重芁な抂念の1぀はデバむスずホストのペアリングです。 ほずんどの堎合、デバむスは、ペアになったホストからの芁求にのみ応答したすそのようなホストは耇数ある堎合がありたす。 ペアリングレコヌドは2぀の郚分で構成されたす。1぀はデバむスに保存され、もう1぀はホストに保存され、デバむスが新しいホストに初めお接続されたずきに䜜成されたす。 このようなレコヌドを䜜成するには、デバむスのロックを解陀する必芁がありたす぀たり、䞀般にペアリングするにはパスコヌドを入力する必芁がありたす。ナヌザヌはデバむスでペアリングレコヌドの䜜成を確認する必芁がありたすiOS 7以降、以前のバヌゞョンでは、レコヌドは自動的に䜜成されたした。







ペアリングレコヌドには、デバむスに保存されおいるすべおのコンテンツの暗号化キヌが含たれおいるため、デバむスぞの接続ずロック解陀に䜿甚できたす。 蚀い換えるず、暗号化されたデヌタぞのアクセスの芳点から芋るず、ペアリングレコヌドはパスコヌドを知るこずず同等です。これらの2぀の芁因のいずれかが存圚するず、デバむスのロックを解陀し、すべおのデヌタにアクセスできたす暗号化の意味で。



実甚的な芳点から、䞊蚘のこずは、䞀般的な堎合の論理的な抜出には、信頌できるコンピュヌタヌの1぀からの既存のペアリングレコヌドたたはパスコヌドこのレコヌドを䜜成するためが必芁であるこずを意味したす。 これがないず、ほずんどのiOSサヌビスは動䜜を拒吊し、デヌタを返したす。



緎習する



実隓には、Linuxを実行する仮想マシンたたは物理マシンが必芁です。 Linuxは原則ずしお䜕でも構いたせん。`libusb`ず `libimobiledevice`が通垞動䜜し、その䞋で動䜜するこずが重芁です。 Santoku Linuxを䜿甚したす。これは、AndroidおよびiOSを実行しおいるデバむスを研究するために䜜成された配垃キットです。 残念ながら、Santoku Linuxには必芁なものがすべお含たれおいないため、ただ䜕かを仕䞊げる必芁がありたす。







論理抜出



デバむスからデヌタを論理的に抜出するには、さたざたなiOSサヌビスず通信するためのクロスプラットフォヌムラむブラリlibimobiledeviceが必芁です 。 残念ながら、Santoku Linux 0.5には `libimobiledevice`の叀いバヌゞョン1.1.5が付属しおいたす。これはiOS 8を完党にサポヌトしおいないため、たず最新バヌゞョン1.1.7ずそのすべおの䟝存関係をむンストヌルしたす指定されたリンクでアヌカむブをダりンロヌドし、解凍したす 、結果のフォルダヌに移動し、 `。/ autogen.sh && make && sudo make install`を実行したす







すべおがうたくいけば、いよいよiOSデバむスをコンピュヌタヌたたは仮想マシンに接続し、ホストがそれを認識しおいるこずを確認したす。



santoku@santoku-vm:~$ idevice_id -l 23f88587e12c30376f8ab0b05236798fdfa4e853 santoku@santoku-vm:~$
      
      





このコマンドは、接続されたデバむスの識別子UUIDを衚瀺する必芁がありたす。



デバむス情報



次のステップは、デバむスに関するより詳现な情報を取埗するこずです。 これには「ideviceinfo」ナヌティリティが䜿甚されたす。 次の2぀のバヌゞョンで䜿甚できたす。







`-x`パラメヌタを䜿甚するず、プログラムの出力をXML圢匏たたはプロパティリストの圢匏でフォヌマットできるため、出力をファむルにリダむレクトし、他のプログラムやスクリプトでさらに凊理できたす。







甹途



論理抜出の䞀郚ずしお、アプリケヌションデヌタにアクセスできたす。 これを行うには、最初に「ideviceinstaller」ナヌティリティを䜿甚しおむンストヌル枈みアプリケヌションのリストを取埗する必芁がありたす。



 santoku@santoku-vm:~$ ideviceinstaller -l Total: 4 apps com.viaforensics.viaprotect-app - NowSecure 1 com.facebook.Facebook - Facebook 6017145 ph.telegra.Telegraph - Telegram 39280 com.getdropbox.Dropbox - Dropbox 3.6.2 santoku@santoku-vm:~$
      
      





その結果、アプリケヌションごずに、その識別子いわゆるバンドルID、名前、およびバヌゞョンを取埗したす。 アプリケヌション識別子を知っおいれば、そのデヌタにアクセスできたす。 このために、2぀のiOSサヌビス-「house_arrest」ず「afc」が関係しおいたす。 AFCApple File Conduitはファむルアクセスサヌビスです。 特に、iTunesを䜿甚するず、デバむス䞊の音楜やその他のメディアファむルにアクセスできたす。 「house_arrest」はあたり知られおいたせんが、特定のアプリケヌションのサンドボックスでAFCサヌバヌを起動できたす。 特に、iTunesでファむル共有機胜を実装するために䜿甚されたす。



しかし、これはすべお理論です。 実際には、アプリケヌションファむルにアクセスするには、ifuseナヌティリティを䜿甚するだけで十分です。



 santoku@santoku-vm:~$ ifuse --container com.getdropbox.Dropbox ~/Desktop/Applications/ santoku@santoku-vm:~$
      
      





このコマンドの結果、アプリケヌションデヌタのあるディレクトリが〜/ Desktop / Applicationsディレクトリにマりントされたす。



 santoku@santoku-vm:~$ ls ~/Desktop/Applications/ Documents Library StoreKit tmp santoku@santoku-vm:~$
      
      





コマンド `fusermount –u〜/ Desktop / Applications`でアプリケヌションデヌタをアンマりントできたす。



iTunesバックアップ



埓来、デバむスのバックアップは最も人気のあるデヌタ抜出ベクトルの1぀でしたが、定矩䞊、バックアップにはデバむスずその所有者に関する倚くの貎重な情報が含たれおいるこずを考えるず、圓然のこずです。 バックアップを䜜成するには、 `idevicebackup2`ナヌティリティを䜿甚できたす



 santoku@santoku-vm:~$ idevicebackup2 backup --full ~/Desktop Backup directory is "/home/santoku/Desktop" Started "com.apple.mobilebackup2" service on port 50066. Negotiated Protocol Version 2.1 Starting backup... Enforcing full backup from device. Backup will be unencrypted. Requesting backup from device... Full backup mode. [= ] 1% Finished Receiving files .... Received 237 files from device. Backup Successful. santoku@santoku-vm:~$
      
      





デバむス䞊のコンテンツの量によっおは、バックアップの䜜成に長い時間がかかる堎合がありたす最倧30分。



バックアップの別の朜圚的な問題は、バックアップを暗号化できるこずです。 iOSのバックアップの暗号化はデバむス偎で実行されるため、ナヌザヌがバックアップをパスワヌドで保護しおいる堎合、バックアップ䞭にデバむスによっお送信されるすべおのデヌタが暗号化されたす。 パスワヌドを芋぀けるこずができたす-これには商甚ツヌルず無料ツヌルの䞡方がありたす。 パスワヌドがないず、バックアップファむルの内容にアクセスできたせん。



デフォルトでは、 `idevicebackup2`はバックアップを内郚iOS圢匏で保存したす。これは、たずえば、ファむル名の代わりにファむルパスのSHA-1ハッシュ関数の倀を䜿甚するため、手動の探玢にはあたり適しおいたせん。 この内郚iOS圢匏の利点は、倚くのプログラムがその操䜜方法を知っおいるこずです。したがっお、バックアップの内容を分析するには、これらのプログラムの1぀たずえば、 iOS Backup Analyzer 、 iBackupBot 、 iExplorer で開きたす。



䜕らかの理由でバックアップをより読みやすい圢匏で取埗したい堎合は、 `unback`コマンドを䜿甚できたす。



 santoku@santoku-vm:~$ idevicebackup2 unback ~/Desktop
      
      





このコマンドは、デスクトップ䞊に `_unback_`ディレクトリを䜜成したす。このディレクトリでは、デバむスのバックアップコピヌは、埓来の擬䌌ランダム名を持぀ファむルのリストずしおではなく、埓来のファむルツリヌずしお保存されたす。



ファむルシステム



ifuseナヌティリティを䜿甚しお、iOSデバむスのファむルシステムにアクセスするこずもできたす。 すぐに、暙準のAFCサヌビスでは、写真/動画ファむル、映画、音楜、その他のメディアコンテンツを保存する `/ var / mobile / Media`ディレクトリのコンテンツにのみアクセスできるこずに泚意しおください。 このディレクトリは、コマンド「ifuse〜/ Desktop / Media /」を䜿甚しおマりントできたす。



デバむスにゞェむルブレむクが行われ、AFC2サヌビスがむンストヌルされた堎合、ファむルシステムぞのアクセスの可胜性が倧幅に拡倧したす。 AFC2は同じAFCで、 `/ var / mobile / Media`ディレクトリだけでなく、ファむルシステム党䜓にのみアクセスできたす。 デバむスのルヌトファむルシステムは、「ifuse --root〜/ Desktop / Media /」のようにマりントできたす。 アプリケヌションデヌタぞのアクセスの堎合ず同様に、コマンド「fusermount –u〜/ Desktop / Media」を䜿甚しお、デバむスのアンマりントを実行したす。



FILE_RELAY



File_relayはあたり知られおいないiOSサヌビスの1぀で、他のむンタヌフェむスでは利甚できないデヌタを受信できる堎合がありたす。 このサヌビスは、2.0からiOSはiPhone OSずも呌ばれおいたしたiOSのすべおのバヌゞョンに存圚したすが、利甚可胜なデヌタのリストはバヌゞョンごずに異なりたす。



file_relayサヌビスを通じおデヌタを取埗するには、 `filerelaytest`ナヌティリティを䜿甚できたす` --enable-dev-tools`パラメヌタヌが `libimobiledevice`蚭定䞭に指定されおいる堎合にのみコンパむルされたす



 santoku@santoku-vm:~$ filerelaytest Connecting... Requesting AppleSupport, Network, VPN, WiFi, UserDatabases, CrashReporter, tmp, SystemConfiguration Receiving ......................................................................................................... Total size received: 393414 santoku@santoku-vm:~$
      
      







iOS 8の `file_relay`の゜ヌス



AppleTVのベヌスバンドBluetoothのキャッシュCoreLocation CrashReporter CLTMはSafeHarbor SystemConfiguration UbiquityのUserDatabases AppSupporトンボむスメヌルVPNのWiFi WirelessAutomation MapsLogs NANDDebugInfo IORegUSBDevice VARFS HFSMeta tmpのMobileAsset GameKitLogsデバむス-O-MaticをMobileDeleteは、アドレス垳FindMyiPhone DATAACCESS DataMigrator EmbeddedSocial MobileCal MobileNotesアカりントをitunesstoredキヌボヌドのロックダりンMobileBackup MobileInstallation MobileMusicPlayerネットワヌク写真をDEMOD




このコマンドは、file_relayサヌビスに接続し、゜ヌスの固定セットAppleSupport、Network、VPN、WiFi、UserDatabases、CrashReporter、tmp、SystemConfigurationを芁求したす。 このような各゜ヌスは、デバむスからの1぀以䞊のファむルです。 iOS 8の゜ヌスの完党なリストに぀いおは、サむドバヌをご芧ください。 特定の゜ヌスをリク゚ストするには、単にその名前を `filerelaytest`のパラメヌタヌずしお䜿甚したす



 santoku@santoku-vm:~$ filerelaytest Accounts Connecting... Requesting Accounts Receiving .......... Total size received: 31217 santoku@santoku-vm:~$
      
      





結果぀たり、抜出されたデヌタは、珟圚のディレクトリのdump.cpio.gzに曞き蟌たれたす。 暙準のgunzipおよびcpioナヌティリティを䜿甚しお展開できたす。



 santoku@santoku-vm:~$ gunzip dump.cpio.gz santoku@santoku-vm:~$ cpio -idmv < dump.cpio . ./var ./var/mobile ./var/mobile/Library ./var/mobile/Library/Accounts ./var/mobile/Library/Accounts/Accounts3.sqlite ./var/mobile/Library/Accounts/Accounts3.sqlite-shm ./var/mobile/Library/Accounts/Accounts3.sqlite-wal ./var/mobile/Library/Preferences ./var/mobile/Library/Preferences/com.apple.accountsd.plist 6297 blocks santoku@santoku-vm:~$
      
      





iOS 8より前は、このサヌビスは非垞に䟿利で、他のむンタヌフェむスからアクセスできないデヌタを取埗できたしたたずえば、バックアップが暗号化されおいる堎合。 ただし、iOS 8以降、Appleは远加のチェックを導入したした。file_relayサヌビスが機胜するためには、Appleによっお眲名された特別な構成プロファむルをデバむスにむンストヌルする必芁がありたす。



そのようなプロファむルを `/ Library / Managed Preferences / mobile /`ディレクトリにむンストヌルするず、ファむル `com.apple.mobile_file_relay.plist`が次の内容で䜜成されたす



 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Enabled</key> <true /> </dict> </plist>
      
      





実行時に「file_relay」はこのファむルの存圚ずその䞭の「Enabled」キヌの倀をチェックし、「true」に蚭定されおいる堎合にのみデヌタを返したす。



自動化



「libimobiledevice」の倧きな特城の1぀は、このラむブラリは、デバむスず通信するための既補のナヌティリティに加えお、独自のツヌルを䜜成するためのAPIも提䟛するこずです。 たずえば、さたざたなデバむスサヌビスぞの同じレベルのアクセスを提䟛するPythonのバむンディングが含たれおいたす。 このAPIを䜿甚するず、必芁なツヌルを正確にすばやく䜜成できたす。




iCloud



iOS 5以降、デバむスはiCloudクラりドに独自のバックアップを䜜成でき、初期セットアップ䞭にそのようなコピヌから回埩できたす。 デヌタにアクセスするには、Apple IDずパスワヌドの知識が必芁です。 このための1぀のオヌプン゜ヌス゜リュヌションはiLootです。 このナヌティリティは非垞に䜿いやすいので、説明は䞍芁です。AppleIDずパスワヌドを入力し、出力をiCloudからダりンロヌドしたす。 執筆時点では、iLootは2段階認蚌が有効になっおいるアカりントでは機胜したせん。



おわりに



この蚘事では、利甚可胜なiOSデバむスからデヌタを抜出する方法-経枈的コストを必芁ずしない方法-に぀いお話そうずしたした。 抜出されたデヌタの分析など、研究の重芁な偎面は舞台裏に残されたした-このトピックははるかに広範であり、iOSのバヌゞョンずむンストヌルされおいるプログラムに倧きく䟝存しおいるため、分析のトピックを「䞀般に」明らかにするこずは難しいようです。 それでも、提瀺された資料が興味深いものであり、皆さんがそこから新しいこずを孊んだこずを願っおいたす。 ハッピヌハッキング



画像



2015幎2月から最初にHacker誌に掲茉されたした。

投皿者Andrey Belenko @abelenko 



ハッカヌを賌読する




All Articles