スキップしてメイン コンテンツに移動

Kali LinuxのLive USBに暗号化書き込み領域を作る

USBメモリから起動するKali Linux Liveで、ユーザーによるファイルの変更を保存するPersistenceモードを利用する為の手順です。

公式ドキュメントはこちらです。
02. Kali Linux Live | Kali Linux

Persistenceを利用することで、Live OSでありながら、
  • Wi-FiパスワードやVPN設定の保存
  • Live起動OSで用意されていないソフトウェアのインストール
  • 作業データの保存
といったことが可能になります。




Persistenceはライブ起動イメージに対する差分を、後ほど作成するUSBメモリ内の書き込み可能領域に保存する為、元の起動ディスクイメージに対して変更を加えません。起動時にPersistenceを選択しなければ初期状態で起動します。

また、書き込み可能領域はLUKSによる暗号化が可能な為、紛失等のリスクに備えることが出来ます。(有効なパスワードが無ければディスク内容を解読出来ません。)

ISOイメージファイルのダウンロード

Kali Linux Downloads より、「Kali 64bit」もしくは「Kali 32bit」のディスクイメージをダウンロードします。(最近のマシンであれば64bitで問題ないと思います。)

USBメモリへの書き込み

ダウンロードしたISOイメージファイルをUSBメモリに書き込みます。
※危険な作業なので十分に注意して行って下さい。

macOS

ターミナルより、
$ diskutil list
で取得したUSBメモリのデバイスファイルパス(/dev/disk2/dev/disk3等、環境により異なります。)に対して、
$ diskutil unmount /dev/disk2
$ sudo dd if=kali-linux-2017.3-amd64.iso of=/dev/disk2 bs=1m
の様に実行します。

詳しくは公式ドキュメントを参照して下さい。

Windows

USBドライブにISOイメージを書き込む為に、Win32 Disk Imagerを使用します。空のUSBメモリを接続してWindowsのドライブとして認識されていることを確認して下さい。
  1. Win32 Disk Imagerを起動。
  2. Image File にKali LinuxのISOファイル(kali-linux-2017.3-amd64.iso等)を指定。
  3. Device にUSBメモリのドライブを指定する。([E:\][F:\]等、環境によって異なります。「マイコンピューター」等を開いて確認して下さい。)
  4. Write ボタンをクリックして書き込みを実行する。
以上で起動ドライブが完成しました。

Kali LinuxをLive起動する

USBメモリ内へのPersistence用パーティション追加や暗号化ドライブ作成などを行う為に、まずUSBメモリにインストールしたKali LinuxをLive起動します。(このLive OSに必要なツールが含まれています。)

Macの場合 (MacBook Pro Early 2011で確認)

本体にUSBメモリを接続し、Optionキーを押しながら起動します。すると起動ドライブの選択画面になるので、「EFI Boot」を選択して起動して下さい。

起動ドライブの選択画面でEFI bootを選択

※Kali LinuxをUSBから起動するにはMac本体のファームウェアがEFIブートに対応している必要がありますが、どのMacが対応しているかは公式には非公開の様です。2008年頃の非UnibodyモデルのMBPで試したところ、起動しませんでした。

Windowsマシン(PC/AT互換機)の場合

大抵は電源投入後にF2キーを押してBIOSで起動ドライブの優先順位を変更する必要があります。また、UEFIを使用している最近のパソコンはセキュアブートを無効化、BIOS互換モードに変更してから作業する必要があります。「UEFI USB起動」などで検索してみて下さい。

Live起動

無事にUSBから起動してBoot menuが表示されたら、Live Systemを起動します。

一番上のLive SystemまたはLive (amd64)等でreturn

Live Systemのデスクトップ環境

Persistence用暗号化パーティションを作成する

2018/11追記

最新のISOイメージを書き込んだUSBドライブはGPartedでパーティション情報を読み込めなくなっていました。wipefsを使用してドライブからiso9660のシグネチャを消去する必要があります。

1. USBドライブのシグネチャを確認

次のコマンドを実行してパーティションテーブルのシグネチャを表示します。/dev/sdbはUSBドライブのデバイスファイルです。
$ sudo wipefs /dev/sdb
DEVICE OFFSET TYPE    UUID                   LABEL
sdb    0x8001 iso9660 2018-10-16-16-10-29-00 Kali Live
sdb    0x1fe  dos                            

2. iso9660シグネチャを消去

シグネチャにiso9660が含まれていることを確認したら、-oオプションでマジックストリングのオフセット(iso9660は0x8001)を指定して消去します。
$ sudo wipefs -o 0x8001 /dev/sdb
どうやら、パーティションテーブルにiso9660のシグネチャが含まれているとGPartedはパーティション情報を読み込まないようです。

USBメモリの未使用領域に空のプライマリ・パーティションを追加

Live SystemのターミナルからGPartedを起動します。(公式ドキュメントではpartedを使用しますが、こちらの方が分かり易いと思います。)
$ gparted
GPartedが起動したらまず右上のデバイス選択メニューからUSBメモリを選択します。今回は/dev/sdbがUSBメモリのデバイスファイルでした。

USBメモリ(今回は/dev/sdb)に未使用領域(unallocated)がある状態

※「Kali Live」の次にある704KBのfat16領域はEFI bootに使用するので削除しないで下さい。

GPartedで未使用領域(unallocated)を選択した状態で左上のパーティション追加ボタンをクリックし、新たなパーティションの設定をします。サイズは自動的に空き領域全体を使う様に設定されます。"Create as: Primary Partition"で File Systemは"unformatted"にします。

未使用領域全体に空のプライマリ・パーティションを作成する

GParted上に"New Partition #1"が作成されます。更に"Apply All Operations"でデバイスへの書き込みを実行すると実際にパーティションが作成されます。
パーティションが追加された状態

書き込みを実行すると/dev/sdb3が作成されます。続いてこの/dev/sdb3に対してLUKS暗号化設定を行います。

LUKSでの暗号化設定

GParted等で作成した、USBメモリ内の空のプライマリ・パーティション(今回は/dev/sdb3)に暗号化ドライブを作成します。ターミナルでcryptsetupを実行します。
$ cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb3
/dev/sdb3の内容が消える旨の警告を確認したら"YES"と入力し、ドライブの復号化に使うパスワードを二回入力して設定、フォーマットが開始されます。

フォーマットが完了したら下記コマンドで暗号化ドライブ(/dev/sdb3)の復号チャネル(復号化された状態)を/dev/mapper/my_usbにオープンします。
$ cryptsetup luksOpen /dev/sdb3 my_usb

復号チャネル上にext3ファイルシステムを作成し、更に"persistence"というラベルを与えます。※Persistenceはディスクラベルが"persistence"のパーティションを検索して使用するのでラベルが必要です。
$ mkfs.ext3 -L persistence /dev/mapper/my_usb
$ e2label /dev/mapper/my_usb persistence

/dev/mapper/my_usbをLive Systemにマウントし、"persistence.conf"を作成します。
$ mkdir -p /mnt/my_usb
$ mount /dev/mapper/my_usb /mnt/my_usb
$ echo "/ union" > /mnt/my_usb/persistence.conf
$ umount /dev/mapper/my_usb

persistence.confについて詳しくはDebianのドキュメントを参照して下さい。
persistence.conf(5) — live-boot-doc — Debian jessie — Debian Manpages

作業が完了したら復号チャネルをクローズします。
$ cryptsetup luksClose /dev/mapper/my_usb

Live SystemをEncrypted Persistenceで起動する

マシンを再起動し、Boot menuから"Live USB Encrypted Persistence"を選択して起動します。


復号用のパスワードを求められます。


ロックが解除されるとPersistenceのパーティションは/lib/live/mount/以下にマウントされ、Live Systemの/に対する差分が保存されていきます。

gnome-disksで確認するとLUKSパーティション内にpersistence用領域が作成されている

コメント

プロフィール

自分の写真
xoihazard ブログ担当
東京都, Japan
ブログ担当です。お役に立てれば幸いです。

本日のページビュー

このブログの人気の投稿

Kali Linux等のGNOME環境でNordVPNを使用する

今回はOpenVPNを用いてVPN接続するため、NordVPNが提供する地図からサーバを選択するアプリ、CyberSecやKill Switchの様な機能は使えません。Webブラウズが目的であれば、FirefoxやChromeの拡張機能を導入した方が手軽かも知れません。(Kali Linux Firefox ESRでは上手く動作しませんでした。)

macOSでAirPlayを受信する

スマホやタブレットの音声を Wi-Fiネットワーク経由 でオーディオ機器から再生するには、一般的にはAirPlay対応の「オーディオレシーバー」という機器を使用しますが、 Shairport Sync というオープンソースのソフトウェアを使用することでmacOSでもAirPlayの受信・再生が可能です。(オーディオのみ) 2018-01-03 追記: Windows/macOS両対応の 5KPlayer でもAirPlayの受信が可能でした。Homebrew等の導入が面倒であれば、そちらをおすすめします。(個人的にはShairport Syncの方がシンプルで使いやすいと感じます。)