Добро пожаловать обратно, мои начинающие кибервоины!
В этой продолжающейся серии статей «Основы Linux для хакеров» я хочу рассказать о загружаемых модулях ядра (LKM). LKM критически важны для администраторов Linux, поскольку позволяют им добавлять функциональность в ядро без его перекомпиляции. Такие компоненты, как видеодрайверы и другие устройства, можно добавлять в ядро Linux без выключения системы, перекомпиляции и перезагрузки.
Загружаемые модули ядра имеют решающее значение для хакера, поскольку, если мы сможем заставить администратора Linux загрузить наш новый модуль в его ядро, мы не только станем его системой, но и, поскольку мы находимся на уровне ядра его операционной системы, сможем контролировать даже то, что его система сообщает ему в плане процессов, портов, служб, места на жестком диске и т. д.
Итак, если мы сможем предложить пользователю/администратору Linux «новый и улучшенный» видеодрайвер со встроенным в него нашим руткитом, мы сможем получить контроль над его системой и ядром. Именно так некоторые из самых коварных руткитов используют возможности ОС Linux.
Итак, я надеюсь, вам ясно, что понимание LKM является ключом к тому, чтобы стать эффективным администратором Linux и ОЧЕНЬ эффективным и скрытным хакером.
Поскольку ядро управляет всеми процессами, происходящими в операционной системе, ему иногда требуются обновления. Эти обновления могут включать новые драйверы устройств (например, видеокарты или USB-устройств), драйверы файловой системы и даже системные расширения. Именно здесь на помощь приходят локальные модули ядра (LKM). Теперь мы можем просто загружать и выгружать модули ядра по мере необходимости, не перекомпилируя ядро.
kali > uname -a
Обратите внимание, что ядро сообщает нам не только свою сборку (4.6.4), но и архитектуру, для которой оно собрано (x86_64). Эту информацию также можно получить, выполнив команду catting для файла /proc/version, которая, на самом деле, выдаёт ещё больше информации.
kali > cat /proc/version
В современных ядрах Linux для настройки параметров ядра используется команда sysctl . Все изменения, внесённые с помощью sysctl , сохраняются только до перезагрузки системы. Чтобы сделать изменения постоянными, необходимо отредактировать файл конфигурации sysctl в /etc/sysctl.conf .
Будьте осторожны при использовании sysctl, поскольку без необходимых знаний и опыта вы можете легко сделать систему незагружаемой и непригодной к использованию. Давайте теперь посмотрим на содержимое sysctl .
kali > sysctl -a | меньше
Чтобы просмотреть файл конфигурации sysctl, мы можем получить его по адресу /etc/sysctl.conf .
кали > меньше /etc/sysctl.conf
Один из способов использования sysctl для взлома — включить IP-пересылку (net.ipv4.conf.default.forwarding) для атак типа «человек посередине» . С точки зрения защиты, мы можем отключить ICMP-эхо-запросы (net.ipv4.icmp_echo_ignore_all), чтобы затруднить (но не полностью) обнаружение нашей системы хакерами.
кали > lsmod
Мы можем загрузить или вставить модуль с помощью insmod и удалить модуль с помощью rmmod .
kali > modprob e -a <имя модуля>
Чтобы удалить модуль, мы просто используем ключ -r с modprobe, за которым следует имя модуля.
kali > modprobe -r <модуль, который нужно удалить>
Главным преимуществом modprobe является то, что он понимает зависимости, параметры, а также процедуры установки и удаления наших модулей ядра.
Чтобы увидеть файлы конфигурации установленных модулей, перечислим содержимое каталога /etc/modprobe.d/.
кали> ls -l /etc/modprobe.d/
Помните, что модули LKM удобны для пользователя/администратора Linux, но представляют собой серьёзную уязвимость системы безопасности Linux, с которой должен быть знаком любой профессиональный хакер. Как я уже говорил, LKM может стать идеальным инструментом для внедрения руткита в ядро и сеять хаос!
В этой продолжающейся серии статей «Основы Linux для хакеров» я хочу рассказать о загружаемых модулях ядра (LKM). LKM критически важны для администраторов Linux, поскольку позволяют им добавлять функциональность в ядро без его перекомпиляции. Такие компоненты, как видеодрайверы и другие устройства, можно добавлять в ядро Linux без выключения системы, перекомпиляции и перезагрузки.
Загружаемые модули ядра имеют решающее значение для хакера, поскольку, если мы сможем заставить администратора Linux загрузить наш новый модуль в его ядро, мы не только станем его системой, но и, поскольку мы находимся на уровне ядра его операционной системы, сможем контролировать даже то, что его система сообщает ему в плане процессов, портов, служб, места на жестком диске и т. д.
Итак, если мы сможем предложить пользователю/администратору Linux «новый и улучшенный» видеодрайвер со встроенным в него нашим руткитом, мы сможем получить контроль над его системой и ядром. Именно так некоторые из самых коварных руткитов используют возможности ОС Linux.
Итак, я надеюсь, вам ясно, что понимание LKM является ключом к тому, чтобы стать эффективным администратором Linux и ОЧЕНЬ эффективным и скрытным хакером.
Шаг 1: Что такое модуль ядра?
Ядро — ключевой компонент любой операционной системы Linux, включая Kali Linux. Ядро — это центральная нервная система нашей операционной системы, управляющая всеми её функциями, включая взаимодействие между аппаратными компонентами и запуск необходимых служб. Ядро обеспечивает взаимодействие пользовательских приложений с оборудованием, таким как процессор, память, жёсткий диск и т. д.Поскольку ядро управляет всеми процессами, происходящими в операционной системе, ему иногда требуются обновления. Эти обновления могут включать новые драйверы устройств (например, видеокарты или USB-устройств), драйверы файловой системы и даже системные расширения. Именно здесь на помощь приходят локальные модули ядра (LKM). Теперь мы можем просто загружать и выгружать модули ядра по мере необходимости, не перекомпилируя ядро.
Шаг 2: Проверка ядра
Первое, что нам нужно сделать, — это проверить, какое ядро использует наша система. Есть как минимум два способа сделать это. Мы можем ввести:kali > uname -a
Обратите внимание, что ядро сообщает нам не только свою сборку (4.6.4), но и архитектуру, для которой оно собрано (x86_64). Эту информацию также можно получить, выполнив команду catting для файла /proc/version, которая, на самом деле, выдаёт ещё больше информации.
kali > cat /proc/version
Шаг 3: Настройка ядра с помощью sysctl
Иногда администратору Linux требуется «настроить» ядро. Это может включать в себя изменение распределения памяти, включение сетевых функций и даже защиту ядра от хакеров.В современных ядрах Linux для настройки параметров ядра используется команда sysctl . Все изменения, внесённые с помощью sysctl , сохраняются только до перезагрузки системы. Чтобы сделать изменения постоянными, необходимо отредактировать файл конфигурации sysctl в /etc/sysctl.conf .
Будьте осторожны при использовании sysctl, поскольку без необходимых знаний и опыта вы можете легко сделать систему незагружаемой и непригодной к использованию. Давайте теперь посмотрим на содержимое sysctl .
kali > sysctl -a | меньше
Чтобы просмотреть файл конфигурации sysctl, мы можем получить его по адресу /etc/sysctl.conf .
кали > меньше /etc/sysctl.conf
Один из способов использования sysctl для взлома — включить IP-пересылку (net.ipv4.conf.default.forwarding) для атак типа «человек посередине» . С точки зрения защиты, мы можем отключить ICMP-эхо-запросы (net.ipv4.icmp_echo_ignore_all), чтобы затруднить (но не полностью) обнаружение нашей системы хакерами.
Шаг 4: Модули ядра
Для управления ядрами в Linux есть как минимум два способа. Старый способ — использовать группу команд, построенных на основе команды insmod . Здесь мы используем одну из них — lsmod — для получения списка установленных модулей в ядре.кали > lsmod
Мы можем загрузить или вставить модуль с помощью insmod и удалить модуль с помощью rmmod .
Шаг 5: Modprobe
Большинство новых дистрибутивов Linux, включая наш Kali Linux (создан на основе Debian), перешли на команду modprobe для управления LKM. Чтобы добавить модуль в ядро, введите:kali > modprob e -a <имя модуля>
Чтобы удалить модуль, мы просто используем ключ -r с modprobe, за которым следует имя модуля.
kali > modprobe -r <модуль, который нужно удалить>
Главным преимуществом modprobe является то, что он понимает зависимости, параметры, а также процедуры установки и удаления наших модулей ядра.
Чтобы увидеть файлы конфигурации установленных модулей, перечислим содержимое каталога /etc/modprobe.d/.
кали> ls -l /etc/modprobe.d/
Помните, что модули LKM удобны для пользователя/администратора Linux, но представляют собой серьёзную уязвимость системы безопасности Linux, с которой должен быть знаком любой профессиональный хакер. Как я уже говорил, LKM может стать идеальным инструментом для внедрения руткита в ядро и сеять хаос!