Читаем Я – хакер! Хроника потерянного поколения полностью

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

• Веб-интерфейс управления ботнетом.





Архитектуру ботнета в виде модульной структуры я взял из «Адаманта», а они, в свою очередь, с Half-Life 2. Мне очень понравилась идея экспортировать из модуля в виде библиотеки всего две функции: Create Module и Delete Module. Первая возвращает интерфейс IModule, который и реализует функциональность. В сам же модуль передаются интерфейсы IKernel — функций ядра, ISocks — сетевого интерфейса и т. д. Все красиво и прозрачно.

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

Это была очень интересная и творческая работа, я полностью погрузился в процесс. А моему брату это было очень удобно, он делал только веб-интерфейс на PHP и модифицировал систему макросов от NorthWind для работы в ботнете, при этом у него оставалось еще уйма свободного времени. Он взял на себя роль СТАРШЕГО, восполнив на тот момент мою потребность в родителе и наставнике. Потребность в родителе, который мог сказать те самые слова «отличная работа, молодец», в родителе, который мог бы посоветовать, как поступить в сложной ситуации.

Позже ботнет получит название Festi. ФСБшники при аресте моего брата ошибочно решат, что это он написал ботнет, а его ник на Spamdot был Engel. С их же подачки это подхватит и Брайан Кребс.

Бот

Программирование драйверов сильно отличается от разработки прикладных программ. Если вы знакомы с кольцами привилегий процессора, то знаете, что ядро Windows и драйверы работают на нулевом. А процессоры архитектуры x86 реализуют четыре кольца привилегий для процессов, нулевое использует ядро операционной системы — у него есть полный доступ ко всему оборудованию. Прикладные процессы же работают в четвертом кольце, любое прямое обращение к оборудованию или вызов каких-либо привилегированных инструкций вызывает исключение, которое обрабатывается ядром ОС. Более того, любое падение прикладного процесса (например, обращение по несуществующему адресу, деление на ноль) никак не влияет на работу операционной системы и остальных прикладных процессов. В то время как ошибка в коде драйвера часто приводит к BSOD (Blue Screen Of Death — синий экран смерти). Требования к разработке драйверов и квалификации программиста возрастают на порядки. Если бы, например, руткит писал Botmaster (создатель XRumer, который постоянно падает), — капец машинам пользователей.





Далее хороший бот должен иметь минимальный размер. Большую часть кода в таких небольших программках несет The C runtime Library (CRT), которая линкуется к любому стандартному проекту по умолчанию. И прибавляет к небольшому файлу весом 30 Кб еще пару мегабайт. В CRT идут все стандартные функции С-шных библиотек, обкрутка входной точки в исполняемый файл и т. п. Единственное решение — отключать ее.

Отключив CRT, я сразу лишился стандартных функций malloc/free — выделение/освобождение памяти, без которых программировать крайне сложно. Также не были доступны функции работы со строками, которые требовались модулю спама.

В ядре операционной системы память делится на два типа: выгружаемые страницы и невыгружаемые. Выгружаемые страницы, как следует из их названия, могут выгрузиться ядром ОС на диск, в файл подкачки. Невыгружаемые всегда остаются в памяти. Если процессор обращается по адресу страницы, отсутствующему в данный момент в памяти, генерируется прерывание (Interrupt Request — IRQ[30]). Прерывание перехватывает ядро ОС и подгружает нужную страничку в память. Все внешние устройства уведомляют ОС через прерывания. Хитрость заключается в том, что у каждого прерывания есть приоритет, и прерывание с более высоким приоритетом вытесняет прерывание с более низким. Теперь представьте, что случится, если сработает прерывание с приоритетом выше прерывания на подгрузку странички памяти, а обработчик этого прерывания находится на выгруженной страничке в файле подкачки. Всё, операционной системе — хана. Такие детали постоянно нужно держать в голове.

Перейти на страницу:

Похожие книги

Сатиры в прозе
Сатиры в прозе

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

Михаил Евграфович Салтыков-Щедрин

Документальная литература / Проза / Русская классическая проза / Прочая документальная литература / Документальное