2016年10月13日

bitlockerで暗号化されたHDDからLinuxマシンでデータを取り出す

タイトルまま。

Windwos PCが寿命が尽きたのでHDDからデータを取り出す。
といってもたいていは物理的に別のPCに繋いでコピーとすれば良いはず。
が、今回はbitlockerでHDDは暗号化済み。
そのままではNTFSが認識されないのでマウントできない。
ここでやったことは
  • bitlockerの解除
  • 解除されたdiskimageをマウント
  • 当面必要なデータはコピー
  • 残りはimageファイルとしてそのまま保存

その流れをまとめてみた。
 

まず、取り出したHDDをLinuxマシンに接続。dmesgでどこにつながったか確認。
[2937798.229654] usb 2-2: new high-speed USB device number 4 using ehci-pci
[2937798.371790] usb 2-2: New USB device found, idVendor=152d, idProduct=2338
[2937798.371795] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=5
[2937798.371798] usb 2-2: Product: USB to ATA/ATAPI Bridge
[2937798.371801] usb 2-2: Manufacturer: JMicron
[2937798.371803] usb 2-2: SerialNumber: 22232C6C4084
[2937799.229266] usb-storage 2-2:1.0: USB Mass Storage device detected
[2937799.229331] scsi host7: usb-storage 2-2:1.0
[2937799.229399] usbcore: registered new interface driver usb-storage
[2937799.265541] usbcore: registered new interface driver uas
[2937800.227347] scsi 7:0:0:0: Direct-Access     TOSHIBA  MK2576GSX        2N   PQ: 0 ANSI: 2 CCS
[2937800.228157] sd 7:0:0:0: Attached scsi generic sg5 type 0
[2937800.228678] sd 7:0:0:0: [sde] 488397168 512-byte logical blocks: (250 GB/233 GiB)
[2937800.229500] sd 7:0:0:0: [sde] Write Protect is off
[2937800.229504] sd 7:0:0:0: [sde] Mode Sense: 00 38 00 00
[2937800.230391] sd 7:0:0:0: [sde] Asking for cache data failed
[2937800.230397] sd 7:0:0:0: [sde] Assuming drive cache: write through
[2937800.310348]  sde: sde1 sde2 sde3
[2937800.314331] sd 7:0:0:0: [sde] Attached SCSI disk
今回は /dev/sde に繋がっていることを確認。
次に bitlocker で暗号化されたHDDのパーテイションを解凍しないと中身(NTFS)すら見えてこない。
というわけで ツールの導入。今回はdislockerを利用することに。

『 Aorimn/dislocker: FUSE driver to read/write Windows' BitLocker-ed volumes under Linux / Mac OSX https://github.com/Aorimn/dislocker 』 

ここからツールをゲットします。
cd /tmp
git clone https://github.com/Aorimn/dislocker.git
# ubuntu 16.04では以下のライブラリも事前に入れないとcmakeが通らない
apt install libmbedcrypto0 libmbedtls-dev libfuse-dev
mkdir -p build_dislocker; cd build_dislocker
cmake ../dislocker/
make
sudo make install
とりあえず、dislocker導入完了。 見ても意味わからんけど興味本位でメタデータを見るw
sudo dislocker-metadata -V /dev/sde1                                                                                                                                                                                       
Thu Oct 13 11:37:22 2016 [INFO] dislocker by Romain Coltel, v0.6.1 (compiled for Linux/x86_64)                                                                                                                                        
Thu Oct 13 11:37:22 2016 [INFO] Compiled version: :                                                                                                                                                                                   
Thu Oct 13 11:37:22 2016 [INFO] Volume GUID (INFORMATION OFFSET) supported                                                                                                                                                            
Thu Oct 13 11:37:22 2016 [INFO] BitLocker metadata found and parsed.                                                                                                                                                                  
Thu Oct 13 11:37:22 2016 [INFO] =====[ Volume header informations ]=====                                                                                                                                                              
Thu Oct 13 11:37:22 2016 [INFO]   Signature: '-FVE-FS-'                                                                                                                                                                               
Thu Oct 13 11:37:22 2016 [INFO]   Sector size: 0x0200 (512) bytes                                                                                                                                                                     
Thu Oct 13 11:37:22 2016 [INFO]   Sector per cluster: 0x08 (8) bytes                                                                                                                                                                  
Thu Oct 13 11:37:22 2016 [INFO]   Reserved clusters: 0x0000 (0) bytes                                                                                                                                                                 
Thu Oct 13 11:37:22 2016 [INFO]   Fat count: 0x00 (0) bytes                                                                                                                                                                           
Thu Oct 13 11:37:22 2016 [INFO]   Root entries: 0x0000 (0) bytes                                                                                                                                                                      
Thu Oct 13 11:37:22 2016 [INFO]   Number of sectors (16 bits): 0x0000 (0) bytes                                                                                                                                                       
Thu Oct 13 11:37:22 2016 [INFO]   Media descriptor: 0xf8 (248) bytes                                                                                                                                                                  
Thu Oct 13 11:37:22 2016 [INFO]   Sectors per fat: 0x0000 (0) bytes                                                                                                                                                                   
Thu Oct 13 11:37:22 2016 [INFO]   Hidden sectors: 0x00000800 (2048) bytes
Thu Oct 13 11:37:22 2016 [INFO]   Number of sectors (32 bits): 0x00000000 (0) bytes
Thu Oct 13 11:37:22 2016 [INFO]   Number of sectors (64 bits): 0x0000000000000000 (0) bytes
Thu Oct 13 11:37:22 2016 [INFO]   MFT start cluster: 0x0000000000060001 (393217) bytes
Thu Oct 13 11:37:22 2016 [INFO]   Metadata Lcn: 0x0000000000000000 (0) bytes
Thu Oct 13 11:37:22 2016 [INFO]   Volume GUID: '4967D63B-2E29-4AD8-8399-F6A339E3D001'
Thu Oct 13 11:37:22 2016 [INFO]   First metadata header offset:  0x0000000004510000
Thu Oct 13 11:37:22 2016 [INFO]   Second metadata header offset: 0x000000007b98c000
Thu Oct 13 11:37:22 2016 [INFO]   Third metadata header offset:  0x00000000fa111000
Thu Oct 13 11:37:22 2016 [INFO]   Boot Partition Identifier: '0xaa55'
Thu Oct 13 11:37:22 2016 [INFO] ========================================
Thu Oct 13 11:37:22 2016 [INFO]
Thu Oct 13 11:37:22 2016 [INFO] =====================[ BitLocker information structure ]=====================
Thu Oct 13 11:37:22 2016 [INFO]   Signature: '-FVE-FS-'
Thu Oct 13 11:37:22 2016 [INFO]   Total Size: 0x0ba0 (2976) bytes (including signature and data)
Thu Oct 13 11:37:22 2016 [INFO]   Version: 2
Thu Oct 13 11:37:22 2016 [INFO]   Current state: ENCRYPTED (4)
Thu Oct 13 11:37:22 2016 [INFO]   Next state: ENCRYPTED (4)
Thu Oct 13 11:37:22 2016 [INFO]   Encrypted volume size: 109202898944 bytes (0x196d000000), ~104144 MB
Thu Oct 13 11:37:22 2016 [INFO]   Size of convertion region: 0 (0)
Thu Oct 13 11:37:22 2016 [INFO]   Number of boot sectors backuped: 16 sectors (0x10)
Thu Oct 13 11:37:22 2016 [INFO]   First metadata header offset:  0x4510000
Thu Oct 13 11:37:22 2016 [INFO]   Second metadata header offset: 0x7b98c000
Thu Oct 13 11:37:22 2016 [INFO]   Third metadata header offset:  0xfa111000
Thu Oct 13 11:37:22 2016 [INFO]   Boot sectors backup address:   0x9310b000
...以下長いので略
BitLocker metadata が見つかっているから良しw
というわけでとりあえずNTFSが見れるように以下のコマンドを入れます。
sudo mkdir -p /mnt/winc
sudo dislocker -r -V /dev/sde1 -pXXXXXX-YYYYYY-ZZZZZZ-AAAAAA-BBBBBB-CCCCCC-DDDDDD-EEEEEE -- /mnt/winc
XXXXXX-はそのパーテイションのリカバリーパスワードです。
ちなみにdislockerで使えるオプションは以下。
dislocker by Romain Coltel, v0.6.1 (compiled for Linux/x86_64)
Compiled version: :

Usage: dislocker [-hqrsv] [-l LOG_FILE] [-o OFFSET] [-V VOLUME DECRYPTMETHOD -F[N]] [-- ARGS...]
    with DECRYPTMETHOD = -p[RECOVERY_PASSWORD]|-f BEK_FILE|-u[USER_PASSWORD]|-k FVEK_FILE|-c

Options:
    -c, --clearkey        decrypt volume using a clear key (default)
    -f, --bekfile BEKFILE
                          decrypt volume using the bek file (on USB key)
    -F, --force-block=[N] force use of metadata block number N (1, 2 or 3)
    -h, --help            print this help and exit
    -k, --fvek FVEK_FILE  decrypt volume using the FVEK directly
    -l, --logfile LOG_FILE
                          put messages into this file (stdout by default)
    -o, --offset OFFSET   BitLocker partition offset (default is 0)
    -p, --recovery-password=[RECOVERY_PASSWORD]
                          decrypt volume using the recovery password method
    -q, --quiet           do NOT display anything
    -r, --readonly        do not allow to write on the BitLocker volume
    -s, --stateok         do not check the volume's state, assume it's ok to mount it
    -u, --user-password=[USER_PASSWORD]
                          decrypt volume using the user password method
    -v, --verbosity       increase verbosity (CRITICAL errors are displayed by default)
    -V, --volume VOLUME   volume to get metadata and keys from

    --                    end of program options, beginning of FUSE's ones

  ARGS are any arguments you want to pass to FUSE. You need to pass at least
the mount-point.
このコマンドを実行すると /mnt/winc に dislocker-file という名前でNTFSのraw-imageが生成されます。
これをマウントすれば中身のファイルが取り出せます。
sudo mkdir -p /mnt/winc_data
sudo mount -t ntfs -o ro,loop /mnt/winc/dislocker-file /mnt/winc_data/ ls -l /mnt/winc_data/ 合計 6261698 drwxrwxrwx 1 root root 4096 Jun 25 2012 $Recycle.Bin drwxrwxrwx 1 root root 4096 Mar 24 2012 49021ae0a3d139f6dc6c lrwxrwxrwx 2 root root 60 Jul 14 2009 Documents and Settings -> /mnt/winc_data/Users -rwxrwxrwx 1 root root 0 Jun 27 2012 IO.SYS -rwxrwxrwx 1 root root 0 Jun 27 2012 MSDOS.SYS drwxrwxrwx 1 root root 0 Sep 7 11:48 MSI9b0a6.tmp drwxrwxrwx 1 root root 0 Mar 27 2012 MSOCache drwxrwxrwx 1 root root 0 Apr 6 2012 OEMMedia drwxrwxrwx 1 root root 0 May 23 2014 PerfLogs drwxrwxrwx 1 root root 28672 Aug 1 11:24 Program Files drwxrwxrwx 1 root root 8192 Aug 1 10:27 ProgramData drwxrwxrwx 1 root root 0 Jun 15 2012 Recovery drwxrwxrwx 1 root root 16384 Aug 23 09:29 System Volume Information drwxrwxrwx 1 root root 0 Dec 10 2015 Temp drwxrwxrwx 1 root root 4096 Feb 25 2016 Users drwxrwxrwx 1 root root 0 May 8 2015 WSUS_tool drwxrwxrwx 1 root root 24576 Aug 23 03:27 Windows -rwxrwxrwx 1 root root 24 Jun 11 2009 autoexec.bat -rwxrwxrwx 1 root root 10 Jun 11 2009 config.sys -rwxrwxrwx 1 root root 2747944960 Jan 1 2011 hiberfil.sys -rwxrwxrwx 1 root root 3663929344 Jan 1 2011 pagefile.sys
あとは rsync なりなんなりとデータのコピーをすればオーケー。
そしてなんかの時のために /mnt/winc/dislocker-file を ntfsclon でも cp でも何でも良いのでバックアップとして保存しておけばいつでもマウントしてファイルを取り出すことができます。

このエントリーをはてなブックマークに追加 Share on Tumblr Clip to Evernote
highfrontier at 12:00│Comments(0)TrackBack(0)linux | PC

トラックバックURL

コメントする

このブログにコメントするにはログインが必要です。