Прямое манипулирование объектами ядра
Прямая манипуляция объектами ядра (DKOM) — это распространенный метод руткитов для Microsoft Windows, позволяющий скрыть потенциально опасные сторонние процессы , драйверы , файлы и промежуточные соединения от диспетчера задач и планировщика событий .
Обзор
[ редактировать ]По своей сути руткит, использующий DKOM, скрывается от диспетчера объектов или диспетчера задач . Изменяя связанный список, содержащий список всех активных потоков и процессов, руткит этого типа может фактически скрыть все следы от диспетчера объектов, убрав указатель из самого руткита. Это возможно благодаря тому, что модули ядра и загружаемые драйверы имеют прямой доступ к памяти ядра из его привилегированного доступа. системы Когда ядро проверяет список всех процессов, запущенных в системе, оно полагается на EPROCESS для их поиска. Однако, поскольку ядро Windows основано на потоках, а не на процессах, указатели можно свободно изменять без каких-либо непредвиденных последствий. [1] Изменяя указатели связанного списка так, чтобы он охватывал сам процесс руткита, руткит становится невидимым для средства просмотра событий Windows и любых приложений, обеспечивающих целостность системы, которые полагаются на этот список. Это позволяет руткитам DKOM иметь полную свободу действий в целевой системе.
ДКОМ использует [2]
- Скрыть процесс
- Скрыть драйверы
- Скрыть порты
- Повышение уровня привилегий потоков и процессов
- Перекос криминалистики
- Полный контроль над системой
Скрытие от диспетчера объектов
[ редактировать ]Каждый процесс представлен как объект и взаимосвязан друг с другом в операционной системе. Внутри каждого процесса имеется заранее выделенный набор пространства, который содержит адрес текущего, следующего потока и потока, заблокированного мьютексом. Эта жизненно важная информация записывается в EPROCESS в памяти; раздел диспетчера объектов содержит двусвязный список всех известных запущенных процессов, который также известен как EPROCESS. Однако DKOM использует эту структуру, изменяя переднюю ссылку (FLINK), чтобы она указывала на предыдущий узел процессора, который мы хотим скрыть, и указывая обратную ссылку (BLINK) скрытого процессора на предыдущую структуру. [3] Изменяя подраздел блока EPROCESS, список активных в данный момент процессов указывает на скрытый процесс. По сути, это скрывает любой документальный след данного процесса или инжектора от внимания планировщика, поскольку процесс скрыт; тем не менее, он выполняется неопределенно долго, поскольку поток, в котором он находится, активен из-за политики циклического перебора. [2]
Основная проблема этого типа руткитов заключается в том, что скрытые процессы продолжают работать, несмотря на различные переключения контекста. [3] В планировщике Windows потоки разделяются для выполнения задач, а не процессов. Скорее, поток вызывает несколько процессов в течение заданного периода времени. Этот процесс контролируется циклическим характером планировщика, и потоки приостанавливаются, чтобы позволить другим потокам быть активными. Даже если процесс становится невидимым для диспетчера задач, он по-прежнему выполняется одновременно с системой, поскольку потоки активны. [4] Это чрезвычайно затрудняет обнаружение скрытых процессов, созданных руткитом.
Обнаружение
[ редактировать ]Обнаружение руткитов разделено на множество сложных уровней, которые включают проверку целостности и поведенческое обнаружение. Проверяя загрузку ЦП , текущий и исходящий сетевой трафик или сигнатуры драйверов, простые антивирусные инструменты могут обнаружить распространенные руткиты . Однако это не относится к руткиту типа ядра. Из-за того, что эти типы руткитов могут скрываться от системной таблицы и средства просмотра событий, их обнаружение требует поиска перехватывающих функций. Это не только очень сложно реализовать, но и требует повторения каждого узла в EPROCESS. Однако, несмотря на то, что в обработчике физически нет присутствия каких-либо вредоносных процессов, вызовы к нему выполняются в фоновом режиме. Эти процессы указывают на потоки, сетевые соединения указывают на процессы, а драйверы указывают на потоки. Чтобы руткит DKOM был жизнеспособным, он должен скрывать свое присутствие от каждой ссылки в EPROCESS. [5] Это означает, что руткит должен регулярно обновлять любые компоновщики, чтобы они не указывали на себя. Путем перебора каждого объекта планировщика (потоков, заголовков объектов и т. д.) можно обнаружить руткит DKOM. В планировщике могут проявляться определенные шаблоны памяти или поведения, и если они обнаружены, в конечном итоге может быть обнаружен и настоящий руткит. [5]
См. также
[ редактировать ]- Руткит
- Диспетчер задач Windows
- Планировщик задач Windows
- Диспетчер объектов (Windows)
- Круговое планирование
- Зацепка
- Связанный список
- устройство
- Процесс (вычисления)
- Указатель (компьютерное программирование)
- Поток (вычисления)
- Подписание кода
- процессорное время
- Сетевой трафик
- Драйвер устройства
Ссылки
[ редактировать ]- ^ https://www.blackhat.com/presentations/win-usa-04/bh-win-04-butler.pdf Батлер, Джейми. ДКОМ, ХБГэри. Проверено 14 мая 2014 г.
- ^ Jump up to: а б http://bsodtutorials.blogspot.com/2014/01/rootkits-direct-kernel-object.html Миллер, Гарри. «Учебные пособия по BSOD: Руткиты». BSODTUTORIALS, 27 января 2014 г. Дата обращения 01.05.2014.
- ^ Jump up to: а б http://fluxius.handgrep.se/2011/01/02/ring-0f-fire-rootkits-and-dkom/ FluxIuS Ring Of Fire: руткиты . WordPress, 2 января 2011 г. Дата обращения 5 мая 2014 г.
- ^ https://www.symantec.com/avcenter/reference/when.malware.meets.rootkits.pdf. Архивировано 28 августа 2017 г. в Wayback Machine Флорио, Элия. «Когда вредоносное ПО встречается с руткитами». Symantec, декабрь 2005 г. Дата обращения 09.05.2014.
- ^ Jump up to: а б http://jessekornblum.com/presentations/dodcc11-2.pdf jessekornblum. Анализ памяти Windows, . КИРУС Технология, (2006). Проверено 14 мая 2014 г.