Реализация linux kernel руткитов
Пример реализации rootkit – программы для linux систем. Многопоточный драйвер, производящий скрытие и защиту указанных данных, дампинг и отсылку информации по сети о процессах, запускаемых пользователем. Классификация руткитов по уровню привилегий.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 15.04.2019 |
Размер файла | 16,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Реализация linux kernel руткитов
Нестеренко А. Е., руководитель Пескова О.Ю.
ИТА ЮФУ, ИКТИБ, кафедра БИТ г. Таганрог
NesTerrSaSha20@yandex.ru
В работе приведен пример реализации rootkit - программы для linux систем. Представлен многопоточный драйвер, производящий скрытие и защиту указанных данных, а также дампинг и отсылку информации по сети о процессах, запускаемых пользователем.
Ключевые слова: rootkit, linux, драйвер, многопоточность, slab, ядро операционной системы.
Руткит (англ. rootkit, то есть «набор root'а») -- набор программных средств (например, исполняемых файлов, скриптов, конфигурационных файлов), для обеспечения:
? маскировки объектов (процессов, файлов, директорий, драйверов)
? контроля (событий, происходящих в системе)
? сбора данных (параметров системы)
В систему руткит может быть установлен различными способами: загрузка посредством эксплойта, после получения шелл-доступа (в таком случае, может использоваться средство типа wget или исходный FTP-клиент для загрузки руткита с удаленного устройства), в исходном коде или ресурсах программного продукта.
Можно представить следующую классификацию руткитов по уровню привилегий:
1. Уровень пользователя (user-mode) - категория основана на перехвате функций библиотек пользовательского режима. Руткиты этой категории получают те же права, что обычное приложение, запущенное на компьютере. Руткиты исполняются в непривилегированном кольце (с точки зрения архитектуры информационной безопасности). Они используют программные расширения (например, для проводника Windows), перехват сообщений, отладчики, эксплуатируют уязвимости в безопасности, а также производят перехваты функций (function hooking) широко используемых API (в памяти каждого отдельного процесса). Они внедряются в другие запущенные процессы и используют их память. Это более распространенный вариант. Легче обнаруживается и устраняется даже стандартными средствами операционной системы. Дёшевы в приобретении. 2. Уровень ядра (kernel-mode) - категория основана на установке в систему драйвера, осуществляющего перехват функций уровня ядра. Руткиты этой категории работают на самом глубинном уровне ОС, получая максимальный уровень доступа на компьютере. После инсталляции такого руткита, возможности атакующего практически безграничны. Руткиты исполняются в привилегированном нулевом кольце (наивысший уровень привилегий ОС). Они могут встраиваться в драйверы устройств, проводить прямую модификацию объектов ядра (DKOM), а также влиять на взаимодействие между пользовательским режимом и режимом ядра. Руткиты уровня ядра обычно более сложны в создании, поэтому встречаются реже. Также их гораздо сложней обнаружить и удалить. Дороги в приобретении.
Самый распространенный метод, обеспечивающий функционирование руткита уровня ядра - это перехват системных вызовов путем подмены соответствующей записи в таблице системных вызовов sys_call_table. Этот метод имеет свои недостатки: в частности, он легко детектируется антируткитами; таблица вызовов в современных ядрах не экспортируется; и кроме того, перехват некоторых системных вызовов (например, execve()) нетривиален.
Другим распространенным механизмом в kernel-mode руткитах является патчинг VFS (Virtual Filesystem Switch). Этот подход применяется в рутките adore-ng. Он основан на подмене адреса какой-либо из функций-обработчиков для текущей файловой системы.
Как и в Windows, широко используется сплайсинг - замена первых байтов кода системного вызова на инструкцию jmp, осуществляющую переход на адрес обработчика руткита. В коде перехвата обеспечивается выполнение проверок, возврат байтов, вызов оригинального кода системного вызова и повторная установка перехвата. Данный метод также легко детектируется.
Основное назначение rootkit-программ -- замаскировать присутствие постороннего лица и его инструментальных средств на машине. Представленная в работе программа предназначена для скрытной слежки за действиями пользователя. Она может быть полезна для системных администраторов, аналитиков DLP систем при контроле за пользователями на предприятии, для экспертов при расследовании инцидентов.
Программа rootkit работает в пространстве ядра, перехватывает системные вызовы, генерирует и отправляет udp пакеты, сохраняет информацию в файл, скрывает своё присутствие. Программа содержит следующий набор функций.
Функция выделения памяти - позволяет динамически выделить память под переменные определённого типажа, принимает параметрами имя структуры, её размер, смещение и флаги, возвращает указатель на выделенную память.
Макрос лицензии - позволяет указывать лицензию на продукт, необходим для использования некоторых функций, принимает параметром строку с лицензией.
Директивы препроцессора позволяют создавать глобальные переменные, узнавать архитектуру системы(i386 или amd64), поиска таблицы системных вызовов по адресу в стеке.
Функция нахождения таблицы системных вызовов ищет её среди множества соответствующих адресов в системе, возвращает адрес таблицы, либо NULL, если ничего не нашла.
Функция сохранения копии оригинальной таблицы вызовов - сохраняет оригинальную таблицу системных вызовов перед её модификацией, это может пригодиться при выгрузке драйвера.
Макрос получения передаваемых драйверу параметров - в программе используется для получения времени таймаута между отправками пакетов и записью в дамп и имени процесса.
Структура описывающая перехваченный процесс, содержит поле имени процесса, имени команды, pid процесса и двусвязный список.
Структура контекста потока - содержит флаг остановки и информацию о дампе.
Функция записи в файл записывает перехваченную информацию о процессах в файл.
Функция потока сохранения обеспечивает сохранение информации в файл, мьютексную блокировку/разблокировку файла.
Функция потока генерации и отправки udp пакетов генерирует и отправляет пакет на хост.
Функция инициализации драйвера описывает инициализацию драйвера, создание потоков, его сокрытие.
Функция обхода защиты от записи в таблицу системных вызовов помогает осуществлять запись в таблиц системных вызовов, по - сути конструктор.
Функция удаления элементов драйвера из ядра подчищает память, сливает потоки, возвращает оригинальную таблицу системных вызовов и её защиту, по - сути деструктор.
Функция создания кеш - памяти - создаёт объект в кеше.
Функция выделения памяти для кеша выделяет память определенного размера в кеше.
Функция высвобождения памяти кеша - высвобождает ранее выделенную память.
Функция удаления объекта кеша - удаляет ранее созданный объект в кеше.
Макрос загрузки модуля в ядро берёт в себя конструктор и загружает в ядро.
Для использования программы системному администратору linux - системы или инженеру/аналитику DLP системы следует придерживаться следующей инструкции.
Перейти в директорию с файлами rootkit.c и Makefile на целевой машине.
Выполнить от root команду make, для того, чтобы собрался драйвер.
Выполнить от root команду insmod rootkit.ko dump_timeout=<время таймаута> proc_name=<имя процесса>
Запустить на своем компьютере скипт на scapy
Особенностью данного руткита является распараллеливание задач, связанных с отправкой и дампингом данных, а также активное использование быстрой кеш-памяти.
rootkit linux программа драйвер
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. поиск ядерных функций. [Электронный ресурс]. - URL:http://lxr.free-electrons.com/ident. (дата обращения: 13.12.15)
2. Перехват системных вызовов. [Электронный ресурс]. ? URL: http://jbremer.org/x86-api-hooking-demystified/#ahbasic (дата обращения: 13.12.15)
3. Пример руткита. [Электронный ресурс]. ? URL: http://turbochaos.blogspot.ru/2013/09/linux-rootkits-101-1of-3.html (дата обращения: 13.12.15)
4. Информация о руткитах. [Электронный ресурс]. ? https://ru.wikipedia.org/wiki/%D0%A0%D1%83%D1%82% D0%BA%D0%B8%D1%82 (дата обращения: 13.12.15)
5. Slab и slab allocator. [Электронный ресурс]. ? URL: https://ru.wikipedia.org/wiki/Slab (дата обращения: 13.12.15)
6. Классификация руткитов [Электронный ресурс]. - https://blog.kaspersky.ru/chto-takoe-rutkit-i-kak-udalit-egos-kompyutera/650/
Размещено на Allbest.ru
...Подобные документы
Механизмы шифрования данных в ОС LINUX MINT. Реализация FDE в интерфейсе инсталлятора. Одно из главных достоинств утилиты CryptKeeper. Создание учётной записи через терминал. Графический интерфейс прав доступа. Резервное копирование данных программы.
курсовая работа [2,9 M], добавлен 11.12.2014Порядок, определяющий организацию, хранения и именования данных на носителях информации в компьютерах. Классификация файловых систем. Основные функции файловой системы Linux. Нарушения целостности файловой системы при некорректном завершении работы.
презентация [405,2 K], добавлен 10.10.2011Компоновка и конфигурирование Linux сервера. Общая информация об ALT Linux Server 5, его подвиды и основные функциональные возможности. Установка дистрибутива ALT Linux 5.0 "Ковчег" и Apache2+php+MySQL. Пример настройки работы сайта на web-сервере.
курсовая работа [6,0 M], добавлен 24.10.2012Основные сходства и отличия операционных систем Microsoft Windows и GNU/Linux: конфигурации, цена и широта технической поддержки; оценка стоимости владения и статистика использования на настольных компьютерах; простота инсталляции и наличие драйверов.
курсовая работа [294,9 K], добавлен 12.05.2011Пример окна входа в систему Linux (графический режим). Простейшие команды Linux. Основные задачи при управлении пользователями. Сведения, которые нужно указать для вновь создаваемого пользователя. Содержимое файла/etc/shadow (в котором содержатся пароли).
лекция [603,7 K], добавлен 20.12.2013Управление памятью в операционной системе Linux. Физическая и виртуальная память. Исполнение и загрузка пользовательских программ, файловая система. Передача данных между процессами. Структура сети в операционной системе. Развитие и использование Linux.
презентация [1,4 M], добавлен 24.01.2014UNIX - одна з найпопулярніших в світі операційних систем. Ключеві риси Linux. Порівняльні характеристики 32-розрядних операційних систем. Поверхневий огляд характеристик ядра Linux. Програмні характеристики: базові команди і утиліти, мови програмування.
курсовая работа [33,3 K], добавлен 07.12.2010История создания и общая характеристика операционных систем Windows Server 2003 и Red Hat Linux Enterprise 4. Особенности установки, файловых систем и сетевых инфраструктур данных операционных систем. Использование протокола Kerberos в Windows и Linux.
дипломная работа [142,7 K], добавлен 23.06.2012Понятие и внутренняя структура операционных систем, их классификация и разновидности, предъявляемые требования, этапы становления и развития, функциональные особенности. Описание и назначение базовых компьютерных систем: DOS, Windows, Linux, Mac.
курсовая работа [44,9 K], добавлен 14.12.2013Linux – одна из наиболее популярных распространяемых бесплатно операционных систем. Работа с базовым ограниченным набором программ по умолчанию. Характеристика основных программ, которые расширяют возможности операционной системы Linux для пользователя.
презентация [486,5 K], добавлен 09.10.2013Основные понятия операционных систем. Современное оборудование компьютера. Преимущества и недостатки операционной системы Linux. Функциональные возможности операционной системы Knoppix. Сравнительная характеристика операционных систем Linux и Knoppix.
реферат [1,5 M], добавлен 17.12.2014История создания операционной системы Linux. Стандартный откомпилированный набор пакетов (дистрибутивов): базовая система, утилиты для инсталляции, готовые к инсталляции пакеты инструментов для UNIX. Регистрация драйверов и разрешение конфликтов.
презентация [1,3 M], добавлен 24.01.2014Разработка драйвера под Linux, отслеживающего выделение и освобождение процессами виртуальной памяти и выделение физических страниц при страничных отказах. Компиляция драйвера и работа с ним. Экспериментальная проверка работоспособности драйвера.
курсовая работа [43,5 K], добавлен 18.06.2009ОС Linux - название Unix-подобных операционных систем, основанных на одноимённом ядре. Дистрибутив Lubuntu 12: интерфейс, командная строка, основные программы, входящие в состав пакета. Работа с сетью, конфигурированием и администрированием системы.
методичка [2,0 M], добавлен 28.10.2014Приклади популярних файлових систем, а також їх класифікація. Механізм просторового запису файлів. Система ISO 9660 для оптичних накопичувачів. Режими журналювання. Порівняння файлових систем Windows XP та Linux. Поняття жорсткого посилання в Linux.
реферат [30,2 K], добавлен 07.06.2014Анализ технических возможностей операционной системы Mandriva Linux - дистрибутива GNU/Linux, разрабатываемого французской компанией Mandriva, выпускающей свободные, коммерческие и корпоративные версии своего дистрибутива. Этапы установки оболочки Linux.
презентация [26,2 M], добавлен 23.05.2010Linux - ядро операционной системы с монолитной архитектурой. Прародители операционной системы Linux, ее стабильные и экспериментальные версии. Процесс внедрения Linux и свободного программного обеспечения в школах и государственных учреждениях России.
реферат [18,2 K], добавлен 19.01.2013Общие сведения об операционной системе Linux. Анализ информации о серверах. Основные прикладные клиент-серверные технологии Windows. Сведения о SQL-сервере. Общая информация о MySQL–сервере. Установка и специфика конфигурирования MYSQL-сервера на LINUX.
курсовая работа [1,3 M], добавлен 16.12.2015Изучение операционной системы Linux: элементов файлов, структуры каталогов и прав доступа к ним. Получение практических навыков по работе с некоторыми командами данной ОС. Теоретические сведения и практические навыки по работе с процессами Linux.
лабораторная работа [847,5 K], добавлен 16.06.2011Использование дистрибутива GNU/Linux Mandriva, который по праву считается одним из наиболее легких для освоения начинающими пользователями, для взаимодействия с командным интерпретатором GNU/Linux. Информация о формате и основных ключах команды cal.
лабораторная работа [2,4 M], добавлен 28.12.2012