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

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

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

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

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

Категории

Все категории
Loading categories
linux-4.1.15_CVE-2022-45934 — Исходное дерево ядра Linux с акцентом на CVE-2022-45934, предоставляющее основу для анализа уязвимостей, разработки эксплойтов и отладки на уровне ядра. | Kitploit
Инструменты/GitHubGitHub/satheesh575555/linux-4.1.15_cve-2022-45934
Криминалистика памятиАнализ уязвимостейЭксплуатацияОтладчикиАнализ Бинарных Файлов
GitHubsatheesh575555/linux-4.1.15_cve-2022-45934

linux-4.1.15_CVE-2022-45934

Исходное дерево ядра Linux с акцентом на CVE-2022-45934, предоставляющее основу для анализа уязвимостей, разработки эксплойтов и отладки на уровне ядра.

Репозиторий

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
3 лет назадЕщё не проверено

Релиз ядра Linux 4.x http://kernel.org/

Это примечания к релизу для версии Linux 4. Внимательно прочитайте их, поскольку они рассказывают вам, о чём это всё, объясняют, как установить ядро, и что делать, если что-то пошло не так.

ЧТО ТАКОЕ LINUX?

Linux — это клон операционной системы Unix, написанный с нуля Линусом Торвальдсом при содействии неформальной команды хакеров со всей Сети. Он стремится к соответствию стандартам POSIX и Single UNIX Specification.

Он обладает всеми функциями, которые вы ожидаете от современной полнофункциональной Unix, включая настоящую многозадачность, виртуальную память, разделяемые библиотеки, подкачку по требованию, разделяемые исполняемые файлы с копированием при записи, правильное управление памятью и многостековую сетевую поддержку, включая IPv4 и IPv6.

Он распространяется под лицензией GNU General Public License — подробности см. в прилагаемом файле COPYING.

НА КАКОМ ОБОРУДОВАНИИ ОН РАБОТАЕТ?

Хотя изначально разрабатывался для 32-битных ПК на базе x86 (386 или выше), сегодня Linux также работает (по крайней мере) на архитектурах Compaq Alpha AXP, Sun SPARC и UltraSPARC, Motorola 68000, PowerPC, PowerPC64, ARM, Hitachi SuperH, Cell, IBM S/390, MIPS, HP PA-RISC, Intel IA-64, DEC VAX, AMD x86-64, AXIS CRIS, Xtensa, Tilera TILE, AVR32 и Renesas M32R.

Linux легко портируется на большинство 32- или 64-битных архитектур общего назначения при условии наличия страничного блока управления памятью (PMMU) и порта компилятора GNU C (gcc) (части набора компиляторов GNU, GCC). Linux также был портирован на ряд архитектур без PMMU, хотя функциональность при этом, очевидно, несколько ограничена. Linux также был портирован на самого себя. Теперь вы можете запускать ядро как приложение пользовательского пространства — это называется UserMode Linux (UML).

ДОКУМЕНТАЦИЯ:

  • Существует много документации как в электронной форме в Интернете, так и в книгах, как специфичной для Linux, так и касающейся общих вопросов UNIX. Я рекомендую заглянуть в подкаталоги документации на любом FTP-сайте Linux для книг LDP (Linux Documentation Project). Этот README не предназначен для документации по системе: существуют гораздо лучшие источники.

  • В подкаталоге Documentation/ находятся различные файлы README: они обычно содержат заметки по установке, специфичные для ядра, например, для некоторых драйверов. См. Documentation/00-INDEX для списка того, что содержится в каждом файле. Пожалуйста, прочитайте файл Changes, так как он содержит информацию о проблемах, которые могут возникнуть при обновлении вашего ядра.

  • Подкаталог Documentation/DocBook/ содержит несколько руководств для разработчиков ядра и пользователей. Эти руководства могут быть отображены в различных форматах: PostScript (.ps), PDF, HTML и man-страницы, среди прочих. После установки команды "make psdocs", "make pdfdocs", "make htmldocs" или "make mandocs" отобразят документацию в запрошенном формате.

УСТАНОВКА ИСХОДНОГО КОДА ЯДРА:

  • Если вы устанавливаете полные исходники, поместите tarball ядра в каталог, где у вас есть права (например, ваш домашний каталог) и распакуйте его:

    xz -cd linux-4.X.tar.xz | tar xvf -

    Замените "X" на номер версии последнего ядра.

    НЕ ИСПОЛЬЗУЙТЕ область /usr/src/linux! В этой области находится (обычно неполный) набор заголовочных файлов ядра, которые используются заголовочными файлами библиотек. Они должны соответствовать библиотеке, и не должны быть испорчены тем, каким бы ни было ядро дня.

  • Вы также можете обновляться между релизами 4.x с помощью патчей. Патчи распространяются в формате xz. Чтобы установить через патчирование, получите все новые файлы патчей, перейдите в корневой каталог исходного кода ядра (linux-4.X) и выполните:

    xz -cd ../patch-4.x.xz | patch -p1

    Замените "x" на все версии больше, чем версия "X" вашего текущего исходного дерева, по_порядку, и всё должно быть в порядке. Возможно, вы захотите удалить резервные файлы (some-file-name~ или some-file-name.orig) и убедиться, что нет неудачных патчей (some-file-name# или some-file-name.rej). Если они есть, значит, ошибку допустили либо вы, либо я.

    В отличие от патчей для ядер 4.x, патчи для ядер 4.x.y (также известные как -stable) не являются инкрементальными, а применяются непосредственно к базовому ядру 4.x. Например, если ваше базовое ядро — 4.0 и вы хотите применить патч 4.0.3, вы не должны сначала применять патчи 4.0.1 и 4.0.2. Аналогично, если у вас работает версия ядра 4.0.2 и вы хотите перейти к 4.0.3, вы должны сначала откатить патч 4.0.2 (то есть patch -R) перед применением патча 4.0.3. Подробнее об этом можно прочитать в Documentation/applying-patches.txt

    Альтернативно, для автоматизации этого процесса можно использовать сценарий patch-kernel. Он определяет текущую версию ядра и применяет все найденные патчи.

    linux/scripts/patch-kernel linux

    Первый аргумент в команде выше — это расположение исходного кода ядра. Патчи применяются из текущего каталога, но альтернативный каталог можно указать вторым аргументом.

  • Убедитесь, что у вас нет устаревших .o-файлов и зависимостей:

    cd linux make mrproper

    Теперь исходники должны быть правильно установлены.

ТРЕБОВАНИЯ К ПРОГРАММНОМУ ОБЕСПЕЧЕНИЮ

Компиляция и запуск ядер 4.x требуют актуальных версий различных программных пакетов. Обратитесь к Documentation/Changes для получения минимальных номеров версий и информации о получении обновлений для этих пакетов. Имейте в виду, что использование чрезмерно старых версий этих пакетов может привести к косвенным ошибкам, которые очень трудно отследить, поэтому не предполагайте, что вы можете просто обновить пакеты при возникновении очевидных проблем во время сборки или работы.

КАТАЛОГ СБОРКИ для ядра:

При компиляции ядра все выходные файлы по умолчанию будут храниться вместе с исходным кодом ядра. Использование параметра "make O=output/dir" позволяет указать альтернативное место для выходных файлов (включая .config). Пример:

root@kitploit:~
 исходный код ядра: /usr/src/linux-4.X
 каталог сборки:    /home/name/build/kernel

Чтобы настроить и собрать ядро, используйте:

root@kitploit:~
 cd /usr/src/linux-4.X
 make O=/home/name/build/kernel menuconfig
 make O=/home/name/build/kernel
 sudo make O=/home/name/build/kernel modules_install install

Пожалуйста, обратите внимание: Если используется параметр 'O=output/dir', он должен использоваться для всех вызовов make.

НАСТРОЙКА ЯДРА:

Не пропускайте этот шаг, даже если вы обновляетесь всего на одну минорную версию. В каждом релизе добавляются новые параметры конфигурации, и возникнут странные проблемы, если файлы конфигурации не настроены должным образом. Если вы хотите перенести существующую конфигурацию на новую версию с минимальными усилиями, используйте "make oldconfig", который задаст вам вопросы только по новым параметрам.

  • Альтернативные команды конфигурации:

    "make config" Обычный текстовый интерфейс.

    "make menuconfig" Текстовые цветные меню, радиокнопки и диалоги.

    "make nconfig" Улучшенные текстовые цветные меню.

    "make xconfig" Инструмент конфигурации на основе X windows (Qt).

    "make gconfig" Инструмент конфигурации на основе X windows (Gtk).

    "make oldconfig" Устанавливает значения по умолчанию для всех вопросов на основе содержимого вашего существующего файла ./.config и запрашивает новые символы конфигурации.

    "make silentoldconfig" Как выше, но избегает загромождения экрана уже отвеченными вопросами. Также обновляет зависимости.

    "make olddefconfig" Как выше, но устанавливает новые символы в их значения по умолчанию без запроса.

    "make defconfig" Создает файл ./.config, используя значения символов по умолчанию из arch/$ARCH/defconfig или arch/$ARCH/configs/${PLATFORM}_defconfig, в зависимости от архитектуры.

    "make ${PLATFORM}_defconfig" Создает файл ./.config, используя значения символов по умолчанию из arch/$ARCH/configs/${PLATFORM}_defconfig. Используйте "make help", чтобы получить список всех доступных платформ для вашей архитектуры.

    "make allyesconfig" Создает файл ./.config, устанавливая значения символов в 'y' везде, где это возможно.

    "make allmodconfig" Создает файл ./.config, устанавливая значения символов в 'm' везде, где это возможно.

    "make allnoconfig" Создает файл ./.config, устанавливая значения символов в 'n' везде, где это возможно.

    "make randconfig" Создает файл ./.config, устанавливая значения символов в случайные значения.

    "make localmodconfig" Создает конфигурацию на основе текущей конфигурации и загруженных модулей (lsmod). Отключает любую опцию модуля, которая не требуется для загруженных модулей.

    root@kitploit:~
                        Чтобы создать localmodconfig для другой машины,
                        сохраните lsmod этой машины в файл
                        и передайте его как параметр LSMOD.
    
                target$ lsmod > /tmp/mylsmod
                target$ scp /tmp/mylsmod host:/tmp
    
                host$ make LSMOD=/tmp/mylsmod localmodconfig
    
                        Вышеописанное также работает при кросс-компиляции.
    

    "make localyesconfig" Аналогично localmodconfig, но преобразует все опции модулей во встроенные (=y).

КОМПИЛЯЦИЯ ЯДРА:

  • Убедитесь, что у вас есть как минимум gcc 3.2. Для получения дополнительной информации обратитесь к Documentation/Changes.

    Обратите внимание, что вы по-прежнему можете запускать пользовательские программы в формате a.out с этим ядром.

  • Выполните "make", чтобы создать сжатый образ ядра. Также возможно выполнить "make install", если у вас установлен lilo, настроенный для работы с make-файлами ядра, но вы, возможно, захотите сначала проверить вашу конкретную конфигурацию lilo.

    Для фактической установки вы должны быть root, но ни одна из обычных операций сборки не должна этого требовать. Не поминайте имя root всуе.

  • Если вы настроили какую-либо часть ядра как `модули', вам также придётся выполнить "make modules_install".

  • Подробный вывод компиляции/сборки ядра:

    Обычно система сборки ядра работает в довольно тихом режиме (но не полностью безмолвном). Однако иногда вам или другим разработчикам ядра нужно видеть команды компиляции, компоновки и другие команды точно так, как они выполняются. Для этого используйте режим "verbose" сборки. Это делается вставкой "V=1" в команду "make". Например:

    make V=1 all

    Чтобы система сборки также сообщала причину пересборки каждой цели, используйте "V=2". По умолчанию используется "V=0".

  • Держите под рукой резервное ядро на случай, если что-то пойдёт не так. Это особенно верно для релизов разработки, поскольку каждый новый релиз содержит новый код, который ещё не был отлажен. Убедитесь, что вы также сохранили резервную копию модулей, соответствующих этому ядру. Если вы устанавливаете новое ядро с тем же номером версии, что и ваше рабочее ядро, сделайте резервную копию вашего каталога модулей перед тем, как выполнять "make modules_install".

    Альтернативно, перед компиляцией используйте опцию конфигурации ядра "LOCALVERSION", чтобы добавить уникальный суффикс к обычной версии ядра. LOCALVERSION можно установить в меню "General Setup".

  • Чтобы загрузить ваше новое ядро, вам нужно скопировать образ ядра (например, .../linux/arch/i386/boot/bzImage после компиляции) в место, где находится ваше обычное загрузочное ядро.

  • Загрузка ядра напрямую с дискеты без помощи загрузчика, такого как LILO, больше не поддерживается.

    Если вы загружаете Linux с жёсткого диска, скорее всего, вы используете LILO, который использует образ ядра, указанный в файле /etc/lilo.conf. Файл образа ядра обычно находится в /vmlinuz, /boot/vmlinuz, /bzImage или /boot/bzImage. Чтобы использовать новое ядро, сохраните копию старого образа и скопируйте новый образ поверх старого. Затем вы ДОЛЖНЫ ПЕРЕЗАПУСТИТЬ LILO для обновления карты загрузки!! Если вы этого не сделаете, вы не сможете загрузить новый образ ядра.

    Переустановка LILO обычно заключается в запуске /sbin/lilo. Возможно, вы захотите отредактировать /etc/lilo.conf, чтобы указать запись для вашего старого образа ядра (скажем, /vmlinux.old) на случай, если новый не сработает. См. документацию LILO для получения дополнительной информации.

ЕСЛИ ЧТО-ТО ПОШЛО НЕ ТАК:

  • Если у вас возникли проблемы, которые, по-видимому, связаны с ошибками ядра, пожалуйста, проверьте файл MAINTAINERS, чтобы узнать, есть ли конкретный человек, связанный с частью ядра, с которой у вас возникли проблемы. Если там никто не указан, то второй наилучший вариант — отправить письмо мне ([email protected]) и, возможно, в любой другой соответствующий список рассылки или в группу новостей.

  • Во всех отчётах об ошибках, пожалуйста, сообщайте, о каком ядре идёт речь, как воспроизвести проблему и какова ваша конфигурация (используйте здравый смысл). Если проблема новая, сообщите мне об этом, а если проблема старая, постарайтесь сообщить, когда вы впервые её заметили.

  • Если ошибка приводит к сообщению вида

    unable to handle kernel paging request at address C0000010 Oops: 0002 EIP: 0010:XXXXXXXX eax: xxxxxxxx ebx: xxxxxxxx ecx: xxxxxxxx edx: xxxxxxxx esi: xxxxxxxx edi: xxxxxxxx ebp: xxxxxxxx ds: xxxx es: xxxx fs: xxxx gs: xxxx Pid: xx, process nr: xx xx xx xx xx xx xx xx xx xx xx

    или подобной отладочной информации ядра на вашем экране или в системном журнале, пожалуйста, воспроизведите её точно. Дамп может показаться вам непонятным, но он содержит информацию, которая может помочь в отладке проблемы. Текст над дампом также важен: он сообщает кое-что о том, почему ядро сбросило код (в приведённом выше примере это связано с плохим указателем ядра). Дополнительная информация о понимании дампа содержится в Documentation/oops-tracing.txt

  • Если вы скомпилировали ядро с CONFIG_KALLSYMS, вы можете отправить дамп как есть, в противном случае вам придётся использовать программу "ksymoops", чтобы понять дамп (но компиляция с CONFIG_KALLSYMS обычно предпочтительнее). Эту утилиту можно загрузить с ftp://ftp..kernel.org/pub/linux/utils/kernel/ksymoops/ . Альтернативно, вы можете выполнить поиск по дампу вручную:

  • При отладке дампов, подобных приведённому выше, очень помогает, если вы можете выяснить, что означает значение EIP. Само по себе шестнадцатеричное значение мало помогает мне или кому-либо ещё: оно будет зависеть от вашей конкретной конфигурации ядра. Что вам нужно сделать, так это взять шестнадцатеричное значение из строки EIP (игнорируя "0010:") и найти его в списке имён ядра, чтобы увидеть, какая функция ядра содержит проблемный адрес.

    Чтобы узнать имя функции ядра, вам нужно найти системный двоичный файл, связанный с ядром, которое проявило симптом. Это файл 'linux/vmlinux'. Чтобы извлечь список имён и сопоставить его с EIP из сбоя ядра, выполните:

    nm vmlinux | sort | less

    Это даст вам список адресов ядра, отсортированных в порядке возрастания, из которого легко найти функцию, содержащую проблемный адрес. Обратите внимание, что адрес, указанный в отладочных сообщениях ядра, не обязательно будет точно совпадать с адресами функций (фактически, это очень маловероятно), поэтому вы не можете просто выполнить 'grep' по списку: однако список даст вам начальную точку каждой функции ядра, поэтому, найдя функцию, начальный адрес которой ниже искомого, но за которой следует функция с более высоким адресом, вы найдёте ту, что вам нужна. На самом деле, может быть хорошей идеей включить немного "контекста" в ваш отчёт о проблеме, указав несколько строк вокруг интересующей.

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

Дополнительную информацию об использовании инструментов конфигурации ядра Linux можно найти в Documentation/kbuild/kconfig.txt.

  • ЗАМЕЧАНИЯ по "make config":

    • Наличие ненужных драйверов сделает ядро больше и может в некоторых обстоятельствах привести к проблемам: опрос несуществующей платы контроллера может сбить с толку ваши другие контроллеры.

    • Компиляция ядра с типом процессора выше 386 приведет к тому, что ядро НЕ будет работать на 386. Ядро обнаружит это при загрузке и прекратит работу.

    • Ядро со встроенной эмуляцией математического сопроцессора всё равно будет использовать сопроцессор, если он присутствует: эмуляция математики в этом случае просто никогда не будет использоваться. Ядро будет немного больше, но будет работать на разных машинах независимо от того, есть ли у них математический сопроцессор или нет.

    • Параметры конфигурации "kernel hacking" обычно приводят к увеличению или замедлению ядра (или и тому, и другому), и даже могут сделать ядро менее стабильным, настраивая некоторые процедуры на активную попытку сломать плохой код для поиска проблем ядра (kmalloc()). Таким образом, вам, вероятно, следует ответить 'n' на вопросы о функциях "разработки", "экспериментальных" или "отладки".

  • После переустановки LILO всё должно быть готово. Выключите систему, перезагрузитесь и наслаждайтесь!

    Если вам когда-нибудь понадобится изменить корневое устройство по умолчанию, видеорежим, размер ramdisk и т.д. в образе ядра, используйте программу 'rdev' (или альтернативно параметры загрузки LILO, когда это уместно). Нет необходимости перекомпилировать ядро для изменения этих параметров.

  • Перезагрузитесь с новым ядром и наслаждайтесь.

  • Если вы по какой-то причине не можете сделать вышеописанное (у вас есть предварительно скомпилированный образ ядра или подобное), сообщение мне как можно большего количества информации о вашей конфигурации поможет. Пожалуйста, прочитайте документ REPORTING-BUGS для подробностей.

  • Альтернативно, вы можете использовать gdb на работающем ядре. (только для чтения; вы не можете изменять значения или устанавливать точки останова.) Для этого сначала скомпилируйте ядро с опцией -g; отредактируйте arch/i386/Makefile соответствующим образом, затем выполните "make clean". Вам также нужно включить CONFIG_PROC_FS (через "make config").

    После перезагрузки с новым ядром выполните "gdb vmlinux /proc/kcore". Теперь вы можете использовать все обычные команды gdb. Команда для поиска точки, где произошёл сбой вашей системы: "l *0xXXXXXXXX". (Замените XXX на значение EIP.)

    Использование gdb на неработающем ядре в настоящее время не удаётся, потому что gdb (ошибочно) игнорирует начальное смещение, для которого скомпилировано ядро.