Skip to main content

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 или сплохи средь бела дня


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


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

Как найти реального заливщика

Своего первого реального заливщика, который показал мне как можно скачать деньги в интернет с банковских счетов, я нашел случайно, когда еще трудился в Укртелекоме сменным инженером немного подрабатывая продавая трафик налево, но потом этот человек отошел от дел в связи со слишком уж скользкой ситуацией в данной сфере, и я решил поискать партнера на форумах, разместив рекламу на трёх электронных досках объявлений. Честно говоря поначалу даже был готов сразу закинуть 500 000 гривен в Гарант, но потом призадумался, а стоит ли?


Ко мне начал обращаться народ обращается разных категорий

1. Дебильная школота, которая что-то любит повтирать про свою серьезность и просит закинуть 10 000 USD им на Вебмани в качестве аванса 
2. Реальные мэны, которые льют сразу большую сумму по SWIFT без разговоров про гарантии и прочую шнягу, но после того, как им отдаёшь нал, они сразу пропадают, суть данных действий я так и не понял. зачем пропадать, если всё прошло гладко? 3. Мутные личности, берущие реквизиты …

Чем рискуют дропы и нальщики принимая заливы на свои карты

Зам.начальника управления Следственного департамента МВД Павел Сычев рассказал о криминальном бизнесе «нальщиков»
- Глава Банка России Эльвира Набиуллина заявила о снижении объемов теневого оборота в конце 2013 года. Что показывает ваша статистика по выявлению незаконных операций?

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

По уголовным делам, расследованным МВД только в первом полугодии 2013 года, проходит 145 млрд рублей, обналиченных и незаконно выведенных заграницу. Это неуплаченные налоги, незаконный бизнес, хищения, взятки. Финансовый доход посредников от этих операций составил 8 млрд рублей. Расследовано 89 таких дел …

Новые онлайн-игры с выводом денег

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




Как правильно играть на деньги в онлайн играх
1. Играть самому, без каких-либо денежных вложений в игру. Такой способ заработка занимает довольно много времени, а доход приносит весьма скромный. К тому же, в некоторых онлайн играх с выводом средств зарабатывать подобным способом просто невозможно, так как игры с возможностью заработать могут являться инвестиционными проектами (финансовыми онлайн играми), которые требуют обязательных минимальных вложений.


2. Играть самому, вкладывая деньги с банковской карты. Наверное, это самый оптимальный способ заработка реальных денег в онлайн играх. Сумма дохода здесь зависит от того, ско…

Залив на карту без предоплаты по SWIFT или SEPA

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


Например, один мой хороший знакомый, имеющий свой собственный офшор, работает с заливщиками на условиях партнерства, предоставляя им трафик и взамен получая 20% от поведенных транзакций на свой счет в офшорном банке. Мне он рассказал по большому секрету, как такое ему удается, а начинал он как и все с малого - продажи дебетовых карт и игре на рынке FOREX.

Просто так искать Заливщиков на различных форумах, посвящённых обналу и отмыванию денег - достаточно муторное и нудное занятие, потому как после общения с десятым по счету заливщиком, начинаешь понимать, что просто так на карты и счета никто лить не будет.

Однако моему другу попался один довольно интересный вариант - Заливщик предложил сделать перевод в размере 375 000 EUR по SEPA в день предоставления готового к работе счета и активной системы Multihomed AS.



Остальные предложения были более мутные …

Black Hat SEO или бот для скликивания контекстной рекламы

На днях мне стало интересно, а каким образом с точки зрения «черных» методов SEO могут быть использованы хакерские программы – например, путем генерации трафика для заинтересованных ресурсов или скликивания контекстной рекламы AdWords или Яндекс.Директ
Понятно, что увеличение числа посетителей на сайте интернет-магазина или компании, занимающейся недвижимостью, вероятнее всего положительно скажется на их доходах. Поэтому разработка подобного типа программ — вполне себе обыденное дело, и появились такие программы уже давно. По большей части таких ботов можно разделить на два класса — это различного рода Adware, которое распространяется вместе с популярными программами, или трояны, которые осуществляют более серьезную модификацию системы.  Win32/Patched.P Давай для начала рассмотрим достаточно экзотический, но от этого не менее интересный способ подмены результатов поиска в популярных поисковых сервисах Яндекс и Google, который был реализован в троянской программе Win32/Patched.P (ESET)…

М9 - точка обмена трафиком • Московский INTERNET EXCHANGE • MSK-XI

Вот так всё начиналось
Изначально был всего один провайдер - Релком. Не было конкурентов - не было проблем. Рунет еще делал свои первые шаги, и все русскоязычные ресурсы были сосредоточены в одном месте. Позже Релком развалился на Релком и Демос, стали появляться другие провайдеры. Рунет тем временем подрос и... распался на множество отдельных сетей-сегментов, контролируемых разными провайдерами. Разумеется, конечные пользователи имели доступ ко всем ресурсам рунета, но прямого взаимодействия между провайдерами не было. Поэтому трафик шел с сервера одного провайдера по огромной петле через Америку, потом Германию, и только потом возвращался на сервер другого провайдера. Имела место неоправданная потеря и в скорости, и в деньгах. Пока трафик был незначительным, это мало кого волновало, но интернет бурно развивался, трафик по рунету стремительно увеличивался, и в один прекрасный день крупные провайдеры Москвы (по сути, Демос и Релком) сели друг напротив друга и решили, что им надо налаж…