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 الافتراضية

عرض المستودع
931493منذ شهر واحدتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

منشئ صور آلة Kali الافتراضية

هذا هو سكربت البناء لإنشاء صور الآلة الافتراضية (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:~
$ # Not apart of the group
$ grep kvm /etc/group
kvm:x:104:
$
$ # In the group
$ grep kvm /etc/group
kvm:x:104:kali

إذا لم يظهر اسم المستخدم الخاص بك في السطر الناتج، فهذا يعني أنك لست في المجموعة، ويجب عليك إضافة نفسك إلى مجموعة kvm:

root@kitploit:~
$ sudo adduser $USER kvm

ثم سجّل الخروج ثم سجّل الدخول مرة أخرى لكي يسري التغيير.

البناء من المضيف (Host)

إذا كنت تبني مباشرةً من جهازك باستخدام build.sh، فستحتاج إلى تثبيت debos:

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

ثم استخدم السكربت build.sh لبناء صورة آلة افتراضية مباشرةً على جهازك.

البناء من داخل حاوية

إذا كنت تفضل البناء من داخل حاوية، فستحتاج إلى تثبيت وتهيئة إما docker أو podman على جهازك. ثم استخدم السكربت build-in-container.sh لبناء صورة.

build-in-container.sh هو مجرد غلاف فوق build.sh. سيكتشف محرك الحاويات المتوافق مع OCI الذي يجب استخدامه، ويتولى إنشاء صورة الحاوية إذا لم تكن موجودة، ثم في النهاية يشغّل الحاوية لتنفيذ البناء من داخلها.

يتطلب docker إضافة المستخدم إلى مجموعة Docker، تمامًا كما سبق مع KVM، أو استخدام حساب الجذر (مثل $ 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.

هذه صورة قرص خام (raw)، أي صورة ثنائية بسيطة للقرص (يمكن تشغيلها باستخدام 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 خفيفة، لا تحتوي على بيئة سطح مكتب ولا مجموعة الأدوات الافتراضية. هذه صورة عامة (generic)، تأتي مع دعم لمعظم محركات الآلات الافتراضية. سنقوم بتصديرها إلى صيغة 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

لتعيين keyboard settings، استخدم الخيار -K. الإعداد يكون بالشكل <layouts>/<models>/<variants>/<options>. يمكن حذف كل إعداد (وفي هذه الحالة يُستخدم الافتراضي)، أو يمكن أن يحتوي على قيم متعددة مفصولة بفواصل. في أبسط الحالات، قد ترغب فقط في تغيير تخطيط لوحة المفاتيح، لذا يمكنك تعيين us لتخطيط لوحة المفاتيح الأمريكية، وde لتخطيط لوحة المفاتيح الألمانية، وهكذا. يمكن العثور على شروحات وأمثلة أطول في صفحة الدليل keyboard(5). للقائمة بالقيم المدعومة، يمكنك الرجوع إلى الملف /usr/share/X11/xkb/rules/xorg.lst (المقدم من الحزمة xkb-data على أنظمة Debian وما يشابهها). يحتوي هذا الملف على أقسام مختلفة (! layout, ! model, !variant و !option) تسرد القيم المحتملة لكل إعداد. يمكنك أيضًا التحقق مما هو مكوّن على نظامك باستخدام cat /etc/default/keyboard. هناك أيضًا اختصار -K same لمطابقة النظام المضيف (أي ما هو مضبوط في الملف /etc/default/keyboard).

لتعيين locale، استخدم الخيار -L. اختر قيمة من العمود الأول في /usr/share/i18n/SUPPORTED، أو تحقق مما هو مكوّن على نظامك باستخدام grep -v ^# /etc/locale.gen، أو ببساطة echo $LANG. هناك أيضًا اختصار -L same لمطابقة النظام المضيف.

لتعيين timezone، استخدم الخيار -Z. ابحث في /usr/share/zoneinfo واختر مجلدًا ومجلدًا فرعيًا. عند الشك، شغّل tzselect لإرشادك، أو انظر إلى ما هو مكوّن على نظامك باستخدام realpath /etc/localtime. هناك أيضًا اختصار -Z same لمطابقة النظام المضيف.

لتعيين اسم وكلمة مرور المستخدم غير المميز (unprivileged user)، استخدم الخيار -U. القيمة عبارة عن سلسلة نصية واحدة ويُستخدم الرمز : لفصل اسم المستخدم عن كلمة المرور.

هنا سنبني صورة Kali ونقوم بإعدادها لمحاكاة النظام المضيف: نفس locale ونفس timezone ونفس اسم المستخدم (مع كلمة مرور password):

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

الأنواع (Variants) والصيغ (Formats)

يمكن بناء أنواع مختلفة من الصور، اعتمادًا على محرك الآلة الافتراضية الذي تريد تشغيل صورة Kali فيه. يحدد النوع (VARIANT) بشكل أساسي الحزمة الإضافية التي سيتم تثبيتها في الصورة، لإضافة دعم لمحرك آلة افتراضية معين. ثم تحدد الصيغة (FORMAT) صيغة القرص الافتراضي، وملفات البيانات الوصفية الإضافية التي سيتم إنتاجها.

إذا لم يتم تعيينها، يتم ضبط الصيغة (الخيار -f) تلقائيًا وفقًا للنوع (الخيار -v). ليست كل مجموعة من النوع والصيغة منطقية، لذا يحاول الجدول أدناه تلخيص التركيبات الأكثر شيوعًا.

النوعالصيغةصيغة القرصالبيانات الوصفيةالحزمة
genericrawraw (sparse file)none
genericovastreamOptimized VMDKOVFOVA
genericovfmonolithicSparse VMDKOVF
qemuqemuQCOW2none
virtualboxvirtualboxVDIVBOX
vmwarevmware2GbMaxExtentSparse VMDKVMX

صور generic تأتي مع حزم دعم المحاكاة الافتراضية مثبتة مسبقًا لـ QEMU وVirtualBox وVMware، ومن هنا جاء الاسم «generic». بينما الصور الأخرى التي تستهدف محرك آلة افتراضية معينًا، تأتي فقط مع دعم لمحرك المحاكاة الافتراضية هذا تحديدًا.

فقط الصيغة ova تعرّف حاوية: نتيجة البناء هي ملف .ova، وهو ببساطة أرشيف tar. بالنسبة للصيغ الأخرى، ينتج البناء ملفات منفصلة. يمكن تجميعها معًا في أرشيف 7z باستخدام الخيار -z.

هناك أيضًا نوع rootfs: هذه ليست صورة. إنها ببساطة شجرة نظام ملفات الجذر الخاص بـ Kali Linux، بدون النواة ومحمل الإقلاع، ومعبأة في أرشيف .tar.gz. حالة الاستخدام الرئيسية هي إعادة استخدامها كمدخل لبناء صورة نظام تشغيل، وليست مخصصة للاستخدام خارج نظام البناء.

إعداد البروكسي المخزن مؤقتًا (Caching Proxy)

عند بناء صور أنظمة التشغيل، من المفيد وجود آلية تخزين مؤقت لتجنب تنزيل جميع الحزم من الإنترنت مرارًا وتكرارًا. لتحقيق هذا الغرض، يحاول سكربت البناء اكتشاف وكلاء التخزين المؤقت المعروفين الذين قد يعملون على المضيف المحلي. يشير أولاً إلى تكوين APT المحلي Acquire::http::Proxy. إذا لم يكن معينًا، فإنه يحاول اكتشاف apt-cacher-ng و squid-deb-proxy عن طريق التحقق مما إذا كانت هناك خدمة تستمع على المنفذ الافتراضي الخاص بها. لا تعمل هذه الآلية مع approx (وهو وكيل تخزين مؤقت معروف لـ APT)، لأنه يبدأ تشغيله تلقائيًا عند الطلب.

لتجاوز هذا الاكتشاف، يمكنك تصدير متغير البيئة http_proxy بنفسك. ومع ذلك، يجب أن تتذكر أن البناء يحدث داخل آلة افتراضية QEMU، لذلك فإن localhost في بيئة البناء يشير إلى الآلة الافتراضية، وليس إلى المضيف. إذا كنت تريد الوصول إلى المضيف من الآلة الافتراضية، فمن المرجح أنك تريد استخدام 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.

الحصول على شل داخل الآلة الافتراضية عند فشل البناء

عند تصحيح أخطاء فشل البناء، من المناسب أن يتم إسقاطك في شل داخل الآلة الافتراضية حيث يتم البناء. هذا ممكن عن طريق إعطاء الخيار --debug-shell لـ debos: ./build.sh [...] -- --debug-shell.

استكشاف الأخطاء وإصلاحها في وقت التشغيل

ovf غير متوافق مع VMware ESXI

هذه مشكلة معروفة، راجع https://gitlab.com/kalilinux/build-scripts/kali-vm/-/work_items/25#note_1301070132 للحصول على حل بديل.

تنزيل الأداة