Kali Linux:ISOイメージのセットアップと構築

リムーバブルストレージメディアからKali Linuxをダウンロードすると、多くの状況で役立ちます。 最も単純な形式では、DVD-ROMまたはフラッシュドライブの形式のメディアは、システムの標準ISOイメージを使用して作成されます。 ただし、独自のイメージをアセンブルし、永続的なデータウェアハウスでブータブルメディアを作成することにより、さらに多くの機会が提供されます。 さらに、特別な方法で構成されたシステムイメージが役立つ場合があります。 この資料で翻訳した本「 Kali Linux Revealed 」の第9章の第3および第4セクションは、これらすべてに当てられています。







9.3。 独自のKali Linux ISOを構築する



Kali Linuxの標準バージョンは柔軟性があり、多くの機能を備えています。 インストール後すぐに、多くの困難な問題の解決を開始できます。 もちろん、配布、創造性、忍耐力、および経験に含まれるツールに関する一定レベルの知識は、ここでは害になりません。 ただし、Kaliイメージを構成して、必要なものを含めたり、不要なイメージを削除したりして、システム起動中のアクションの自動実行を設定できます。



そのような特別なイメージの例-DoomのKali ISOおよびKali Evil Wireless Access Point-特別に構成されたKali Linux実装に依存する興味深いプロジェクト。 独自のKali Linux ISOを作成するプロセスをご覧ください。



公式のKaliイメージはlive-buildを使用してコンパイルされます。 これは、ISOイメージの作成のすべての側面を完全に自動化および構成することを可能にする一連のスクリプトです。 live-buid



は、その構成を形成するときにディレクトリ構造を使用します。 この構成と関連するヘルパースクリプトは、 live-build-config



Gitリポジトリにあります。 特別な要件に従ってカスタマイズされたイメージを構築するための基礎として、このリポジトリを使用します。



続行する前に、このセクションに示されているコマンドは、Kali Linuxの現在のバージョンで実行されることを意図していることに注意してください。 Kali以外のOS、またはKaliの古いバージョンでそれらを使用しようとすると、通常は正常に動作しません。



9.3.1。 必要なソフトウェアをインストールする



独自のISOイメージを構築する最初のステップは、必要なパッケージをインストールし、Kali live-build



構成でGitリポジトリをダウンロードすることです。



 # apt install curl git live-build [...] # git clone git://git.kali.org/live-build-config.git [...] # cd live-build-config # ls auto  build_all.sh  build.sh  kali-config  README
      
      





その後、Kaliの更新済み(ただし変更されていない)ISOイメージを既に作成できます。 これを行うには、。 ./build.sh --verbose



コマンドを使用します。 その過程で、イメージに含める必要のあるすべてのパッケージがダウンロードされるため、アセンブリには多くの時間がかかります。 このプロセスを完了すると、 images



ディレクトリで新しいISOイメージを見つけることができます。



9.3.2。 さまざまなデスクトップ環境でライブ画像を構築



live-build



の標準build.sh



スクリプトlive-build



config



ディレクトリの準備を担当します。 live-build



は彼女の存在live-build



待っています。 このスクリプトは、-- --variant



オプションに応じて、さまざまな構成を設定するのに役立ちます。



スクリプトは、 kali-config/common



およびkali-config/variant-X



ファイルを組み合わせてconfig



ディレクトリを作成しますX —



--variant



パラメーターで指定されたオプションの名前です。 このオプションを明示的に指定しない場合、オプションの名前としてdefault



使用されます。



kali-config



フォルダーには、最も一般的なデスクトップ環境のディレクトリが含まれています。





light



バリアントは特殊なケースです。 XFCEに基づいており、アプリケーションの簡略化されたセットを含む公式のライトISOイメージを作成するために使用されます。



たとえば、デスクトップ環境としてKDEを使用してKaliライブイメージを作成する方法は次のとおりです。



 # ./build.sh --variant kde --verbose
      
      





上記のオプションの概念により、標準プリセットのセットを使用して一般的なシステム構成を実行できます。 ただし、実際には、イメージはより深いカスタマイズに役立ちます。 これについては、 Debian Live System Manualで読んでください。 そこでは、 kali-config



対応するサブディレクトリの内容を変更するなど、イメージを構成する他の多くの方法があります。 以下にいくつかの例を示します。



9.3.3。 インストール済みパッケージのセットを変更する



Live-build



は、起動後、 package-lists/*.list.chroot



されているすべてのパッケージをインストールしpackage-lists/*.list.chroot



。 標準構成には、 package-lists/kali.list.chroot



ファイルが含まれています。このファイルには、 package-lists/kali.list.chroot



kali-linux-full



に関するエントリがあります(これは、基本的なメタパッケージです。これを使用すると、イメージにすべてのKaliパッケージが含まれます)。 このパッケージについて言及した行をコメントアウトし、別のメタパッケージを使用するか、他のパッケージの独自のリストを作成できます。 さらに、メタパッケージから始めて、必要なパッケージを追加して、両方のアプローチを組み合わせることができます。



package-lists



使用すると、公式のKaliリポジトリですでに利用可能なパッケージのみをイメージに含めることができます。 ただし、独自のパッケージがある場合は、 packages.chroot



ディレクトリに対応する.debファイルを配置することで、ライブイメージに含めることができpackages.chroot



(たとえば、構築時にkali-config/config-gnome/packages.chroot



に、 GNOMEグラフィカル環境オプションを使用します)。



メタパッケージは、他のパッケージへの多くの依存関係が含まれているためにのみ使用される空のパッケージです。 その結果、通常一緒にインストールされるパッケージセットのインストールが簡素化されます。 kali-meta



ソースパッケージは、Kali Linuxが提供するすべてのメタパッケージの構築を担当します。





live-build



パッケージの独自のリストを作成するときに、これらのメタパッケージを使用できます。 利用可能なメタパッケージとそれらに含まれるソフトウェアツールの完全なリストは、 ここにあります



installedインストール済みパッケージのセットアップの自動化



インストール済みパッケージの構成を自動化するには、Deseconf応答ファイル(詳細については、セクション4.3.2。「 応答ファイルの作成参照)をpreseed/*.cfg



配置してpreseed/*.cfg



できます 。 これらは、ライブイメージの作成に使用されるパッケージの構成に使用されます。


9.3.4。 フックを使用して画像コンテンツを微調整する



live-build



を使用する場合、ビルドプロセスのさまざまな段階で実行されるフックを使用できます。 chroot —



hooks/live/*.chroot



は、設定ツリーにhooks/live/*.chroot



としてインストールされ、 chroot



を使用して実行される実行可能スクリプトです。 chroot —



、オペレーティングシステムのルートディレクトリを選択したディレクトリに一時的に変更できるコマンドですが、 live-build



でも完全な(代替)ファイルシステムツリーを含むディレクトリを割り当てるlive-build



に使用されます。 live-build



場合、chrootディレクトリはライブイメージのファイルシステムが準備されるディレクトリです。 chroot



を使用して起動されたアプリケーションは、選択されたディレクトリの外部にアクセスできないため、chrootフックについても同じことが言えますchroot



環境で使用可能なもののみを使用および変更できます。 これらのフックに依存して、多くのKali固有の設定を実行します( kali-config/common/hooks/live/kali-hacks.chroot



)。



バイナリフック( hooks/live/*.binary



。Binary)は、ビルドプロセスのコンテキストで、このプロセスの最後に実行されます。 これらはchroot



を使用したアセンブリ中に呼び出されません。 彼らの助けを借りて、ISOイメージのアセンブリの内容を変更できますが、この時点では既に作成されているため、ライブファイルシステムは変更できません。 Kaliでこの機能を使用して、 live-build



によって作成された標準isolinux



構成にいくつかの変更を加えます。 たとえば、 config/common/hooks/live/persistence.binary



。ここでは、ブートメニュー項目を追加して永続的なデータストレージを有効にします。



9.3.5。 ISOイメージまたはライブファイルシステムへのファイルの追加



イメージをカスタマイズするもう1つの非常に一般的な方法は、LiveファイルシステムまたはISOイメージのいずれかにファイルを追加することです。



ファイルをincludes.chroot



構成ディレクトリ内のあるべき場所に配置することにより、ファイルシステムにファイルを追加できます。 たとえば、標準ファイルkali-config/common/includes.chroot/usr/lib/live/config/0031-root-password



がありkali-config/common/includes.chroot/usr/lib/live/config/0031-root-password



。これは、最終的にLiveファイルシステムのアドレス/usr/lib/live/config/0031-root-password







liveライブブートをフックする



/lib/live/config/XXXX-name



インストールされたスクリプトは、 live-boot



パッケージのinit



スクリプトによって実行されます。 これらは、ライブモードでの作業に適したシステムの多くの側面を再構成します。 ここで、独自のスクリプトを追加して、運用中にLiveシステムを設定できます。 特に、たとえば、独自のブートパラメータを実装するために使用されます。


ファイルは、 includes.binary



構成ディレクトリのあるべき場所に配置することにより、ISOイメージに追加できます。 たとえば、標準ファイルkali-config/common/includes.binary/isolinux/splash.png



があります。これは、 isolinux



ローダーが使用する背景画像を上書きします(ISOファイルシステムの/isolinux/splash.png



ファイルに保存されます)。



9.4。 USBドライブの使用時にLive-ISOに永続ストレージを追加する



9.4.1。 永続的ストレージ機能



ここでは、Kaliが記録されたUSBスティックに情報の永続的なストレージを追加するために必要な手順を見ていきます。 ライブファイルシステムの本質は、そのエフェメリティです。 そのようなシステムでの作業中に保存されたすべてのデータは、再起動後に消えます。同じことがシステム設定にも当てはまります。 これを回避するには、永続性と呼ばれるlive-boot



機能を使用できます。 この機能は、ブートオプションにpersistence



キーワードが含まれている場合にアクティブになります。



ブートメニューの変更は簡単な作業ではないため、Kaliにはデフォルトで永続ストレージを有効にする2つのメニュー項目があります。 これは、次の図に示すように、 Live USB Persistence



およびLive USB Encrypted Persistence



です。









9.1。 永続ストレージを有効にするためのメニュー項目



この機能を有効にすると、 live-boot



persistence



としてマークされたファイルシステムのすべてのパーティションをスキャンし(これはブートオプションpersistence-label=value



を使用して変更できpersistence-label=value



)、インストーラーは検出されたpersistence.conf



ファイルにリストされているディレクトリのストレージを作成しますこのセクション(各ディレクトリは個別の行に示されています)。 特別なオプション/ union



使用すると、カスケードマウントマウント(ユニオンマウント)を使用して、すべてのディレクトリを完全に保存できます。 このアプローチでは、ベースファイルシステムのデータに加えられた変更のみが保存される、追加レベルのファイルシステムが作成されます。 再起動後に失われないディレクトリデータは、対応するpersistence.conf



ファイルを含むファイルシステムに保存されます。



9.4.2。 USBドライブに暗号化されていないストレージを作成する



ここでは、2.1.4。項「 DVD-ROMまたはUSBフラッシュドライブへのイメージのコピー 」に記載されている指示に従って、LiveシステムでUSBフラッシュドライブを準備し、メディアサイズがイメージを保存するのに十分であることを前提としています(約3 GB)、最終的に永続ストレージに保存されるディレクトリデータの保存用。 さらに、LinuxはUSBスティックを/dev/sdb



として認識し、標準ISOイメージの一部である2つのパーティション( /dev/sdb1



および/dev/sdb2



)のみを含むと想定しています。 以下で説明することを行うときは、非常に注意してください。 実際、誤って間違ったディスクを再パーティションすると、重要なデータが失われる可能性があります。



ディスクに新しいパーティションを追加するには、フラッシュドライブにすでにあるイメージのサイズを知る必要があります。 これにより、ライブ画像の直後に新しいセクションを開始する機会が与えられます。 次に、 parted



コマンドを使用してパーティションを作成する必要があります。 以下のコマンドは、USBフラッシュドライブに存在することが予想されるkali-linux-2016.1-amd64.iso



ISOイメージを分析します。



 # parted /dev/sdb print Model: SanDisk Cruzer Edge (scsi) Disk /dev/sdb: 32,0GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number  Start   End     Size    Type     File system  Flags 1      32,8kB  2852MB  2852MB  primary               boot, hidden 2      2852MB  2945MB  93,4MB  primary # start=$(du --block-size=1MB kali-linux-2016.1-amd64.iso | awk '{print $1}') # echo "Size of image is $start MB" Size of image is 2946 MB # parted -a optimal /dev/sdb mkpart primary "${start}MB" 100% Information: You may need to update /etc/fstab. # parted /dev/sdb print Model: SanDisk Cruzer Edge (scsi) Disk /dev/sdb: 32,0GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number  Start   End     Size    Type     File system  Flags 1      32,8kB  2852MB  2852MB  primary               boot, hidden 2      2852MB  2945MB  93,4MB  primary 3      2946MB  32,0GB  29,1GB  primary
      
      





新しい/dev/sdb3



作成されたら、 ext4



ファイルシステムでフォーマットし、 mkfs.ext4



(およびラベルを付ける-L



オプション)でpersistence



ラベルを割り当てます。 次に、パーティションが/mnt



ディレクトリにマウントされ、 persistence.conf



ファイルがそこに追加されます。 ドライブのフォーマットと同様に、注意してください。 間違ったパーティションやドライブをフォーマットすると、重要なものが失われる可能性があります。



 # mkfs.ext4 -L persistence /dev/sdb3 mke2fs 1.43-WIP (15-Mar-2016) Creating filesystem with 7096832 4k blocks and 1777664 inodes Filesystem UUID: dede20c4-5239-479a-b115-96561ac857b6 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done # mount /dev/sdb3 /mnt # echo "/ union" >/mnt/persistence.conf # ls -l /mnt total 20 drwx------ 2 root root 16384 May 10 13:31 lost+found -rw-r--r-- 1 root root     8 May 10 13:34 persistence.conf # umount /mnt
      
      





これで、 Live USB Persistence



メニュー項目を使用して、USBフラッシュドライブを起動する準備が整いました。



9.4.3。 USBフラッシュドライブでの暗号化ストレージの作成



必要に応じて、暗号化されたパーティションで永続的なデータストレージを整理できます。 live-boot



はそれをサポートします。 このアプローチにより、暗号化されたLUKSパーティションを作成してデータを保護し、そこにデータを保存できます。



暗号化されたストレージの作成は、以前に実行したのと同じアクションから始まります。 ただし、 ext4



ファイルシステムでパーティションをフォーマットする代わりに、 cryptsetup



を使用してパーティションをLUKSコンテナとして初期化するようになりました。 次に、このコンテナーを開き、暗号化されていないストレージを作成するときと同じ方法でext4



ファイルシステムを構成しますが、 /dev/sdb3



パーティションを使用する代わりに、 cryptsetup



によって作成された仮想パーティションを使用します。 この仮想パーティションは、暗号化されたパーティションの復号化されたコンテンツであり、 /dev/mapper



で割り当てた名前で使用できます。 以下の例では、名前kali_persistence



を使用します。 このような操作を実行するときは、注意して、誤って誤ったドライブまたはパーティションをフォーマットしないようにしてください。



 # cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb3 WARNING! ======== This will overwrite data on /dev/sdb3 irrevocably. Are you sure? (Type uppercase yes): YES Enter passphrase: Verify passphrase: Command successful. # cryptsetup luksOpen /dev/sdb3 kali_persistence Enter passphrase for /dev/sdb3: # mkfs.ext4 -L persistence /dev/mapper/kali_persistence mke2fs 1.43-WIP (15-Mar-2016) Creating filesystem with 7096320 4k blocks and 1774192 inodes Filesystem UUID: 287892c1-00bb-43cb-b513-81cc9e6fa72b Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done # mount /dev/mapper/kali_persistence /mnt # echo "/ union" >/mnt/persistence.conf # umount /mnt # cryptsetup luksClose /dev/mapper/kali_persistence
      
      





9.4.4。 複数の永続情報ストアを使用する



Kali Liveイメージをさまざまな状況で使用する場合、異なるラベルを持つ複数のファイルシステムを作成し、ブートコマンドラインで特定のセッションで使用するファイルシステムを指定できます。 これは、 persistence-label=label



ブートオプションを使用して行われます。



あなたがプロのペンテスターだとします。 クライアントを使用する場合、暗号化されたパーティションにある永続ストレージを使用します。 これは、USBフラッシュドライブが盗難またはハッキングされた場合にデータを保護するために行います。 同時に、同じドライブの暗号化されていないパーティションに保存されているKaliと広告資料のデモを行うことができます。 ブートごとにパラメータを手動で編集したくないため、ブートメニューの個々の項目を使用して独自のライブイメージを構築することにします。



最初のステップは、独自のLive-ISOを構築することです(セクション9.3。、「 独自のKali Linux ISOイメージの構築 」、特にセクション9.3.4。、「 フックを使用した画像コンテンツの微調整 」に従って)。 この段階で行う最も重要なことは、 kali-config/common/hooks/live/persistence-menu.binary



を変更して、次のようなものにすることです( persistence-label



オプションに注意してください):



 #!/bin/sh if [ ! -d isolinux ]; then   cd binary fi cat >>isolinux/live.cfg <<END label live-demo   menu label ^Live USB with Demo Data   linux /live/vmlinuz   initrd /live/initrd.img   append boot=live username=root hostname=kali persistence-label=demo persistence label live-work   menu label ^Live USB with Work Data   linux /live/vmlinuz   initrd /live/initrd.img   append boot=live username=root hostname=kali persistence-label=work persistence-encryption=luks persistence END
      
      





次に、ISOイメージを収集し、USBスティックにコピーします。 次に、情報の永続的なストレージを整理するために使用される2つのパーティションとファイルシステムを作成して初期化します。 demo



というラベルが付いた最初のセクションは暗号化なしで作成され、 work



というラベルが付いた2番目のセクションは暗号化されています。 ここでは、システム内でUSBディスクが/dev/sdb



として表示され、ISOイメージのサイズが3000 MBであるという仮定に基づいて、次の一連のアクションを実行する必要があります。



 # parted /dev/sdb mkpart primary 3000 MB 55% # parted /dev/sdb mkpart primary 55% 100% # mkfs.ext4 -L demo /dev/sdb3 [...] # mount /dev/sdb3 /mnt # echo "/ union" >/mnt/persistence.conf # umount /mnt # cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb4 [...] # cryptsetup luksOpen /dev/sdb4 kali_persistence [...] # mkfs.ext4 -L work /dev/mapper/kali_persistence [...] # mount /dev/mapper/kali_persistence /mnt # echo "/ union" >/mnt/persistence.conf # umount /mnt # cryptsetup luksClose /dev/mapper/kali_persistence
      
      





以上です。 これで、USBドライブから起動し、新しい起動メニューから必要な項目を選択できます。



self自己破壊パスワードを設定してシステムのセキュリティを強化する



Kaliには、新しい機能を実装するために変更されたcryptsetup



があります。 , (nuke password), , , , .



, . , ( ) .



, .



, , , :



 $ cryptsetup luksAddNuke /dev/sdb4 Enter any existing passphrase: Enter new passphrase for key slot: Verify passphrase:
      
      





.




, ISO-, USB-, Live-, , . « Kali Linux Revealed » .



親愛なる読者! , Kali Linux?



前のパーツ:



→パート1. Kali Linux:セキュリティポリシー、コンピューターとネットワークサービスの保護

→パート2. Kali Linux:netfilterを使用したトラフィックのフィルタリング

→パート3. Kali Linux:監視とログ

→パート4. Kali Linux:システムを保護および監視するための演習

→パート5. Kali Linux:システムのセキュリティ評価

→パート6. Kali Linux:情報システムのチェックの種類

→パート7. Kali Linux:調査の形式化と攻撃の種類

→ 8. Kali Linux:

→ 9. Kali Linux:

→ 10. Kali Linux:



All Articles