TL;DR Атакующий подменяет source ip на адрес вашего сервера и триггерит автоматические абузы. В результате клиента банят на хостинге за вредоносную активность, которой не было.

Комментарий от vdsina.ru:
Эта статья написана нашим клиентом, который перешёл к нам от крупного хостера после DDoS-атаки и любезно согласился поделиться этой историей.

Расскажу про удивительно коварный способ DDoS-атак, с которым я раньше не сталкивался. Коварство заключается в том, что на сам сервер жертвы не выполняется никакой атаки. Вместо этого, злоумышленник провоцирует срабатывание сторонних систем обнаружения атак, заставляя генерировать совершенно настоящие жалобы (в простонародье «абузы») на ваш сервер.

Со стороны хостера это выглядит так, будто вы занимаетесь вредоносной активностью, хотя на самом деле это неправда. Оказалось, что многие крупные хостинг-провайдеры не готовы глубоко разбираться в причинах проблемы и предпочтут вас просто забанить за нарушение правил.

В статье подробно разбирается этот вид атаки в реальном кейсе.

Хронология событий


Я держал несколько личных проектов на VPS-серверах у одного известного хостера. Однажды мне пришло от него такое письмо:

#9042382: ToS Violation — Malicious Activity
Hello,

We have received a report of malicious activity originating from your server XXXX. We ask that you investigate this matter as soon as you are able. Once you have completed your investigation, kindly reply to this ticket with the answers to the following questions:

Reported-From: abuse-out@checkdomain.de
Category: info
Report-Type: info
Service: different services
Version: 0.1
User-Agent: Checkdomain Express 0.19
Date: Fri, 26 May 2018 19:25:19 +0200
Source-Type: ipv4
Source: my-server-ip-xx-xxx
Port: dif.
Report-ID: dih3cefnp@checkdomain.de
Schema-URL: http://www.blocklist.de/downloads/schema/info_0.1.1.json
Attachment: text/plain

DETAILS ZU DEN ATTACKEN/STORUNGEN | DETAILS OF THE ATTACKS
(letzten 60 Tage / max. 100 St.) | (last 60 days / max. 100 hits)
 portflood: syn | | standby.checkdomain.de |
VORHERIGE SPERREN DER IP-NUMMER | BANNED HISTORY OF THIS IP-NUMBER
my-server-ip-xxx-xxx-xxx: this ip-number was never banned before

AUZUG AUS SERVERLOGDATEI | EXCERPT FROM SERVER LOGFILE
tcp 0 0 85.10.207.190:80 my-server-ip-xx-xxx:41667 SYNRECV - 
tcp 0 0 85.10.207.190:80 my-server-ip-xx-xxx:46208 SYNRECV -
tcp 0 0 85.10.207.190:80 my-server-ip-xx-xxx:13000 SYNRECV -
tcp 0 0 85.10.207.190:80 my-server-ip-xx-xxx:39104 SYNRECV -
tcp 0 0 85.10.207.190:80 my-server-ip-xx-xxx:55348 SYNRECV -
tcp 0 0 85.10.207.190:80 my-server-ip-xx-xxx:37266 SYNRECV -
tcp 0 0 85.10.207.190:80 my-server-ip-xx-xxx:60684 SYNRECV -
tcp 0 0 85.10.207.190:80 my-server-ip-xx-xxx:63878 SYNRECV -
tcp 0 0 85.10.207.190:80 my-server-ip-xx-xxx:50445 SYNRECV -
tcp 0 0 85.10.207.190:80 my-server-ip-xx-xxx:56215 SYNRECV -


Где my-server-ip-xx-xxx это IP-адрес сервера.

В нем хостер пересылает мне жалобу, поступившую на его ящик abuse@, и настойчиво просит прекратить вредоносную активность, иначе я буду заблокирован. В приложенном логе виден список TCP-подключений к 80 (HTTP) порту в состоянии SYN RECEIVED. То есть с моего сервера идёт SYN-флуд на чей-то веб-сервер.

Первая мысль — меня взломали и с моего сервера идёт SYN-флуд. В Linux есть ограничения на управление сокетами с правами обычного пользователя и посылать только SYN-пакеты (без установки полноценного TCP-соединения) можно только имея привилегии root. А это значит, что взломали полностью.

В панике бегу на сервер искать вредоносный процесс. Проверяю top, ss, lsof и ничего подозрительного не вижу. Первичный вывод: "ужас, наверное залили настолько крутой руткит, который прячет вирус на уровне ядра от всех системных утилит!". В процессе исследований выясняется, что нагрузка на сервер никак не изменилась, по графикам в панели хостера трафик на интерфейсе остается прежним.

До этого я запускал tcpdump c фильтрами, показывающими исходящий трафик и ничего подозрительного не видел. Отчаявшись, решаю посмотреть весь трафик на сервер. В потоке легитимного трафика нахожу редкие RST-пакеты от странных серверов.

Выглядит это примерно так, где my-server-ip-xx-xxx адрес моего сервера:

IP 85.10.207.190.http > my-server-ip-xx-xxx.8389: Flags [R]
IP 85.10.207.190.http > my-server-ip-xx-xxx.8389: Flags [R]
IP 85.10.207.190.http > my-server-ip-xx-xxx.8389: Flags [R]
IP adsl-070-154.sip.pns.bellsouth.net.http > my-server-ip-xx-xxx.8389: Flags [R]
IP adsl-070-154.sip.pns.bellsouth.net.http > my-server-ip-xx-xxx.8389: Flags [R]
IP adsl-070-154.sip.pns.bellsouth.net.http > my-server-ip-xx-xxx.8389: Flags [R]

Было очевидно, что это аномалия, так как больше никакого обмена с этими серверами не было и почему они шлют пакет закрытия соединения, мне было неясно.
На этом моменте опытные админы сразу бы всё поняли, но мы разберём всё на пальцах

Как это работает


Входящие RST-пакеты это ответы на попытки установить TCP-соединение на закрытый порт. При этом от моего сервера никакого исходящего трафика в сторону серверов, посылающих RST, нет. Это значит, что атакующий подменяет исходящий адрес на мой и генерирует трафик, похожий на DDoS-атаку. Но так как единственное, что может атакующий, это послать исходящий пакет, все ответы от серверов приходят на мой сервер.


До сервера жертвы доходят только ответы на поддельные запросы
Обычно такие атаки используются для DNS-амплификации, когда атакующий посылает маленький запрос от имени жертвы, а жертве приходит большой ответ, которого он не запрашивал. Это классический механизм атак на исчерпание канала.
В моем случае атакующий не ставил целью исчерпать канал сервера-жертвы. Его активность была совершенно незаметна на графиках потребления канала. Главной его целью было спровоцировать системы автоматического уведомления о сетевых атаках, которые пошлют письмо с жалобой на abuse-адрес, указанный в whois подсети моего провайдера. Это умеют делать системы обнаружения и предотвращения вторжений (Intrusive Prevent/Detect System), такие как Snort и Suricata.

В результате хостер получает абсолютно настоящее письмо от легитимных компаний, в котором содержится жалоба на мою вредоносную активность и даже логи в них настоящие. При этом атакующему не нужен большой канал, так как он заранее знает адреса серверов, на которых установлены IDS/IPS-системы и минимально необходимое число пакетов, чтобы сработала автоматическая жалоба.

Единственной трудностью для атакующего является поиск сервера, разрешающего подмену исходящих IP-адресов в пакетах. Все нормальные хостеры блокируют такие пакеты. Существует только два типа хостинга, позволяющего клиентам подменять исходящий IP: либо очень безграмотно настроенный, либо специально созданный для кибер-криминала.

Проверяем возможность подмены IP-адреса


Советую вам проверить своего хостера на возможность подмены исходящего IP. Для этого потребуется два сервера, один для приёма трафика, другой для отправки.

На стороне принимающего сервера запустим логирование входящего трафика. В качестве фильтра укажем редкий порт, на котором в обычное время не должно быть трафика:

tcpdump -i any port 9912

На проверяемом сервере сгенерируем пакет с подменой исходящего IP-адреса на 1.1.1.1, направленный на порт 9912. Для этого используем крутую утилиту nping от разработчиков nmap. Она позволяет генерировать любые нестандартные пакеты на уровне L2 и L3.

nping --tcp -p 9912 -S 1.1.1.1 receiver-server.com

receiver-server.com — адрес слушающего сервера, на котором запущен tcpdump
1.1.1.1 — подменяемый исходящий адрес
9912 — удалённый порт

Если на стороне receiver-server.com вы увидите пакет, пришедший от имени 1.1.1.1, значит ваш провайдер позволяет подменять исходящий IP-адрес. Это повод сообщить ему о проблемах в настройке сетевого оборудования. Зачастую такой проблемой страдают домашние интернет-провайдеры.

Глупая техподдержка



Разобравшись в причинах жалоб, я подробно все изложил хостеру:
Hello,
I finally understand what happened.

They spoof my IP address and DDoS random hosts using my address as source address. So victims generate automatic abuse reports to my hosting providers.

You can see on abuse log that connections are only in SYN_RECV state (no full TCP-connection established) because they can send only one packet using spoofed IP and can't finish TCP-handshake.
I can prove this. There are many TCP RST incoming packets coming right now to my server from hosts whom I never sent any packets.

You can check it right now by running:

tcpdump -i eth0 «tcp[tcpflags] & (tcp-rst) != 0»

You will see that many RST packets came from hosts to which I've never sent any data.
This proves that attacker is spoofing my IP-address to compromise me and generate abuses.

Тогда мне казалось, что любой квалифицированный инженер техподдержки разберётся в ситуации и вопрос будет закрыт. Но вместо этого они требовали от меня проверить сервер антивирусом или полностью переустановить ОС. Пока мы переписывались с техподдержкой, абузы продолжали поступать и через сутки меня забанили.

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



Подписывайтесь на нашего разработчика в Instagram


Комментарии (15)


  1. zhovner
    23.12.2019 14:57
    +1

    Я сталкивался с похожей подлостью: ребята запускали проект и еще до анонса о нем прознали конкуренты и запустили спам-рассылку с упоминанием домена и подставлением его во from. В результате еще до старта проекта все почтовики помечали его как спам. Название пришлось поменять.


    1. pae174
      23.12.2019 18:23

      Надо было сразу после регистрации домена настраивать в DNS записи SPF, DKIM и DMARC.
      Конкуренты, скорее всего, и ни при чём вообще — просто чей-то спам-бот нашёл подходящий с его точки зрения домен и взял его в оборот.


      1. zhovner
        23.12.2019 21:32

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


  1. bykvaadm
    23.12.2019 15:54

    вы мало знакомы с инфобезом, если в 2019 году для вас эта атака — новость, о которой надо писать на хабр. Да и нет необходимости в "оооооочень криво настроенных серверах", достаточно snat прописать и всё


    1. mayorovp
      23.12.2019 16:00

      Видимо, автором имелись в виду криво настроенные маршрутизаторы


    1. Ahcai5oh Автор
      23.12.2019 16:56
      +4

      Я не претендую на эксклюзив, но на русском языке мне не удалось найти описаний этой атаки. К тому же, если атака популярна и известна, почему с её помощью удается обмануть хостеров вроде Digital Ocean?


      1. ky0
        23.12.2019 19:17

        Потому что это проблема не хостеров, в общем-то, а интернет-провайдеров с криво настроенным сетевым железом. Следить за легитимностью сорс-адреса пакетов, пришедших откуда-то из интернета — не задача DE или кого-то ещё.


        1. Ahcai5oh Автор
          23.12.2019 21:39
          +1

          Проблема, которая поднимается в статье, в том что хостера по сути вводят в заблуждение. Никакие поддельные пакеты до самого целевого сервера не долетают. Речь только о письмах.


          Я не обсуждаю кто виноват в возможности спуфинга IP, а только возмущаюсь что из-за поддельных жалоб вас могут забанить, и что эти поддельные жалобы так легко спровоцировать.


          1. ky0
            23.12.2019 22:31

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


        1. softwind
          24.12.2019 10:36

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


      1. Night_Snake
        24.12.2019 10:28
        -1

        Ну после нашумевшего летом крупного DDoS на servers.com об этой истории даже в рунете можно найти информацию.
        А самой атаке tcp amplification уже года три или четыре точно.


      1. KodyWiremane
        24.12.2019 21:54

        А хостеры вроде DO не могут недельку трафик пологировать у пациента? Абузы пришли, признаков атаки с сервера пациента не обнаружено, оправдан по всем пунктам. Или им лениво?


  1. mikhailian
    23.12.2019 18:35

    В таких случаях надо прямо Мартину писать или звонить. Через бухгалтерию. Раньше помогало.


  1. andreysl
    23.12.2019 21:43

    А что, у провайдера атакующего не знают про RFC 2827?

    rfc2.ru/2827.rfc


    1. zhovner
      23.12.2019 23:45

      Много кто не знает, или сознательно разрешает спуфинг. Иначе откуда такое количество атак типа DNS-амплификации?