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

Поиск:

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

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

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

Да, в мире Windows, особенно, на просторах бывшего СНГ "патч" ассоциируется только с крекером и пиратством. А вообще, патчи используются для исправления ошибок в программном обеспечении, их еще называют "заплатками". Та же Microsoft регулярно выпускает "заплатки" для своих программных продуктов. В мире Unix/Linux с помощью патчей вносятся изменения в код ядра и других больших проектов.

Для разработчика руткита патчинг - это одна из наиболее продвинутых технологий, вооружившись которой вы сможете создавать неопределяемые даже самыми новыми IPS-системами руткиты.

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

Второй способ - непосредственное изменение битов и байтов откомпилированного файла. Этот способ часто используется крекерами для снятия программной защиты - хоть один раз в жизни, но вы использовали такие патчи.

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

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

14.1. Идем "в обход"

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

Представьте, что мы изменяем логику программы старым-добрым способом, то есть изменяем таблицу системных вызовов. Бесспорно, это работает. Но изменение системной таблицы в два счета будет обнаружено антивирусом или антируткитом. Что же делать? Можно не изменять системные таблицы, не устанавливать ловушки (как уже было отмечено, это все очень легко фиксируется). Можно заменить в нужной нам функции пару байтов - "пропатчить их". Вместо оригинальных байтов нужно записать… переход на функцию руткита. Схема "обхода" (или объезда - кто на чем передвигается) изображена на рисунке 14.1.

Рис. 14.1. Схема "обхода"

Руткит вместо оператора N вставляет безусловный переход на свой код, который выполняет нужные руткиту действия, а затем возвращает управление исходной функции, вот только управление передается не оператору N + 1, а оператору, возвращающему результат. Несложно догадаться, что в процессе выполнения код руткита модифицировал этот самый результат.

Примечание. Говоря научным языком, метод "обхода" называется методом изменения управляющего потока (control flow rerouting) функции. Во как звучит! А мы все "обход" да "обход"

В этой главе мы не будем изобретать велосипед, а рассмотрим уже готовый драйвер, предназначенный для изменения управляющего потока функций - MigBot. Migbot можно загрузить по адресу http://www.rootkit.com/vault/hoglund/migbot.zip. Кстати, на этом сайте можно найти много чего интересного. Но самое интересное, что он принадлежит Грегу Ноглунду - известному гуру в создании руткитов.

Migbot изменяет управляющий поток для функций NtDeviceIoControlFile и SeAccessCheck. Что с этого выйдет - внимательно читайте и узнаете.

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

Когда у нас будет адрес функции, нам нужно определить, куда именно нужно поместить наш jmp. В предыдущей главе мы помещали его в начало функции, но тогда задача была другая. Сейчас же нам нужно, чтобы функция сама выполнила некоторые действия, а потом только перешла на код руткита. Для этого нам нужно "разобрать" функцию по косточкам, чтобы "понять", что она делает. Исходя из этого, нужно определить наилучшее место для записи "трамплина" (jmp на нашу функцию), но при этом нужно учитывать, что "трамплин" занимает 7 байтов. Ясно, что некоторые инструкции исходной функции, возможно, нужно будет сохранить. Без этого никак. А всему виной набор инструкций Intel x86. Вся беда в том, что у разных инструкций - разная длина. Push может занимать 1 байт, а JMP - 7 байтов. Вот и попробуй "втиснуть" JMP.

Вряд ли вам удастся найти одну, две или три инструкции, чтобы их общая длина была равна 7 байтам. Чаще всего у вас останется один-два лишних байта (см. таблицу 14.1)

Таблица 14.1. Поиск инструкций для замещения

1

2

3

4

5

6

7

8

9

OP1

OP2

OP3

OP4

OP5

FAR JMP Rootkit_Code

Рассмотрим ситуацию, описанную в таблице 14.1. В памяти последовательно расположены инструкции OP1-OP5. Длина первой инструкции - 1 байт, второй - 3 байта, третьей - 1 байт, а четвертая и пятая занимают в памяти 3 и 1 байта соответственно. Нам нужно записать инструкцию дальнего перехода, которая занимает 7 байтов. Записав 7 байтов, мы затираем инструкции OP1-OP4. Результат этого представлен в таблице 14.2.

Таблица 14.2. Пустой байт

1

2

3

4

5

6

7

8

9

FAR JMP Rootkit_Code

OP5

Обратите внимание: инструкции OP1-OP4 все вместе занимали 8 байтов, а наша инструкция - только 7 байтов. Поэтому между нашей инструкцией и инструкцией OP5 образовался небольшой "пробел". Его нельзя оставлять, как есть, иначе последствия могут быть непоправимыми - вплоть до "голубого экрана". Вам нужно понимать, что это не просто память, где хранятся обычные переменные - это сегмент кода, здесь находятся инструкции процессора. Если вы ничем не заполните этот пробел, в нем будет произвольная информация (остаток от инструкции OP4). Процессор попытается выполнить ее. Что получим в результате - сложно сказать. Чтобы не случилось то самое непоправимое, о котором мы только что говорили, вы должны на место пробела записать инструкцию NOP (0x90) - это пустая инструкция, заставляющая процессор ничего не делать. Если у вас получилось 2 или даже 3 "лишних" байтов - запишите вместо каждого из них инструкцию NOP. После замещения память должна "выглядеть" так:

Таблица 14.3. Правильное замещение инструкции

1

2

3

4

5

6

7

8

9

FAR JMP Rootkit_Code

NOP

OP5

На главную

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

Сегодня: 19/01

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

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

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

Samsung Galaxy J2 Prime (SM-G532F)

дааа

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

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

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

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

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

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

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

флэшмобы

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

авто-дилеры

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

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

Совет:

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

Linux

Ubuntu 10. Краткое руководство пользователяUbuntu 10. Краткое руководство пользователя
Книга ориентирована на домашнего и офисного начинающего Linux-пользователя и поможет ему самостоятельно настроить операционную систему Ubuntu Linux.                                                                                                                                                        

Ubuntu Linux 7.04. Руководство пользователя (+DVD)Ubuntu Linux 7.04. Руководство пользователя (+DVD)
Издание ориентировано на начинающего пользователя операционной системы Linux и поможет читателю освоить Ubuntu Linux самостоятельно. Рассматривается Ubuntu 7.04 Feisty Fawn                                                                                                                                 

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

PHP

Самоучитель PHP 4/5Самоучитель PHP 4/5
Моя первая книга по PHP, на базе которой была написана книга Самоучитель PHP5 (НиТ). Давно распродана и не поддерживается                                                                                                                                                                                    

Профессиональное программирование на PHPПрофессиональное программирование на PHP
Книга рассчитана на программистов, уже освоивших азы программирования на PHP. Приводятся сведения об отладке, анализе и оптимизации кода                                                                                                                                                                     

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

Интернет/CMS

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

Блоги: создание, раскрутка, заработокБлоги: создание, раскрутка, заработок
Эта книга — практическое руководство по созданию и продвижению блога, его раскрутке и популяризации, а также превращению в инструмент, приносящий реальные доходы.                                                                                                                                           

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

Компьютер/Windows

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

Работа на ноутбуке с Windows 7Работа на ноутбуке с Windows 7
Эта книга поможет читателю правильно выбрать ноутбук (или нетбук) и подскажет, как его следует использовать, чтобы добиться максимальной надежности и эффективности работы. В ней описывается новая версия операционной системы от Microsoft - Windows 7.                                                    

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

Сети

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

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

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

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

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

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

Автомобили

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

150 ситуаций на дороге, которые должен уметь решать каждый водила150 ситуаций на дороге, которые должен уметь решать каждый водила
Опытный инструктор кратко и четко расскажет, что следует делать водителю в 150 самых различных ситуациях на дороге, которые могут опустошить ваш кошелек, испортить нервы или здоровье                                                                                                                       

Что делать, чтобы не надули в автосервисе. Советует и рекомендует президент клуба BMWЧто делать, чтобы не надули в автосервисе. Советует и рекомендует президент клуба BMW
В этой книге речь пойдет о том, как правильно выбрать СТО; о преимуществах и недостатках гарантии; о том, как не дать в автосалоне навязать себе дополнительную комплектацию                                                                                                                                

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

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

Android

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

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

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

Статьи

Rambler's Top100