- [Перевод] Kali Linux: сборка ядра
- 9.2. Перекомпиляция ядра Linux
- ▍Сборка собственного ядра и обновление системы
- ▍О руководстве The Debian Kernel Handbook
- 9.2.1. Подготовка и предварительные требования
- 9.2.2. Загрузка исходного кода
- 9.2.3. Настройка ядра
- ▍Работа с устаревшими файлами .config
- 9.2.4. Компиляция и сборка пакета
- ▍Очистка перед перестроением
- Итоги
- Обзор Kali Linux 2021.2
- Установка
- ▍ Обычное железо и Live boot
- ▍ Виртуальные машины
- ▍ Мобильные средства
- ▍ Контейнеры
- ▍ Облако
- Особенности и характеристики Kali 2021.2
- ▍Kaboxer
- ▍ Kali-Tweaks v1.0
- ▍ Bleeding-Edge
- ▍ Привилегированные порты
- ▍ Kali NetHunter
- ▍ Новые приложения
- ▍ Графика и рабочий экран
- ▍ Raspberry Pi
- ▍ Разное
[Перевод] Kali Linux: сборка ядра
В сегодняшнем материале публикуем перевод очередного фрагмента книги «Kali Linux Revealed». Из него вы узнаете о том, как модифицировать и собрать собственное ядро Linux. Этой теме посвящён второй раздел девятой главы.
9.2. Перекомпиляция ядра Linux
Стандартные ядра Kali включают в себя максимум функций и все доступные наборы драйверов. Сделано это для того, чтобы система могла работать на как можно большем количестве существующих конфигураций аппаратного обеспечения. Именно поэтому некоторые пользователи предпочитают перекомпилировать ядро для того, чтобы в нём было только то, что нужно именно им. У такого шага есть две причины. Первый — оптимизация потребления памяти, так как весь код ядра, даже если он не используется, занимает физическую память. Так как статически скомпилированные фрагменты ядра никогда не перемещаются в область подкачки, общее снижение системной производительности будет происходить из-за наличия встроенных драйверов и функций, которые никогда не используются. Вторая причина заключается в том, что уменьшение числа драйверов и механизмов ядра уменьшает риск возникновения проблем с безопасностью, так как используется лишь часть доступного кода ядра.
▍Сборка собственного ядра и обновление системы
Если вы решили собрать собственное ядро, вы должны понимать, что ответственность за последствия ложится на вас. Команда Kali не сможет обеспечить обновления безопасности для вашего ядра. Работая с ядром, предоставленным Kali, вы пользуетесь и обновлениями, подготовленных в рамках Debian Project.
Перекомпиляция ядра, кроме того, необходима в том случае, если вам нужно воспользоваться определёнными возможностями, которые доступны только в виде патчей (и не включены в стандартную версию ядра).
▍О руководстве The Debian Kernel Handbook
Команда по работе с ядром Debian поддерживает в актуальном состоянии руководство The Debian Kernel Handbook (оно, кроме того, доступно в виде пакета debian-kernel-handbook ). Это — подробная документация, посвящённая описанию большинства задач, связанных с ядром, и тому, как поддерживаются официальные пакеты ядра Debian. Если вам нужны подробности о сборке собственного ядра, в The Debian Kernel Handbook стоит взглянуть в первую очередь.
9.2.1. Подготовка и предварительные требования
Debian и Kali поддерживают ядро в форме пакета, подобное неудивительно, но это отличается от традиционного подхода к компиляции и установке ядра. Так как ядро находится под контролем системы управления пакетами, его можно без проблем удалить или развернуть на нескольких машинах. Более того, скрипты, связанные с этими пакетами, автоматизируют взаимодействие с загрузчиком операционной системы и генератором initrd .
Официальный исходный код Linux содержит всё, что нужно для сборки пакета ядра Debian, но сначала нужно установить пакет build-essential для того, чтобы обеспечить наличие инструментов для сборки пакетов Debian. Более того, для настройки ядра требуется пакет libncurses5-dev . И, наконец, пакет fakeroot позволяет создавать пакеты Debian, не имея административных привилегий.
Для установки вышеупомянутых пакетов воспользуйтесь следующей командой:
9.2.2. Загрузка исходного кода
Так как исходные коды ядра Linux доступны в виде пакета, вы можете их загрузить, установив пакет linux-source-version . С помощью команды apt-cache search ^linux-source можно вывести список последних версий ядра Kali. Обратите внимание на то, что исходный код, содержащийся в этих пакетах отличается от того, что публикует Линус Торвальдс и разработчики ядра. Как и все дистрибутивы, Debian и Kali применяют некоторое количество патчей, которые могут присутствовать в официальной версии Linux, а могут и не иметься там. Эти модификации включают в себя бэкпорты исправлений, функций и драйверов из более новых версий ядра, новые функции, которые ещё не полностью интегрированы в официальный код Linux, а иногда даже изменения, специфичные для Debian и Kali.
Ниже мы рассмотрим работу с ядром Linux версии 4.9, но наши примеры, конечно, могут быть адаптированы к нужной вам версии ядра.
Приводя этот пример, мы исходим из того, что установлен бинарный пакет linux-source-4.9 . Обратите внимание на то, что мы устанавливаем бинарный пакет, содержащий официальный исходный код, но не загружаем пакет с исходным кодом Kali, который называется linux.
9.2.3. Настройка ядра
Следующий шаг заключается в конфигурировании ядра в соответствии с вашими нуждами. Точная процедура зависит от целей того, кто занимается сборкой нового ядра.
Процесс сборки зависит от конфигурационного файла ядра. В большинстве случаев имеет смысл как можно меньше отклоняться от стандартного конфигурационного файла Kali, который, как и во всех дистрибутивах Linux, устанавливается в директорию /boot . В данном случае, вместо того, чтобы перенастраивать всё с нуля, достаточно сделать копию файла /boot/config-version . Версия должна быть точно такой же, как версия используемого в данный момент ядра, которую можно выяснить, воспользовавшись командой uname -r . Поместите копию в файл .config , расположенный в директории, содержащей исходный код ядра.
Кроме того, так как имеется стандартная конфигурация ядра в arch/arch/configs/*_defconfig , можно поместить выбранную конфигурацию туда, куда нужно, с помощью команды вроде make x86_64_defconfig (в случае с 64-битным ПК), или make i386_defconfig (для 32-битного компьютера).
В том случае, если вам не нужны изменения конфигурации, тут можно остановиться и перейти к разделу 9.2.4, «Компиляция и сборка пакета». Если же вам нужно внести изменения, или вы решили перенастроить всё с нуля, тогда надо будет заняться настройками. В папке с исходным кодом существуют специальные средства для настройки ядра. Для их использования понадобится команда вида make target , где target — это название одного из инструментов, описанных ниже.
Команда make menuconfig компилирует и запускает текстовой интерфейс, предназначенный для конфигурирования ядра (именно здесь нужен пакет libncurses5-dev ), который даёт доступ ко множеству настроек ядра, представленных в виде иерархической структуры. Нажатие на клавишу пробела позволяет изменить значение выбранной опции. Клавишей Enter «нажимают» на кнопки, которые выбирают в нижней части экрана. Кнопка Select в нижней части экрана применяется для перехода в выбранное подменю. Кнопка Exit закрывает текущий экран и осуществляет переход вверх по иерархии. Кнопка Help выводит более подробные сведения о выбранной опции. Клавиши-стрелки позволяют перемещаться по списку опций и экранных кнопок. Для того, чтобы выйти из конфигурационной программы, выберите команду Exit из главного меню. Затем программа предложит сохранить сделанные изменения, сделайте это, если вас всё устраивает.
Другие средства имеют похожие возможности, но оформлены они в виде графических приложений. Например, команда make xconfig использует графический интерфейс, основанный на Qt, команда make gconfig задействует GTK+. Первая из этих двух команд требует наличия libqt4-dev , в то время как вторая зависит от libglade2-dev и libgtk2.0-dev .
▍Работа с устаревшими файлами .config
Когда вы используете файл .config , который сгенерирован для другой (обычно — более старой) версии ядра, вам понадобится обновить и его. Сделать это можно с помощью команды make oldconfig , которая, в интерактивном режиме, задаст ряд вопросов о новых опциях конфигурации. Если вы хотите использовать ответы по умолчанию на все вопросы, можете воспользоваться командой make olddefconfig . Команда make oldnoconfig позволяет автоматически ответить отрицательно на все вопросы.
9.2.4. Компиляция и сборка пакета
▍Очистка перед перестроением
Если вы уже компилировали ядро в директории, с которой работаете, и хотите перестроить всё с нуля (например, из-за того, что значительно изменили конфигурацию ядра), вам нужно выполнить команду make clean для того, чтобы удалить скомпилированные файлы. Команда make distclean удаляет ещё больше сгенерированных файлов, включая файл .config . Поэтому, перед операцией очистки, сделайте на всякий случай резервную копию этого файла.
После того, как настройка ядра завершена, нам понадобится простая команда make deb-pkg . Она позволяет сгенерировать до пяти Debian-пакетов в стандартном формате .deb . Речь идёт о следующих файлах:
- Файл linux-image-version содержит образ ядра и соответствующие модули.
- Файл linux-headers-version содержит заголовочные файлы, требуемые для сборки внешних модулей.
- Файл linux-firmware-image-version включает в себя файлы прошивок, которые нужны некоторым драйверам (этого пакета может и не быть, если вы осуществляете сборку ядра из исходников, взятых из Debian или Kali).
- Файл linux-image-version-dbg содержит отладочные символы для образа ядра и его модулей.
- Файл linux-libc-dev включает в себя заголовки, относящиеся к некоторым библиотекам пространства пользователя, вроде GNU C ( glibc ).
Значение version в именах файлов задаётся в виде комбинации официальной версии (как задано в переменных VERSION , PATCHLEVEL , SUBLEVEL , и EXTRAVERSION в Makefile ), конфигурационного параметра LOCALVERSION и переменной окружения LOCALVERSION . При формировании версии пакета используется та же строка версии с присоединённым к ней номером ревизии, который регулярно увеличивается (и хранится в .version) , если только вы не переопределили этот номер с помощью переменной среды KDEB_PKGVERSION .
Для того, чтобы воспользоваться собранным ядром, остался лишь один шаг, который заключается в установке требуемых пакетов с помощью команды dpkg -i file.deb . Тут нужен пакет linux-image . Если имеются внешние модули ядра для сборки, понадобится установить пакет linux-headers . Так бывает, если установлены некоторые пакеты *-dkms (проверить это можно с помощью команды dpkg -l «*-dkms» | grep ^ii ). Другие пакеты в большинстве случаев не нужны.
Итоги
Сегодня мы поговорили о сборке собственного ядра для Kali Linux. Это процесс предусматривает загрузку исходного кода, выполнение необходимых модификаций, компиляцию, и, собственно, сборку. После этого новое ядро можно установить и пользоваться им. В следующий раз расскажем о создании Live-образов, которые можно использовать для загрузки системы с оптических носителей и флэш-дисков.
Уважаемые читатели! Если вы занимались сборкой собственных ядер Linux — просим поделиться опытом.
Источник
Обзор Kali Linux 2021.2
В начале июня состоялся релиз дистрибутива для цифровой криминалистики и тестирования систем безопасности Kali Linux 2021.2. Эта операционная система является клоном Debian, используя репозиторий Testing с наиболее свежими пакетами. Новые iso образы становятся доступными для загрузки каждые три месяца, предыдущим релизом был 2021.1, а следующим будет 2021.3. Собственные наработки, созданные в рамках проекта, выложены на Гитлабе.
Kali Linux вобрал в себя солидный опыт разработки операционных систем для проверки возможностей несанкционированного доступа к ресурсам ИТ. Начало было положено в августе 2004-го с выходом WhiteHat Knoppix. Затем было несколько выпусков WHAX и BackTrack, под капотом SlackWare Live CD. С марта 2013 г․ под руководством Мати Ахарони и Девона Кернса из Offensive Security выходит Kali Linux v1.0, уже на базе Debian.
Установка
Kali Linux предоставляет множество вариантов для установки, начиная простой рабочей станцией и заканчивая мобильными и встроенными устройствами. Рабочим столом по-умолчанию является Xfce, однако можно выбрать и другие DE:
▍ Обычное железо и Live boot
Имеются iso образы и торренты для платформ:
- AMD64 ;
- Intel 386 ;
- ARM64 iso образ для чипов Apple M1 .
Все образы доступны в трех вариантах:
- weekly, самые свежие и в то же время нестабильные пакеты;
- installer, стандартный оффлайновый набор ПО;
- netinstaller, все пакеты скачиваются во время установки. Не доступен для установки с Live USB;
▍ Виртуальные машины
Можно скачать 64-битные образы и торренты для VMWare и Virtualbox . Для беглого ознакомления с возможностями Kali Linux это пожалуй самый оптимальный вариант. Образ для VMWare имеет размер в 2.6 GiB, для Virtualbox — чуть побольше, 3.8 GiB. Кроме того доступны образы VM для Vagrant.
На данный момент имеются образы для следующих устройств на чипах ARM:
- 1 (Original);
- 2, 3, 4 и 400 (32-бит);
- 2 (v1.2), 3, 4 и 400 (64-бит);
- Zero;
- Zero W.
❒ Pine64
▍ Мобильные средства
Проект Kali NetHunter — это первая платформа тестирование на проникновение с открытым исходным кодом для устройств под управлением ОС Android. В наборе имеется множество уникальных функций, недоступных на других аппаратных платформах. Специфика NetHunter состоит в том, что с его помощью можно осуществлять проверки безопасности и попытки проникновения на мобильных устройствах. Примеры использования могут включать в себя следующие сценарии:
- Точка доступа Mana Evil в один клик.
- BadUSB атака типа MITM через эмуляцию работы USB устройства. Подключив NetHunter к компьютеру жертвы, тот перенаправляет сетевой трафик через себя.
- Взлом Bluetooth;
Рис. 1 Kali NetHunter.
Кали NetHunter может быть установлен на эти мобильные устройства:
❒ Gemini PDA (Nougat 5.x)
❒ Nexus, все модели начиная с 5-й модели и заканчивая 10-й (Lollipop)
- OnePlus One (11);
- OnePlus 2 (Nougat 5.x);
- OnePlus 2 (Pie 9.0);
- OnePlus (AnyKernel Pie 9.0);
- OnePlus (AnyKernel 10);
- OnePlus (OxygenOS 10);
- OnePlus 7;
- OnePlus 7 Pro (OxygenOS 10);
- OnePlus Nord (11).
❒ Samsung
- Galaxy Tab S4 (LTE)(Oreo 8.0);
- Galaxy Tab S4 (WiFi)(Oreo 8.0).
❒ Sony XPeria Z1
- Davinci Miui (10);
- Xiaomi Mi A3 (LineageOS 18.1).
❒ ZTE
▍ Контейнеры
Есть сборки для Docker и LXC/LXD, установка производится штатными средствами контейнерного ПО.
Kali-docker образы доступны для платформ arm64 , armhf и amd64 .
▍ Облако
Образы Kali Cloud можно по-быстрому развернуть в инфраструктуре различных облачных провайдеров:
Особенности и характеристики Kali 2021.2
Главная особенность Kali Linux — наличие полноценной подборки специальных приложений для проверки взлома и проникновения. Их общее количество превышает 600 и они разнесены по следующим категориям:
- Сбор информации: nmap и его разновидности, goofile, p0f и пр․;
- Анализ уязвимости: cisco-torch, BED, DotDotPwn и пр․;
- Атаки на беспроводное соединение: Aircrack-ng, Kismet, Pyrit и пр․;
- Веб-приложения: Blind Elephant, hURL, Nikto, Paros, и пр․;
- Инструментарий эксплуатации: commix, routersploit, Social-Engineer Toolkit и пр․;
- Стресс-тесты: DHCPig, t50, Reaver и пр․;
- Аналитический инструментарий: ddrescue, pdf-parser, iPhone-Backup-Analyzer и пр․;
- Охота на пароль: Hashcat, THC-Hydra, John the Ripper, wordlists и пр․;
- Прослушивание и подделка: _hexinject, mitmproxy, Wireshark и пр․;
- Обратная разработка: apktool, javasnoop, Valgrind и пр․;
- Поддержание доступа: dns2tcp, HTTPTunnel, pwnat и пр․;
- Аппаратный взлом: Arduino, dex2jar, smali и пр․;
- Средства для отчетности: cherrytree, dos2unix, Metagoofil и пр.
Одно из новых впечатлений, еще на этапе установки ОС, это замена супер-пользователя root с паролем tor на kali / kali. Объективности ради надо заметить, что изменение произошло в предыдущем релизе Kali. Это не так просто, как кажется, так как многие серверные приложения крепко привязаны к привилегиям root-а. Некоторые операционные системы давно уже отказались от root, в частности Ubuntu Linux обесточила супер пользователя с незапамятных времен.
▍Kaboxer
Представлен Kaboxer 1.0, (от Kali Application Boxeri), с помощью которого громоздкие приложения можно упаковать в контейнер и далее интегрировать с ОС и штатным менеджером пакетов. Вся прелесть в том, что для пользователя всё прозрачно, программа скомпонованная таким образом устанавливается точно так же из aptitude install package-name . На данный момент с помощью Kaboxer распространяются лишь эти приложения:
- Covenant — клиент-серверная сетевая служба;
- Firefox Developer Edition — тяжелое графическое приложение для веб-разработчиков;
- Zenmap — приложение использует Python 2.
▍ Kali-Tweaks v1.0
Анонсирована утилита Kali-Tweaks в помощь пользователям дистрибутива для легкой и корректной настройки операционной системы под свои нужды. Это вполне согласуется с философией Kali Linux — полностью отдавать себе отчет в своих действиях. С помощью Kali-Tweaks можно задать конфигурацию для компонент:
Рис 2. Kali-Tweaks.
- мета-пакеты;
- сетевые репозитории, это позволяет добавить, или удалить установку новейших и экспериментальных пакетов из древа;
- командная строка и консоль, например выбрать между Bash и Zsh;
- виртуализация.
▍ Bleeding-Edge
Ветка репозитория Bleeding Edge существует с марта 2013 г. В дословном переводе это означает кровоточащий край, смысл термина в обозначении самого острого края (острие науки передовой край), отдаленной границы, там где опасно. Соответственно, пакеты из этой ветки никак нельзя назвать стабильными. В текущем выпуске Kali Linux полностью переработан бэкенд репозитория.
Рис. 3 В kali-tweaks можно подключить репозиторий bleeding-edge.
▍ Привилегированные порты
В Unix/Linux системах по умолчанию только root имеет доступ на открытие TCP/IP портов в интервале 1-1024, их еще называют привилегированными. Можно по-разному обходить это ограничение, например перенаправлять привилегированный порт на обычный.
Но этот способ плохо масштабируем и может привести к путанице. Благо, теперь не надо перебрасывать порты, так как обычный пользователь может запускать приложения, которые открывают сокет на привилегированных TCP/IP портах. Это стало возможным благодаря специальному патчу на ядро Linux, без него функционал не будет доступен.
▍ Kali NetHunter
В новой версии были такие обновления:
- поддержка Android 11;
- улучшение в работе Magisk root;
- повышена совместимость благодаря динамическим партициям;
- улучшения в модуле Bluetooth;
- включены патчи rtl88xxau для более старых версий ядра.
▍ Новые приложения
Вот список новинок текущего релиза:
- CloudBrute — Разузнать об инфраструктуре компании, найти файлы и приложения в облачной среде.
- Dirsearch — Обнаружить файлы и директории на веб-серверах.
- Feroxbuster — Простое, быстрое, рекурсивное обнаружение содержимого интернет ресурса.
- Ghidra — Платформа обратной разработки.
- Pacu — Платформа для эксплойтов AWS.
- Peirates — Проникновение в среду Kubernetes.
- Quark-Engine — Рейтинговая система оценки вредоносных программ для Android.
- VSCode a.k.a. Visual Studio Code Open Source, редактор кода с открытыми исходниками.
▍ Графика и рабочий экран
В терминале появилось возможность быстрого переключения по горячей клавише Ctrl+p между однострочным и двустрочным приглашением PS1.
Рис 4. Переключение режимов PS1 терминала Xfce.
Переработана панель быстрого запуска Xfce, из нее убрали экранный рекордер kazam, добавив текстовый редактор и веб-браузер. Появились новые обои рабочего стола и экрана входа в DE. Для приложений терминала Xfce и файлового менеджера Thunar появилась опция запуска с правами root.
Рис 5. Root терминал Xfce.
▍ Raspberry Pi
- kalipi-config — своего рода raspi-config на стероидах для облегчения начальной настройки Kali Linux на Raspberry Pi.
- kalipi-tft-config — для облегчения начальной настройки TFT дисплеев на Rapberry Pi.
- Заявлено повышение производительности на 1500%.
- Ядро Linux обновилось до версии 5.4.83.
- На Raspberry Pi 4 и Raspberry Pi 400 полноценно заработал Bluetooth.
- Время первой загрузки сократилось с 20 до 15 с.
▍ Разное
Помимо этого были и другие изменения и исправления в разных местах. Устранены дефекты в приложении терминала и pkexec. Помимо этого:
- Wireshark теперь могут запускать и непривилегированные пользователи;
- новый Win-Kex v2.10 теперь поддерживает многоэкранный режим;
- пакет Parallels Tools вышел из Technical Preview для устройств на чипах Apple M1.
Источник