Skip to main content

Сброс BGP-сессии при помощи TCP Connection Reset Remote Exploit

Уже ни раз рассказывал о протоколе ТСР, так что повторятся особо не буду, напомню лишь основные положения: Transmission Control Protocol описывается в RFC 793 и преимуществом его является надежность передачи данных от одной машины к другому устройству по сети интернет. Это означает, что ТСР гарантирует надежность передачи данных и автоматически определит пропущенные или поврежденные пакеты. Что для нас важно из его конструкции?

В общем виде заголовок ТСР пакета выглядит так:

заголовок пакета TCP

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

Sequence numbers

Данные разбиваются на сегменты, которые отдельными пакетами направляются по сети получателю. Возможна ситуация, когда пакеты прибудут в точку назначения не по порядку. Это поле - 32-битный номер, определяющий номер сегмента в последовательности, он с каждым пакетом увеличивается и позволяет собрать данные в правильном порядке. В общем смысле значение определяет принадлежит ли пакет активной сессии или нет.

Window

TCP так же предоставляет хостам механизм сказать друг другу сколько данных они хотят получить. Это и есть поле Window - 16 битное число в ТСР заголовке. Будучи однажды заданным, оно говорит хосту, что приниматься будет строго ограниченный объем данных, а остальные пакеты будут отброшены. Если очередь приема будет переполнена, то хост может выставить значение окна приема в 0 и таким образом сказать партнеру по обмену трафиком, что типа мол хорош.

Контрольные биты - SYN, ACK, PSH, URG, RST и FIN, про них уже не раз говорили, так что повторяться не буду.

Атака TCP RESET

Главная идея - сфальсифицировать пакет и прекратить или скомпрометировать установленное ТСР соединение. Давай представим, что существует соединение от хоста А к хосту В. Третий хост С подделывает пакет в котором указывает исходный порт и IP адрес хоста А, порт назначения и адрес хоста В, и текущий sequence number активного ТСР соединения между А и В. Хост С устанавливает RTS бит на пакете, так что когда В получит пакет, он немедленно прекратит соединение. Это приведет к отказу от обслуживания до тех пор, пока соединение не будет восстановлено. На уровне приложения конечно трудно сказать что будет, это скорее зависит от самой программы.

В такой ситуации конечно наиболее уязвимы приложения и протоколы поддерживающие продолжительные соединения. Например BGP (Border Gateway Protocol) от Cisco (см. RFC 1771), так как он основывается на постоянной ТСР сессии между компьютерами. Сбой в работе протокола может привести к “колебанию маршрута” (route flapping), довольно неприятному событию для маршрутизатора.

Уязвимость

Paul Watson, обнаруживший уязвимость, объясняет, что на самом деле такую атаку не так трудно организовать как казалось ранее. По предыдущим подсчетам выяснили, что брутфорс атака на sequence number потребует перебора всех чисел от 1 до 4.294.967.295. Однако это вовсе не так. Например, если ТСР стек на хосте А ограничен window в 16К, стек должен получать все пакеты в пределах этого "окна" и атакующему не обязательно посылать пакеты с установленным RTS во всей последовательности SN, а ограничится только каждым возможным окном, так как ТСР примет любой Sequence number в пределах некоторого диапазона, заданного величиной окна. Таким образом нападающему надо перебрать 4.294.967.295 / 16.384 = 262.143 что бы попасть во все доступные окна.

Вероятно и 262 тысячи может показаться большим числом, однако это не так. Во-первых, при хорошем коннекте атакующий способен генерить десятки тысяч пакетов в секунду. Во-вторых, атаку можно распределить по нескольким хостам. Например на стандартной DSL линии можно производить 250 пакетов в секунду, что исчерпает все варианты за 17 минут, при подключении на скорости 2 МБит/С это уже 4.730 пакетов и всего лишь 60 секунд.

В примере рассмотрен пример окна в 16К, однако по RFC это поле 16 битное, что дает до 64К. Еесли используется полный его размер, то атакующему достается всего 65.537 пакетов, 4 и 15 секунд соответственно. Причем имейте ввиду, что это максимальное время, в среднем оно будет наполовину меньшим (на практике это 3 минуты и 8 секунд). Что касается описанных в уязвимости 4 пакетов, то она возникает только при использовании window scaling, ТСР расширении (см. RFC 1323) где размер "окна" увеличен с 16 до 30 бит (реализовано, например, и в описанном выше BGP). В случае максимального размера атакующему действительно придется послать только 4 пакета что бы реализовать TCP Reset.

Source Port

Все приведенные выше примеры опираются на то, что атакующий знает порт назначения и IP адрес, порт исходный и исходный адрес. Первые два параметра доступны и известны, IP адрес получателя так же не составляет труда узнать - это адрес клиента которого спуфим. Единственный вопрос - исходный порт. Например если ОС случайным образом выдает порт из пула от 1025 до 49.152 (так как например делает OpenBSD), это увеличит количество попыток ровно в 48.127 раз, так как надо будет попробовать подловить номер SN с каждым номером порта. Хорошая новость в том, что большинство ОС, включая Linux и Windows, не используют такой механизм, что сводит на нет вероятность такой защиты.

reset-tcp.c exploit или сплохи средь бела дня


Компания ТрансТелеком bgp-сессия

Paul Watson оказался на редкость щедрым и выложил в сеть написаный им reset-tcp.c эксплоит, который собирается достаточно просто даже на простеньком Debian Linux. Перед сборкой советую проверить наличие в системе необходимой библиотеки libnet-1.1.1 и доставить её в случае отсутствия:

apt-get install libnet1-dev

после успешной установки библиотеки в систему переходим к сборке бинарника сплоита:

gcc reset-tcp.c -o reset-tcp /usr/lib/libnet.a
или
gcc -o reset-tcp reset-tcp.c -lnet
** можно также поменять предварительно MAC адрес (enet_src/enet_dst) в коде, во избежание лишних проблем со своим интернет-провайдером, которые могут возникнуть в процессе эксплуатации сплоита

пример запуска:
reset-tcp [interface] [src ip] [src port] [dst ip] [dst port] [window size]

[root@orc EuroTransTelecom]# ./reset-tcp eth1 172.16.0.1 1 172.16.0.2 2 65536

Packets sent: 8192 Sequence guess: 536805376
Packets sent: 16384 Sequence guess: 1073676288
Packets sent: 24576 Sequence guess: 1610547200
Packets sent: 32768 Sequence guess: 2147418112
Packets sent: 40960 Sequence guess: 2684289024
Packets sent: 49152 Sequence guess: 3221159936
Packets sent: 57344 Sequence guess: 3758030848
packets sent: 65535


SYN атака

Reset атака может быть выполнена и без RST бита. Вместо него можно установить SYN бит выполнив точно такую же атаку, что была описана выше. На большинстве реализаций TCP стека в случае получения повторного SYN будет выслан RST с sequence number. Если SYN входит в "окно" текущей сессии, то вместо с RST ответом сессия будет прекращена, а система вероятно даже перезагружена.

Blind data injection

Наконец и третий, но далеко не последний вариант развития событий. Делается все так же как и в предыдущих случаях - брутфорсом подбирается sequence number, только вместо посылки пустых SYN или RST пакетов лепим нормальный пакет с данными. Соединение в таком случае не прервется, а вот что у пользователя соберется на компьютере - совершенно непонятный вопрос. Передаваемые данные будут катастрофически повреждены.

Comments

Popular posts from this blog

Где искать залив на банковский счет или карту?

Есть несколько способов сделать банковский перевод на карту или счет или иначе на слэнге дроповодов это называется "сделать залив на карту " для начала работы вам понадобиться зайти в чей-то чужой уже существующий кабинет интернет-банка, причем не важно какого, банк может быть любым, главное чтобы на счету " холдера " были хоть какие-то деньги для того, чтобы зайти в интернет банк вам понадобится узнать логин и пароль, смотрим видео о том, как их получить для того, чтобы зайти в чужой интернет-банк: хотя конечно, скажу тебе честно, только ты не обижайся, сейчас все нормальные сделки по обналу делают краснопёрые, сидящие в банках, всякие там внедрённые агенты ФСО, Mi6 или CIA, а льют сотрудники крупных телекомов или штатные работники NSA и GCHQ, а всё остальное - это просто лоховство или чистой воды развод на бабло в виде предоплаты

Залив на карту или кто на площадке Darkmoney работает с офшором

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

Сбербанк и дропы с площадки Dark Money, и кто кого?

Крупных открытых площадок в даркнете, специализирующихся именно на покупке-продаже российских банковских данных, обнале и скаме около десятка, самая большая из них – это Dark Money . Здесь есть нальщики, дропы, заливщики, связанный с ними бизнес, здесь льют и налят миллионы, здесь очень много денег, но тебе не стоит пока во все это суваться. Кинуть тут может любой, тут кидали и на десятки миллионов и на десятки рублей. Кидали новички и кидали проверенные люди, закономерности нету. Горячие темы – продажи данных, банковских карт, поиск сотрудников в скам и вербовка сотрудников банков и сотовых операторов, взлом аккаунтов, обнал и советы – какими платежными системы пользоваться, как не попасться милиции при обнале, сколько платить Правому Сектору или патрулю, если попались. Одна из тем – онлайн-интервью с неким сотрудником Сбербанка, который время от времени отвечает на вопросы пользователей площадки об уязвимостях системы банка и дает советы, как улучшить обнальные схемы. Чтобы пользова

Всё больше студенток зарабатывают размещая видео на PornHub

Маше 22 года. На ней спортивные штаны и футболка. Она решила спать с мужчинами гораздо старше ее самой, когда она училась в университете. Свои мысли она выражает спокойно и ясно. " Я люблю секс , - говорит Маша, - и хочу заметить, я хорошо знаю, как им заниматься. Так что найти "папочку" или двух не составило никакого труда". Маша в этом смысле не одинока. Все больше и больше самарских студенток, погребенных под горами долгов, решают найти себе богатого мужчину определенного возраста. Они проводят время с такими "папочками" в обмен на деньги и подарки. "Мой женатый "папочка" давал мне примерно три тысячи за ночь", - говорит Маша. - Его интересовал только секс. Мой разведенный "папочка" давал мне около пяти тысяч рублей на мои расходы".   Будучи студенткой, Маша с трудом сводила концы с концами. "В мой первый год у меня было две работы", - говорит она. "Это было ужасно – я работала в баре, гд

Перехват BGP-сессии опустошил кошельки легальных пользователей MyEtherWallet.com

Нарушитель ( реальный заливщик btc и eth ) используя протокол BGP успешно перенаправил трафик DNS-сервиса Amazon Route 53 на свой сервер в России и на несколько часов подменял настоящий сайт MyEtherWallet.com с реализацией web-кошелька криптовалюты Ethereum . На подготовленном нарушителем клоне сайта MyEtherWallet была организована фишинг-атака, которая позволила за два часа угнать 215 ETH (около 137 тысяч долларов) на кошельки дропов. Подстановка фиктивного маршрута была осуществлена от имени крупного американского интернет-провайдера eNet AS10297 в Колумбусе штат Огайо. После перехвата BGP-сессии и BGP-анонса все пиры eNet, среди которых такие крупнейшие операторы, как Level3 , Hurricane Electric , Cogent и NTT , стали заворачивать трафик к Amazon Route 53 по заданному атакующими маршруту. Из-за фиктивного анонса BGP запросы к 5 подсетям /24 Amazon (около 1300 IP-адресов) в течение двух часов перенаправлялись на подконтрольный нарушителю сервер, размещённый в датацентре п

DDOS атаки на маршрутизатор и методы защиты Juniper routing engine

По долгу службы мне часто приходится сталкиваться с DDOS на сервера, но некоторое время назад столкнулся с другой атакой, к которой был не готов. Атака производилась на маршрутизатор  Juniper MX80 поддерживающий BGP сессии и выполняющий анонс сетей дата-центра. Целью атакующих был веб-ресурс расположенный на одном из наших серверов, но в результате атаки, без связи с внешним миром остался весь дата-центр. Подробности атаки, а также тесты и методы борьбы с такими атаками под катом.  История атаки Исторически сложилось, что на маршрутизаторе блокируется весь UDP трафик летящий в нашу сеть. Первая волна атаки (в 17:22) была как раз UDP трафиком, график unicast пакетов с аплинка маршрутизатора: и график unicast пакетов с порта свича подключенного к роутеру: демонстрируют, что весь трафик осел на фильтре маршрутизатора. Поток unicast пакетов на аплинке маршрутизатора увеличился на 400 тысяч и атака только UDP пакетами продолжалась до 17:33. Далее атакующие изменили стратегию и добавили к