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

Поиск:

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. Теория и практика программирования “шапок-невидимок“, позволяющих скрывать от системы данные, процессы, сетевые соединения.

В этой главе мы познакомимся с интерфейсом NDIS. Да, его использование еще сложнее, чем TDI, но это себя оправдывает. Если TDI - просто необходимость при работе на уровне ядра (ведь обычные способы мы использовать не можем), то при использовании NDIS у нас открываются действительно впечатляющие возможности. Например, NDIS позволяет работать непосредственно с сетью - с так называемыми "сырыми пакетами" (raw packets) - никем до этого не обработанными пакетами. Мы также можем "прослушивать" все пакеты, которые передает и принимает узел, на котором запущен наш руткит, то есть, по сути, мы можем создать локальный сетевой сниффер. Почему локальный? Да потому что он будет прослушивать не все пакеты, которые передаются по сети, а только те, которые передает и принимает локальный компьютер. Можно создать настоящий сетевой сниффер, который будет перехвачивать пакеты даже в коммутируемых сетях. В этой главе мы с вами попытаемся создать именно такой сниффер. Он будет переводить сетевой адаптер в прослушивающий режим, и перехватывать все пакеты, которые передаются по нашему сегменту сети.

Но за все нужно расплачиваться. В этом случае мы расплачиваемся своим удобством и временем - ведь нам придется создавать свой стек протокола TCP/IP. Хотя в качестве бонуса мы получаем дополнительную степень невидимости - на уровне NDIS мы не так заметны для брандмауэра.

Если же вы хотите быстро создать простенький сниффер пакетов, могу порекомендовать две ссылки:

Но не спешите сразу же качать исходники! Для начала прочитайте эту главу, а потом уже разбирайтесь с исходными кодами тех приложений, иначе вы ничего не поймете. Эту главу вам нужно хотя бы прочитать - можно не компилировать приведенный в этой главе пример (для экономии времени), а сразу приняться за рассмотрение приведенных выше исходников. Но еще раз повторю: если вы не прочитаете ее, вы ничего не поймете.

23.1. Регистрация протокола в системе

Поскольку мы будем разрабатывать собственный стек функций протокола, мы должны зарегистрировать в системе новый протокол. Давайте назовем его NdisProto.

Для регистрации протокола нам нужно определиться, с каким интерфейсом (Ethernet-картой, RadioEthernet-адаптером и т.д.) мы будем работать. Список потенциальных интерфейсов вы можете найти в следующий ключах реестра:

Реальный руткит должен сам "вычислить" ID интерфейса, с которым он будет работать, но для упрощения задачи мы установим ID интерфейса явно. В моем случае это будет {4d15e975-e375-11ce-bfc1-08102be10348}. В вашем - самое время запустить regedit и посмотреть.

После того, как мы определились с именем протокола и ID рабочего интерфейса, нам нужно определить структуру характеристик протокола. Собственно, это и есть стек протокола. В этой структуре вы задаете функции, которые будут вызываться по происшествию того или иного события. По сути, вам нужно установить реакцию нашего драйвера на те или иные события интерфейса, например, на получение или отправку пакета. Например, когда вы получите пакет, его копия будет полностью передана подпрограмме, заданной членом структуры ReceivePacketHandler (обработчик получения пакета). Вот тут то мы и перехватим пакет. Уловили идею? Если нет, прочитайте еще раз этот абзац, а если - да, то двигаемся дальше.

Когда структура характеристик будет готова, мы можем вызвать функцию NdisRegisterProtocol для регистрации нашего протокола NdisProto. Для отмены регистрации протокола используется функция NdisDeregisterProtocol.

Если протокол зарегистрирован успешно, нам нужно вызвать функцию NdisOpenAdapter. Данная функция подключается к нашему интерфейсу (который мы задали с помощью ID). Здесь нужно уловить важный момент: функция может вернуть статус NDIS_STATUS_PENDING, что означает, что NDIS не может открыть адаптер немедленно, но непременно сделает это, только чуть позже. Как только это случится, NDIS самостоятельно вызовет функцию, заданную членом структуры характеристик OpenAdapterCompleteHandler. В нашем случае это будет функция  NdisOpenAdapterComplete  (см. ниже). Если же NDIS открыла адаптер сразу, мы должны вызвать функцию NdisOpenAdapterComplete самостоятельно. Нужно отметить, что такое поведение библиотеки NDIS характерно и для других функций - если происходит задержка, то NDIS вызывает функцию автоматически - как только произойдет то или иное событие, в противном случае мы должны вызвать ее сами.

Теперь воплотим все вышесказанное в функцию DriverEntry нашего драйвера:

#include "ntddk.h"

// это определение нужно задать до подключения ndis.h

#define NDIS50    1

#include "ndis.h"

struct _my_struct {

      ULONG myData;

      NDIS_STATUS Status;

} my_struct;

// определяем глобальные дескрипторы

NDIS_HANDLE AdapterHandle;

NDIS_HANDLE ProtoHandle;

NDIS_EVENT  WaitEvent;

NTSTATUS DriverEntry(IN PDRIVER_OBJECT Driver, IN PUNICODE_STRING RegPath);

{

NDIS_STATUS nStat, ErrStat;

// среда - только 802.3 (Ethernet)

NDIS_MEDIUM Medium = NdisMedium802_3;

UINT        MediumInd = 0;

UNICODE_STRING AdapName;                 // имя адаптера

NDIS_PROTOCOL_CHARACTERISTICS PC;        // характеристики протокола

NDIS_STRING ProtoName = NDIS_STRING_CONST("NdisProto");    // имя протокола

RtlInitUnicodeString(&AdapName,

L"\\Device\\{4d15e975-e375-11ce-bfc1-08102be10348}");

NdisInitializeEvent(&WaitEvent)'

Driver->DriverUnload = Unload;

//инициализируем характеристики протокола

RtlZeroMemory(&PC, sizeof(NDIS_PROTOCOL_CHARACTERISTICS));

PC.MajorNdisVersion = 5;

PC.MinorNdisVersion = 0;

PC.Reserved   = 0;

PC.Name                        = protoName;

PC.OpenAdapterCompleteHandler  = NdisOpenAdapterComplete;

PC.CloseAdapterCompleteHandler = NdisCloseAdapterComplete;

PC.SendCompleteHandler         = NdisSendComplete;

PC.TransferDataCompleteHandler = NdisTransferDataComplete;

PC.ResetCompleteHandler        = NdisResetComplete;

PC.RequestCompleteHandler      = NdisRequestComplete;

PC.ReceiveHandler              = NdisReceive;

PC.ReceiveCompleteHandler      = NdisReceiveComplete;

PC.StatusHandler               = NdisStatus;

PC.StatusCompleteHandler       = NdisStatusComplete;

PC.BindAdapterHandler          = NdisBindAdapter;

PC.UnBindAdapterHandler        = NdisUnbindAdapter;

PC.UnloadHandler               = NdisProtoUnload;

PC.ReceivePacketHandler        = NdisReceivePacket;

PC.PnPEventHandler             = NdisPnPEvent;

// Регистрируем протокол. Функции нужно передать переменные статуса,

// дескриптора протокола и характеристик протокола, а также разме

// характеристик

NdisRegisterProtocol(&nStat, &ProtoHandle, &PC,

                       sizeof(HDIS_PROTOCOL_CHARACTERISTICS));

if (nStat != NDIS_STATUS_SUCCESS)

{

// ошибочка вышла

DbgPrint("ERROR: NdisRegisterProtocol failed!");

return nStat;

}

/* открываем адаптер

nStatm ErrStat - коды возврата

AdapterHandle  - возвращает дескриптор адаптера

Массив Medium задает список MAC-протоколов, например, сетевая плата (802_3),

беспроводный (радио) адаптер (802_11) и т.д.

Переменная MediumInd задает индекс массива Medium, то есть тип адаптер,

который мы открываем в данный момент

1 - это общее количество элементов в массиве Medium

ProtoHandle - дескриптор протокола, получаемый от NdisRegisterProtocol

my_struct - определенная пользователем, то есть вами структура

AdapName - имя адаптера, который нужно открыть

*/

NdisOpenAdapter(&nStat, &ErrStat, &AdapterHandle, &MediumInd, &Medium, 1,

                ProtoHandle, &my_struct, &AdapName, 0, NULL);

if (nStat = !NDIS_STATUS_PENDING)

{

  // задержки нет, нам нужно вызвать NdisOpenAdapterComplete самостоятельно

  // но сначала проверим, есть ли ошибка

  if (NTSTATUS(nStat) == FALSE)  

   {

     // да, произошла ошибка

     char _s[255];

     _sprintf(_s, 253, "ERROR: 0x%08X", nStat);

     DbgPrint(_s);

     NdisDeregisterProtocol(&nStat, ProtoHandle);

     if (NTSTATUS(nStat) == FALSE)

         DbgPrint("ERROR: NdisDeregisterProtocol failed.");

     return STATUS_UNSUCCESSFUL;

   }

  else

    NdisOpenAdapterComplete(&my_struct, nStat, NDIS_STATUS_SUCCESS);

}

return STATUS_SUCCESS;

}

На главную

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

Сегодня: 19/01

Поздравлять сегодня некого

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

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

Samsung Galaxy J2 Prime (SM-G532F)

дааа

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

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

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

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

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

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

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

флэшмобы

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

авто-дилеры

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

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

Совет:

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

Linux

Ubuntu Linux. Краткое руководство пользователяUbuntu Linux. Краткое руководство пользователя
Книга ориентирована на начинающего пользователя Ubuntu Linux. Книга устарела, вместо нее издана Ubuntu 10. Краткое руководство пользователя (тоже издательство БХВ)                                                                                                                                          

Самоучитель системного администратора LinuxСамоучитель системного администратора Linux
Описаны основы сетевого взаимодействия, планирование и монтаж сети (Ethernet и Wi-Fi), настройка сети и маршрутизации без конфигураторов. Даны примеры настройки различных типов серверов: Web, FTP, DNS, DHCP, почтового сервера, сервера баз данных. Рас                                                   

Серверное применение Linux, 2 изд. Серверное применение Linux, 2 изд.
Для администраторов Linux описана настройка различных типов серверов: Web, FTP, DNS, DHCP, почтового сервера, сервера баз данных. Подробно рас-смотрена установка и тонкая настройка операционной системы. Описана настройка связки Apache + MySQL + PHP.                                                    

PHP

PHP 5/6 и MySQL 6. Разработка Web-приложенийPHP 5/6 и MySQL 6. Разработка Web-приложений
На практических примерах описана разработка Web-приложений на языке PHP версий 5 и 6. Лучшая моя книга по PHP, ищите в продаже 3-е издание! Издательство БХВ- Петербург                                                                                                                                      

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

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

Интернет/CMS

Joomla 1.5. Руководство пользователяJoomla 1.5. Руководство пользователя
Эта книга - простое и эффективное учебное пособие по освоению и использованию системы управления контентом веб-сайта Joomla 1.5.                                                                                                                                                                             

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

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

Компьютер/Windows

Microsoft Windows 8. Первое знакомствоMicrosoft Windows 8. Первое знакомство
Описаны основные нововведения в Windows 8. Рассмотрена установка системы как на физический компьютер, так и на виртуальный (VMware, VirtualBox).                                                                                                                                                            

Секреты, настройка и оптимизация реестра Windows 7Секреты, настройка и оптимизация реестра Windows 7
Рассмотрено устройство, настройка и оптимизация реестра, секреты и трюки при работе с ним, параметры популярных Windows-приложений. Описаны программы для мониторинга...                                                                                                                                     

Microsoft Windows 10. Первое знакомствоMicrosoft Windows 10. Первое знакомство
Описаны основные нововведения в Windows 10, особое внимание уделено использованию системы на планшете. Рассмотрена установка системы как на физический компьютер (стационарный, ноутбук, нетбук, планшет)...                                                                                             

Сети

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

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

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

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

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

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

Автомобили

Что делать, чтобы не надули в автосервисе. Советы и рекомендацииЧто делать, чтобы не надули в автосервисе. Советы и рекомендации
Вы недавно приобрели автомобиль или уже имеете водительский стаж, но при этом особо не вникаете в устройство автомобиля?                                                                                                                                                                                     

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

Что делать, чтобы не надули в автосервисе. Советы и рекомендацииЧто делать, чтобы не надули в автосервисе. Советы и рекомендации
Вы недавно приобрели автомобиль или уже имеете водительский стаж, но при этом особо не вникаете в устройство автомобиля?                                                                                                                                                                                     

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

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

Android

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

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

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

Статьи

Rambler's Top100