Продукты «Хакера»

  • Ежеквартальный «Хакер» #3

    Ежеквартальный «Хакер» #3

    Лучшие статьи квартала на бумаге

    2 000 ₽

    Заказать журнал
  • Годовая подписка на Xakep.ru

    Годовая подписка на Xakep.ru

    Полный доступ к статьям и архиву выпусков

    6 000 ₽ в год

    Подписаться
  • «Пентест WEB» для начинающих

    «Пентест WEB» для начинающих

    Совместный курс «Хакера» и лаборатории «Хаксет»

    7 000 ₽

    Купить курс
  • Спецвыпуск «Хакера» #4

    Спецвыпуск «Хакера» #4

    Лучшие статьи за 2021–2022 годы на бумаге

    2 000 ₽

    Заказать журнал
Се­год­ня я рас­ска­жу и покажу на при­мерах, как соз­давать ботов с помощью чис­того кода и спе­циаль­ных конс­трук­торов вро­де ZennoPoster.

По дан­ным Cloudflare Radar, в 2026 году доля челове­чес­кого тра­фика в интерне­те сос­тавила менее полови­ны — 42,6%. Осталь­ные 57,4% — боты. Это приб­лизитель­ная оцен­ка: однознач­но отде­лить челове­чес­кий тра­фик от сге­нери­рован­ного ботами доволь­но слож­но. Зап­рос, сде­лан­ный челове­ком, может быть неот­личим от зап­роса, сде­лан­ного ботом, даже с уче­том всех воз­можных фин­гер­прин­тов, гло­баль­ных ID и отсле­жива­ния кон­крет­ных поль­зовате­лей через счет­чики.

Бо­тов пишут и в белых целях — нап­ример, для наг­рузоч­ного тес­тирова­ния или про­вер­ки работос­пособ­ности филь­тров. В серых целях исполь­зуют раз­ного рода нак­рутчи­ки ком­мента­риев, лай­ков и репос­тов. Спа­меры исполь­зуют ботов для арбитра­жа, что­бы собирать в соц­сетях условно‑бес­плат­ный тра­фик. Блек­хеты с помощью ботов могут устра­ивать DDoS на сер­висы, авто­мати­зиро­вать ата­ки или рас­простра­нять мал­варь.

В любом слу­чае — занима­ешь­ся ты пен­тестом, обыч­ным QA или раз­работ­кой, тебе нуж­но знать, как пишут­ся и работа­ют боты.

Ав­тор про­тив незакон­ного при­мене­ния любых тех­нологий, поэто­му все, что выходит за рам­ки белого тес­тирова­ния, оста­нет­ся за кад­ром. Тес­товый бот, которо­го мы напишем, будет работать без прок­си, про­бива кап­чи и про­чих при­емов для обхо­да защиты и скры­тия реаль­ного источни­ка тра­фика.

warning

Статья име­ет озна­коми­тель­ный харак­тер и пред­назна­чена для спе­циалис­тов по безопас­ности, про­водя­щих тес­тирова­ние в рам­ках кон­трак­та. Автор и редак­ция не несут ответс­твен­ности за любой вред, при­чинен­ный с при­мене­нием изло­жен­ной информа­ции. Рас­простра­нение вре­донос­ных прог­рамм, наруше­ние работы сис­тем и наруше­ние тай­ны перепис­ки прес­леду­ются по закону.

 

Тестовый стенд

Для прак­тики отлично подой­дет OWASP Juice Shop. В лабе нет спе­циаль­ных филь­тров или чего‑то подоб­ного, зато мож­но регис­три­ровать акка­унты и писать фид­бэки. Это­го впол­не дос­таточ­но для безопас­ной демонс­тра­ции.

Для работы Juice Shop нужен Node.js. Если Node.js не уста­нов­лен, ска­чива­ем ак­туаль­ную вер­сию.

Вы­пол­няем такие коман­ды:

git clone https://github.com/juice-shop/juice-shop.git --depth 1
cd juice-shop
npm install
npm start

В фай­ле hosts про­пиши локаль­ный домен juice.local. Это нуж­но для кор­рек­тной работы в Burp Suite. Стро­ка для hosts:

127.0.0.1 juice.local

От­кры­ваем лабу в бра­узе­ре: http://juice.local:3000.

 

Бот на запросах

Са­мый быс­трый и мощ­ный вари­ант — пов­торить зап­росы, которые веб‑при­ложе­ние отправ­ляет сер­веру. Одна­ко это работа­ет не всег­да: на сай­те может быть огромное количес­тво филь­тров и механиз­мов защиты от пря­мого копиро­вания зап­росов. Но неболь­шие ресур­сы ред­ко нас­толь­ко замора­чива­ются: защита и филь­тра­ция сто­ят серь­езных денег.

Нап­равля­ем тра­фик бра­узе­ра через Burp и перехо­дим в при­ложе­ние Juice Shop. Регис­три­руем нового поль­зовате­ля, затем оставля­ем отзы­вы о нес­коль­ких товарах. Это нуж­но, что­бы в Burp был пол­ный набор зап­росов. Да, в Juice Shop есть уяз­вимость, поз­воля­ющая оста­вить отзыв без регис­тра­ции от име­ни любого поль­зовате­ля сис­темы. Но в этом слу­чае я хочу показать пол­ный про­цесс работы.

Публикация отзыва запросом без регистрации
Пуб­ликация отзы­ва зап­росом без регис­тра­ции

Пол­ный спи­сок зап­росов:

  • POST /api/Users/ — соз­даем поль­зовате­ля;
  • POST /api/SecurityAnswers/ — зада­ем ответ на сек­ретный воп­рос;
  • POST /rest/user/login — логиним­ся на сай­те;
  • PUT /rest/products/1/reviews — оставля­ем отзыв.

Соз­даем файл main.py, добав­ляем импорты и кон­стан­ты:

import requests
import random
import string
# URL таргета
BASE = "http://juice.local:3000"
# Файл с заготовленными отзывами
REVIEWS_FILE = "reviews.txt"

Луч­ше, что­бы мыло и пароль генери­рова­лись слу­чай­но:

email = f"user{random.randint(10000,99999)}@test.com"
password = "".join(random.choices(string.ascii_letters + string.digits, k=12))
answer = "Bums"

Фишка Gmail

Ес­ли ты пишешь свой ресурс, для защиты от ботоферм тебе сто­ит знать нюан­сы работы поч­товиков. Нап­ример, любимый мно­гими Gmail не учи­тыва­ет точ­ки в логинах. Для поч­товика адре­са ivanivanovich, ivan.ivanovich и ivan..ivanovich рав­нознач­ны. Точек может быть огромное количес­тво. Если на тво­ем сай­те дос­тупна регис­тра­ция через Gmail, при про­вер­ке на дуб­ликаты поч­ты отбра­сыва­ем точ­ки. Ина­че спа­меры, не стес­няясь, забь­ют твою базу одним и тем же адре­сом.

Что­бы отзы­вы были более‑менее раз­нооб­разны­ми, положим их в отдель­ный файл и будем вытас­кивать из него слу­чай­ную стро­ку:

with open(REVIEWS_FILE, encoding="utf-8") as f:
lines = [line.strip() for line in f if line.strip()]
message = random.choice(lines)

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    1 Комментарий
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии