Библиотека сайта rus-linux.net
iLinuxBot: Проектируем ботнеты для управления Linux-клиентами
Оригинал: iLinuxBot: Designing Botnets to Manage Linux ClientsАвтор: Nishant Sharma
Дата публикации: 1 Мая 2012 г.
Перевод: А.Панин
Дата перевода: 12 октября 2012 г.
Эта статья написана для того, чтобы воодушевить новичков в программировании использовать немного творческих способностей для решения реальных задач. В ней показано, как можно управлять с одного компьютера множеством ПК под управлением Linux.
Я предполагаю, что вы хорошо знакомы с клиент-серверным программированием на языке C в соответствии со стандартами Berkley UNIX. В том случае, если этот материал вам не знаком, обратитесь к серии статей о прикладном интерфейсе программирования socket API.
Я взял идею своей системы управления из ботнетов (да, вы не ошиблись, это технология, которую используют взломщики для проведения атак отказа в обслуживании в отношении интернет-сайтов). Ботнет представляет собой ни что иное, как группу зараженных вредоносным ПО компьютеров, контролируемых взломщиками и канал контроля для выполнения таких задач, как DDoS-атаки или вставка рекламы для получения прибыли. Для того, чтобы узнать больше о DDoS-атаках, обратитесь к различным материалам на эту тему, опубликованным ранее.
- Компилятор GNU C
- Любой текстовый редактор
- Любой дистрибутив Linux
Код
Теперь давайте приступим к разработке программ, использующих протокол TCP, ориентированный на установление постоянного соединения (server.c и client.c).
system (команда_и _аргументы);
. /client -p port_no ip_of_server
Развертывание системы
Сначала запустим сервер, который будет слушать порт 7400 (это значение можно изменить в коде сервера). Теперь, когда все остальные системы загрузятся, клиенты будут запущены с правами пользователя root (поскольку мы добавили сценарий оболочки start.sh в автоматически запускаемые при запуске системы). Поскольку мы демонстрируем систему, запустим бот в терминале, в реальной системе он будет работать в фоновом режиме.
Как только клиент запускается, он подключается к серверу и ожидает команд для выполнения. На рисунке 1 показан процесс запуска сервера и выполнения команд (здесь видно, что я назвал программу iLinuxBot).
Рисунок 1: Процесс работы сервера
На рисунке 2 показан процесс приема и исполнения команд клиентом.
Рисунок 2: Процесс работы клиента
Возможности программы
Эта программа позволяет снизить затраты времени и труда на установку программ, изменение настроек путем изменения конфигурационных файлов или перезагрузки множества систем одновременно. В этой версии не предусмотрено возможности работы с отдельным компьютером, но этот недостаток может быть преодолен путем установки и запуска службы SSH на всех компьютерах.
Все команды, которые не требуют вмешательства пользователя, вроде yum или reboot, могут быть успешно выполнены при помощи этой программы. В следующей статье мы расширим возможности программы для поддержки большего количества команд и разработаем графический интерфейс.
Поскольку это моя первая статья, мне хотелось бы также услышать ваше мнение о ней. Оставляйте комментарии с вашими вопросами и предложениями. (Хотелось бы выразить признательность Ankit Sharma за его участие в процессе написания этой статьи.)
Мыслите открыто и нестандартно - так, как это должен делать техно-фрик. Долгих лет жизни СПО!