Создание метапакетов Kali Linux

22 сентября 2018 в Разное

Одной из многих полезных вещей, которые мы можем сделать с APT, является создание метапакетов, которые представляют собой пустые пакеты, которые объявляют список других пакетов в качестве зависимостей. Kali Linux включает метапакеты для взлома паролей, программного радио, беспроводной сети, веб-приложений и т. д.

Прежде чем мы начнем, нам нужно установить пакет devscripts, который включает в себя ряд инструментов и утилит для управления пакетами.

root@kali:~# apt install devscripts

В Kali все метапакеты определены в соответствующем названном пакете kali-meta, поэтому мы можем клонировать и модифицировать его в соответствии с нашими потребностями.

root@kali:~# git clone git://git.kali.org/packages/kali-meta
      Cloning into 'kali-meta'...
      remote: Counting objects: 998, done.
      remote: Compressing objects: 100% (809/809), done.
      remote: Total 998 (delta 365), reused 0 (delta 0)
      Receiving objects: 100% (998/998), 179.90 KiB | 570.00 KiB/s, done.
      Resolving deltas: 100% (365/365), done.
      warning: remote HEAD refers to nonexistent ref, unable to checkout.

Вышеупомянутое сообщение «unable to checkout» выглядит тревожным, но это означает, что сначала нужно проверить ветвь по умолчанию (kali / master), что можно сделать следующим образом.

root@kali:~# cd kali-meta/
      root@kali:~/kali-meta# git checkout kali/master
      Branch 'kali/master' set up to track remote branch 'kali/master' from 'origin'.
      Switched to a new branch 'kali/master'
      root@kali:~/kali-meta#

Чтобы создать новый метапакет (или обновить существующий), нам нужно отредактировать файл debian / control с информацией о пакете. Каждый метапакет представляет собой просто список зависимостей пакетов, разделенных запятыми, например, один для kali-linux-gpu, показанный ниже.

Package: kali-linux-gpu
      Architecture: any
      Depends: ${misc:Depends},
       kali-linux,
       oclhashcat [amd64 i386],
       pyrit,
       oclgausscrack [amd64 i386],
       truecrack,

Наш новый метапакет будет называться «kali-linux-mytools» и будет устанавливать Vagrant, VirtualBox, LibreOffice и Chromium. Наш вход для этого метапакета в debian / control выглядит следующим образом:

root@kali:~/kali-meta# tail -n 14 debian/control
       Package: kali-linux-mytools
       Architecture: any
       Depends: ${misc:Depends},
        kali-linux,
        virtualbox,
        vagrant,
        libreoffice,
        chromium,
       Description: My required Kali tools
        This is Kali Linux, the most advanced penetration testing and security
        auditing distribution.
        .
        This metapackage depends on the tools I install most often.

Если новый метапакет определен, нам нужно увеличить номер версии до «dch» создания пакета. Это запустит редактор для ввода подробных сведений об изменениях в debian / changelog.

root@kali:~/kali-meta# dch --local dookie
      
      root@kali:~/kali-meta# head -n 5 debian/changelog
      kali-meta (2018.3.2dookie1) UNRELEASED; urgency=medium
      
        * Added kali-linux-mytools
      
       -- dookie <dookie@kali.local>  Tue, 11 Sep 2018 09:40:10 -0600

Наконец, мы можем приступить к созданию нового пакета с помощью команды «dpkg-buildpackage». Поскольку метапакеты - это всего лишь списки зависимостей, процесс сборки очень быстрый.

root@kali:~/kali-meta# dpkg-buildpackage -us -uc -b
      dpkg-buildpackage: info: source package kali-meta
      dpkg-buildpackage: info: source version 2018.3.2dookie1
      dpkg-buildpackage: info: source distribution UNRELEASED
      dpkg-buildpackage: info: source changed by dookie <dookie@kali.local>
      dpkg-buildpackage: info: host architecture amd64
      ...
      dpkg-deb: building package 'kali-linux-pwtools' in '../kali-linux-pwtools_2018.3.2dookie1_amd64.deb'.
      dpkg-deb: building package 'kali-linux-top10' in '../kali-linux-top10_2018.3.2dookie1_amd64.deb'.
      dpkg-deb: building package 'kali-linux-mytools' in '../kali-linux-mytools_2018.3.2dookie1_amd64.deb'.
       dpkg-genbuildinfo --build=binary
       dpkg-genchanges --build=binary >../kali-meta_2018.3.2dookie1_amd64.changes
      dpkg-genchanges: info: binary-only upload (no source code included)
       dpkg-source --after-build kali-meta
      dpkg-buildpackage: info: binary-only upload (no source included)

Когда сборка будет завершена, наш новый метапакет может быть установлен с помощью «apt», как и любой другой пакет.

root@kali:~/kali-meta# apt install ../kali-linux-mytools_2018.3.2dookie1_amd64.deb
      
      ...
      
      root@kali:~/kali-meta# apt-cache policy vagrant virtualbox libreoffice chromium
      vagrant:
        Installed: 2.1.2+dfsg-1
        Candidate: 2.1.2+dfsg-1
        Version table:
       *** 2.1.2+dfsg-1 500
              500 http://192.168.86.4/kali kali-rolling/main amd64 Packages
              100 /var/lib/dpkg/status
      virtualbox:
        Installed: 5.2.18-dfsg-2
        Candidate: 5.2.18-dfsg-2
        Version table:
       *** 5.2.18-dfsg-2 500
              500 http://192.168.86.4/kali kali-rolling/contrib amd64 Packages
              100 /var/lib/dpkg/status
      libreoffice:
        Installed: 1:6.1.1~rc1-2
        Candidate: 1:6.1.1~rc1-2
        Version table:
       *** 1:6.1.1~rc1-2 500
              500 http://192.168.86.4/kali kali-rolling/main amd64 Packages
              100 /var/lib/dpkg/status
      chromium:
        Installed: 68.0.3440.75-2
        Candidate: 68.0.3440.75-2
        Version table:
       *** 68.0.3440.75-2 500
              500 http://192.168.86.4/kali kali-rolling/main amd64 Packages
              100 /var/lib/dpkg/status

Именно так, у нас есть свой собственный метапакет, который мы можем хранить на сетевом ресурсе или в другом месте, чтобы быстро настроить наши новые установки Kali Linux.