Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
kali-vm — # Скрипт сборки образов виртуальных машин Kali Linux | Kitploit
Инструменты/GitLabGitLab/kalilinux/build-scripts/kali-vm
Скриптинг и автоматизацияВиртуализация для безопасностиТестирование на Проникновение
GitLabkalilinux/build-scripts/kali-vm

kali-vm

# Скрипт сборки образов виртуальных машин Kali Linux

Репозиторий
9314931 месяц назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Сборщик образов Kali VM

Это скрипт сборки для создания образов виртуальных машин (VM) Kali Linux.

В настоящее время возможны два метода сборки:

  • build.sh — сборка прямо с вашей машины
  • build-in-container.sh — сборка из контейнера (Docker или Podman)

В любом случае, сборка фактически происходит внутри виртуальной машины, создаваемой на лету инструментом сборки debos. Debos использует fakemachine под капотом, который, в свою очередь, полагается на QEMU/KVM.

Предварительные требования

Убедитесь, что git-репозиторий клонирован локально:

root@kitploit:~
$ sudo apt install -y git
$ git clone https://gitlab.com/kalilinux/build-scripts/kali-vm.git
$ cd kali-vm/

Настройка пользователя

Из-за требований QEMU/KVM вы должны быть частью группы kvm. Вы можете проверить это так:

root@kitploit:~
$ # Не в группе
$ grep kvm /etc/group
kvm:x:104:
$
$ # В группе
$ grep kvm /etc/group
kvm:x:104:kali

Если ваше имя пользователя не появляется в возвращённой строке, это означает, что вы не в группе, и вы должны добавить себя в группу kvm:

root@kitploit:~
$ sudo adduser $USER kvm

Затем выйдите из системы и войдите снова, чтобы изменение вступило в силу.

Сборка с хост-системы

Если вы собираете прямо со своей машины, используя build.sh, вам нужно установить debos:

root@kitploit:~
$ sudo apt install -y 7zip debos dosfstools qemu-utils zerofree

Затем используйте скрипт build.sh, чтобы собрать образ VM непосредственно на вашей машине.

Сборка из контейнера

Если вы предпочитаете собирать из контейнера, вам нужно установить и настроить docker или podman на вашей машине. Затем используйте скрипт build-in-container.sh, чтобы собрать образ.

build-in-container.sh — это просто обёртка поверх build.sh. Он определяет, какой OCI-совместимый контейнерный движок использовать, заботится о создании образа контейнера, если он отсутствует, и, наконец, запускает контейнер для выполнения сборки изнутри.

docker требует добавления пользователя в группу Docker, как и в случае с KVM выше, или использования учётной записи root (например, $ sudo ./build-in-container.sh). podman был протестирован как в rootful (например, $ sudo ./build-in-container.sh), так и в rootless (например, $ ./build-in-container.sh) режимах.

Сборка образа

Используйте либо build.sh, либо build-in-container.sh, по вашему усмотрению. С этого момента для краткости мы будем использовать build.sh.

Примеры

Лучшая отправная точка, как всегда, — сообщение об использовании:

root@kitploit:~
$ ./build.sh -h
Usage: build.sh <options> [-- <debos options>]

Build a Kali Linux VM image

Build options:
  -a ARCH     Build an image for this architecture, default: amd64
              Supported values: amd64
  -b BRANCH   Kali branch used to build the image, default: kali-rolling
              Supported values: kali-dev kali-last-snapshot kali-rolling
  -f FORMAT   Format to export the image to, default depends on the VARIANT
              Supported values: hyperv ova ovf qemu raw vagrant virtualbox vmware
  -k          Keep raw disk image and other intermediary build artifacts
  -m MIRROR   Mirror used to build the image, default: http://http.kali.org/kali
  -r ROOTFS   rootfs to use to build the image, default: none
  -s SIZE     Size of the disk image in GB, default: 86
  -v VARIANT  Variant of image to build (see below for details), default: generic
              Supported values: generic hyperv qemu rootfs virtualbox vmware
  -x VERSION  What to name the image release as, default: rolling
  -z          Zip images and metadata files after the build

Customization options:
  -D DESKTOP  Desktop environment installed in the image, default: xfce
              Supported values: e17 gnome i3 kde lxde mate xfce none
  -H HOSTNAME Set system host name, default: kali
  -K KEYBOARD Set keyboard layout, default: us
              Refer to the README.md for more details
  -L LOCALE   Set locale, default: en_US.UTF-8
  -P PACKAGES Install extra packages (comma/space separated list)
  -T TOOLSET  The selection of tools to include in the image, default: default
              Supported values: default everything headless large none
  -U USERPASS Username and password, separated by a colon, default: kali:kali
  -Z TIMEZONE Set timezone, default: America/New_York

The different variants of images are:
  generic     Image with all virtualization support pre-installed, default format: raw
  hyperv      Image pre-configured for Hyper-V "Enhanced Session Mode", default format: hyperv
  qemu        Image with QEMU and SPICE guest agents pre-installed, default format: qemu
  rootfs      Not an image, a root filesystem (no bootloader/kernel), packed in a .tar.gz
  virtualbox  Image with VirtualBox guest utilities pre-installed, default format: virtualbox
  vmware      Image with Open VM Tools pre-installed, default format: vmware

The different formats are:
  hyperv      VHDX disk image, powershell install scripts
  ova         streamOptimized VMDK disk image, OVF metadata file, packed in a OVA archive
  ovf         monolithicSparse VMDK disk image, OVF metadata file
  qemu        QCOW2 disk image, no metadata
  raw         sparse disk image, no metadata
  virtualbox  VDI disk image, .vbox metadata file
  vmware      2GbMaxExtentSparse VMDK disk image, VMX metadata file

Supported environment variables:
  http_proxy  HTTP proxy URL, refer to the README.md for more details

Most useful debos options:
  --artifactdir DIR   Set artifact directory, default: images
  --memory, -m  SIZE  Limit amount of memory to build VM in GB, default: 4G
  --scratchsize SIZE  Limit amount of HDD to build VM in GB, default: 45G
  --debug-shell       Get a shell on the VM
  --help, -h          See the complete list of options for debos

Refer to the README.md for examples

Параметры по умолчанию соберут образ Kali rolling, с окружением рабочего стола по умолчанию и набором инструментов по умолчанию для архитектуры AMD64.

Это образ сырого диска, т.е. обычный бинарный образ диска (который можно запустить с помощью QEMU).

Пример:

root@kitploit:~
$ ./build.sh

Чтобы собрать образ Kali Linux, предназначенный для VMware. Это означает, что в нём предустановлены Open VM Tools, и полученный образ готов к импорту «как есть» в VMware.

Кроме того, мы собираем его из последнего стабильного выпуска Kali, и будем использовать GNOME в качестве окружения рабочего стола, вместо обычного стандартного Xfce:

root@kitploit:~
./build.sh -v vmware -b kali-last-snapshot -D gnome

Чтобы собрать образ Kali Linux, предназначенный для VirtualBox. В нём предустановлены гостевые утилиты VirtualBox, и образ можно импортировать «как есть» в VirtualBox.

Кроме того, нам нужен виртуальный диск на 150 ГБ, и мы установим выбор инструментов «everything»:

root@kitploit:~
./build.sh -v virtualbox -s 150 -S everything

Чтобы собрать лёгкий образ Kali, в котором нет окружения рабочего стола и стандартного набора инструментов. Это универсальный образ, он поставляется с поддержкой большинства механизмов виртуальных машин. Мы экспортируем его в формат OVA, подходящий как для VMware, так и для VirtualBox.

Вы можете установить дополнительные пакеты с помощью опции -P. Либо используйте опцию несколько раз (например, -P pkg1 -P pkg2 ...), либо укажите значение, разделённое запятыми/пробелами (например, -P "pkg1,pkg2, pkg3 pkg4"), либо комбинацию того и другого. Давайте также установим пакет metasploit-framework:

root@kitploit:~
./build.sh -v generic -f ova -D headless -P metasploit-framework

При сборке серии образов может быть удобнее (и быстрее) разделить сборку на две части: сначала собрать rootfs, а затем собрать образы, повторно используя этот rootfs в качестве отправной точки.

В примере ниже мы сначала собрали rootfs kali-rolling, а затем собрали серию образов Vagrant:

root@kitploit:~
./build.sh -b kali-rolling -v rootfs
./build.sh -r images/rootfs-rolling-amd64.tar.gz -f vagrant -v hyperv
./build.sh -r images/rootfs-rolling-amd64.tar.gz -f vagrant -v qemu
./build.sh -r images/rootfs-rolling-amd64.tar.gz -f vagrant -v virtualbox
./build.sh -r images/rootfs-rolling-amd64.tar.gz -f vagrant -v vmware

Чтобы задать настройки клавиатуры, используйте опцию -K. Настройка имеет вид <layouts>/<models>/<variants>/<options>. Каждый параметр может быть опущен (в этом случае используется значение по умолчанию) или может иметь несколько значений, разделённых запятыми. В самом простом случае вы можете просто изменить раскладку клавиатуры, поэтому вы установите us для американской раскладки, de для немецкой раскладки и так далее. Более подробные объяснения и примеры можно найти на странице руководства keyboard(5). Со списком поддерживаемых значений вы можете ознакомиться в файле /usr/share/X11/xkb/rules/xorg.lst (предоставляется пакетом xkb-data в Debian и Debian-подобных системах). Этот файл содержит различные разделы (! layout, ! model, !variant и !option), в которых перечислены возможные значения для каждого параметра. Вы также можете проверить, что настроено в вашей системе, с помощью cat /etc/default/keyboard. Существует также сокращение -K same, чтобы соответствовать хост-системе (т.е. тому, что указано в файле /etc/default/keyboard).

Чтобы задать локаль, используйте опцию -L. Выберите значение в 1-м столбце файла /usr/share/i18n/SUPPORTED или проверьте, что настроено в вашей системе, с помощью grep -v ^# /etc/locale.gen, или просто echo $LANG. Также существует сокращение -L same, чтобы соответствовать хост-системе.

Чтобы задать часовой пояс, используйте опцию -Z. Загляните в /usr/share/zoneinfo и выберите каталог и подкаталог. При сомнениях запустите tzselect, который вам подскажет, или посмотрите, что настроено в вашей системе, с помощью realpath /etc/localtime. Также существует сокращение -Z same, чтобы соответствовать хост-системе.

Чтобы задать имя и пароль непривилегированного пользователя, используйте опцию -U. Значение представляет собой одну строку, а символ : используется для разделения имени пользователя и пароля.

Здесь мы соберём образ Kali и настроим его так, чтобы он имитировал хост-систему: та же локаль, тот же часовой пояс и то же имя пользователя (с паролем password):

root@kitploit:~
./build.sh -K same -L same -Z same -U $USER:password

Варианты и форматы

Можно собрать различные варианты образа, в зависимости от того, в каком механизме виртуализации вы хотите запускать образ Kali. Вариант (VARIANT) в основном определяет, какой дополнительный пакет будет установлен в образ для добавления поддержки конкретного механизма виртуализации. Затем формат (FORMAT) определяет, в каком формате будет виртуальный диск и какие дополнительные файлы метаданных будут созданы.

Если не задано, формат (опция -f) автоматически устанавливается в соответствии с вариантом (опция -v). Не каждая комбинация варианта и формата имеет смысл, поэтому приведённая ниже таблица пытается обобщить наиболее распространённые комбинации.

вариантформатформат дискаметаданныеупаковка
genericrawraw (разреженный файл)нет
genericovastreamOptimized VMDKOVFOVA
genericovfmonolithicSparse VMDKOVF
qemuqemuQCOW2нет
virtualboxvirtualboxVDIVBOX
vmwarevmware2GbMaxExtentSparse VMDKVMX

Образы generic поставляются с предустановленными пакетами поддержки виртуализации для QEMU, VirtualBox и VMware, отсюда и название «generic» (универсальный). В то время как другие образы, предназначенные для конкретного механизма виртуализации, содержат поддержку только этого конкретного механизма.

Только формат ova определяет контейнер: результатом сборки является файл .ova, который представляет собой просто tar-архив. Для других форматов сборка создаёт отдельные файлы. Их можно объединить в 7z-архив с помощью опции -z.

Существует также тип rootfs: это не образ. Это просто дерево корневой файловой системы Kali Linux, без ядра и загрузчика, упакованное в архив .tar.gz. Основной вариант использования — повторное использование в качестве входных данных для сборки образа ОС, и он не предназначен для использования вне системы сборки.

Конфигурация кэширующего прокси

При сборке образов ОС полезно иметь механизм кэширования, чтобы избежать повторной загрузки всех пакетов из Интернета. Для этого скрипт сборки пытается обнаружить известные кэширующие прокси, которые могут работать на локальном хосте. Сначала он обращается к локальной конфигурации APT Acquire::http::Proxy. Если она не задана, он пытается обнаружить apt-cacher-ng и squid-deb-proxy, проверяя, прослушивает ли служба их порт по умолчанию. Этот механизм не работает для approx (известного кэширующего прокси APT), так как он автоматически запускается по требованию.

Чтобы переопределить это обнаружение, вы можете самостоятельно экспортировать переменную окружения http_proxy. Однако следует помнить, что сборка происходит внутри виртуальной машины QEMU, поэтому localhost в среде сборки относится к VM, а не к хосту. Если вы хотите получить доступ к хосту из VM, вам, вероятно, следует использовать http://10.0.2.2.

Например, если вы хотите использовать прокси, работающий на вашей машине на порту 9876, используйте: export http_proxy=http://10.0.2.2:9876. Если вы хотите убедиться, что прокси не используется, используйте: export http_proxy=.

Также обратитесь к https://github.com/go-debos/debos#environment-variables для получения более подробной информации.

Кроме того, вы можете настроить локальное зеркало.

Сборка и повторное использование rootfs

Возможно разбить сборку на два этапа. Вы можете сначала собрать rootfs с помощью ./build.sh -v rootfs, а затем собрать образ на основе этого rootfs с помощью ./build.sh -r ROOTFS_NAME.tar.gz. Это имеет смысл, если вы планируете собрать несколько типов образов, например.

Устранение неполадок при сборке

Недостаточно памяти

Когда временная область заполняется (т.е. значение --scratchsize слишком мало), сборка может завершиться ошибкой с сообщениями такого рода:

root@kitploit:~
[...]: failed to write (No space left on device)
[...]: Cannot write: No space left on device

Решение: увеличьте значение --scratchsize. Вы можете передавать аргументы debos после специального символа --, поэтому, если вам нужно, например, 50G, вы можете выполнить ./build.sh [...] -- --scratchsize=50G.

Получить shell в VM при сбое сборки

При отладке сбоев сборки удобно получить shell внутри VM, где происходит сборка. Это возможно, если передать опцию --debug-shell в debos: ./build.sh [...] -- --debug-shell.

Устранение неполадок во время выполнения

ovf не совместим с VMware ESXI

Это известная проблема, обратитесь к https://gitlab.com/kalilinux/build-scripts/kali-vm/-/work_items/25#note_1301070132 за обходным путём.

Скачать инструмент