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 подписку. Для этого проделываем шаги
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. Для более качественной работы удобно размещать контейнеры в разных регионах, в зависимости от желаемого эффекта. Для разнообразия, можно выбрать для источника атаки локацию из Азии. Ниже список некотороых идентификаторов локаций для азиатских регионов ажура:
Полный список регионов для вашей подписки можно получить с помощью команды:
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 в месяц.
32 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів