
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
フォルダーには、最も一般的なデスクトップ環境のディレクトリが含まれています。
- 啓発のための
e17
。
-
gnome
用のgnome
;
- i3フレームウィンドウマネージャーの
i3wm
。
-
kde
;
- LXDEの
lxde
;
- Mate Desktop Environmentの
mate
;
- XFCEの
xfce
。
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が提供するすべてのメタパッケージの構築を担当します。
-
kali-linux
:基礎となるシステム(他のすべてのメタパッケージで使用されます)。
-
kali-linux-full
:Kali Linuxの標準インストール。
-
kali-linux-all
:他のすべてのメタパッケージと他のパッケージを組み合わせたメタパッケージ(ここでは、Kaliが持っているほぼすべてのものなので、ただの巨大なパッケージです!)。
-
kali-linux-sdr
:ソフトウェア無線(Software Defined Radio、SDR)用のツール。
-
kali-linux-gpu
:グラフィックカード(GPU)を使用して重いコンピューティングを実行するツール。
-
kali-linux-wireless
:ワイヤレスネットワークを調査および分析するためのツール。
-
kali-linux-web
:Webアプリケーションを調査するためのツール。
-
kali-linux-forensic
:デジタルkali-linux-forensic
ツール(さまざまなインシデントを調査するときに証拠を見つけるために使用されます)。
-
kali-linux-voip
:VoIP(ボイスオーバーIP)ツール。
-
kali-linux-pwtools
:パスワードクラッキングツール。
-
kali-linux-top10
:最も人気のある10個のツール。
-
kali-linux-rfid
:kali-linux-rfid
ツール
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: