• XSS.stack #1 – первый литературный журнал от юзеров форума

Мысли вслух о вирусостроительстве

Ar3s

Старожил форума
Легенда
Регистрация
30.12.2004
Сообщения
3 357
Реакции
1 404
Вообщем несколько поразмыслив над словами одного умного человека задался я несколькими вопросами:

1. все ddos боты которые мне доводилось видеть работают на уровне стека протоколов tcp-ip. Если почитать маны по сетям и протоколам - становится понятно, что если использовать протоколы более низкого уровня - можно добиться гораздо лучших результатов и при этом меньше палиться.
Скажем, если сделать шаг ниже и начать писать ддос бота на уровне Ethernet и при этом писать, допустим, шеловый вариант - то можно генерить пакеты подменяя адрес отправителя в самом пакете. т.е. инкапсулировать tcp-ip пакет в ethernet при этом рандомно генерить данные для отправки. Это значительно усложнит жизнь большинству админов и фаерволов (т.к. правила пишутся под общие стандарты).

2. почему все связко-писатели пишут в основном на php? Ведь перлом можно добиться значительно меньших нагрузок на сервер. Используя технологии CGI можно запросто реализовать связку которая будет держать огромнейшие потоки и при этом давать очень маленькую нагрузку. Ну саму админку - можно и на php. Это не критично, но сам двиг - почему бы и нет? Посмотрите на SutraTDS. Она держит на вполне обычном железе сумасшедшие нагрузки. И нормально при этом себя чувствует. Так что? Неужели у остальных руки из жопы растут?

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

p.s. все о чем написал выше - просто повод для обсуждений. Буду рад любой критике и конструктивным мыслям вслух. м.б. я где-то упустил что-то важное. Буду рад просветиться.
И еще. Не надо мне говорить что это сложно реализовать и т.д. Все в этом мире сложно реализовать если сидеть сложа руки. А хороший продукт окупится с лихвой. Закон рынка!
 
Пожалуйста, обратите внимание, что пользователь заблокирован
1. Подмена адреса отправителя очень часто фильтруется провайдером бота. Такой пакет с большой вероятностью вобще не дойдет до целевого сервера. И насколько я знаю работать с рав сокетами на новых виндах все проблематичнее.

2. Нагрузку на сервер создает прежде всего неправильная работа с бд. Сама выдача генерируемая даже php скриптом особой нагрузки создавать не должна. Хотя если сильно хочется оптимизации то оптимизировать нужно именно скрипт выдачи. Насчет админки - правильно, на чем она написана роли не играет. Еще можно ускорять отдачу php скипта выдачи. Использовать всякие там eAccelerator и FastCGI...
Но все-таки главная проблема - неоптимальное использование бд.
 
1. все ddos боты которые мне доводилось видеть работают на уровне стека протоколов tcp-ip. Если почитать маны по сетям и протоколам - становится понятно, что если использовать протоколы более низкого уровня - можно добиться гораздо лучших результатов и при этом меньше палиться.
Скажем, если сделать шаг ниже и начать писать ддос бота на уровне Ethernet и при этом писать, допустим, шеловый вариант - то можно генерить пакеты подменяя адрес отправителя в самом пакете. т.е. инкапсулировать tcp-ip пакет в ethernet при этом рандомно генерить данные для отправки. Это значительно усложнит жизнь большинству админов и фаерволов (т.к. правила пишутся под общие стандарты).
Как то баловался с сырыми сокетами - так вот мой провайдер не дал сделать запрос не из своей сети, ну тоесть вариант с подменой адреса отправителя отпадает сразу, так как боты будут быстро умирать: бан или блок провайдером.
Зы они работают только на вин 2000 и хп сп1, ну и на никсах естессно.

3. Сейчас все чаще вижу у юзверей linux на десктопах. При этом большинство из ник напрочь не понимает как оно фурычит. Просто все уверены что вирусов под linux нет. Предлагаю обсудить возможность закрепиться на тачке юзера. Ведь связка вполне в состоянии пробить такого юзера, скажем, через java-сплоит.
Пробить то может и можно, но заставить скомпилиться а затем запуститься скорее всего невозможно.
Если не прав, с радостью послушаю варианты...
 
3. Сейчас все чаще вижу у юзверей linux на десктопах. При этом большинство из ник напрочь не понимает как оно фурычит. Просто все уверены что вирусов под linux нет. Предлагаю обсудить возможность закрепиться на тачке юзера. Ведь связка вполне в состоянии пробить такого юзера, скажем, через java-сплоит.
пробить - мало, его еще порутать желательно. Но еще можно например ставить плагин к firefox, на это и прав юзера хватит.
 
По 3 пункту. А зачем рутать? Пользователь воркает со своими правами. Которых зачастую достаточно что бы исполнять наши скрипты. Скажем подсаживать пользователям бинарник/perl скрипт ддоса/спама/сокса и т.д.
Вопрос в том, как автозагрузку подкорректировать. Но, думаю, и тут выкрутиться вполне реально.
 
Как то баловался с сырыми сокетами - так вот мой провайдер не дал сделать запрос не из своей сети, ну тоесть вариант с подменой адреса отправителя отпадает сразу, так как боты будут быстро умирать: бан или блок провайдером.
Зы они работают только на вин 2000 и хп сп1, ну и на никсах естессно.

А кто мешает генерить пакеты с обратным адресом своей подсети? Диапазон 1-254 своей подсети и вперед.
А учитывая что я предлагал шеловый вариант - это по идее не должно быть проблемой вообще. Или я не прав?

DeusTirael Тут ты к сожалению прав. Я, поразмыслив, тоже пришел к выводу что смена языка особого прироста не даст. А вот правильная работа с базой - даст.

TrueUser! Ты вроде у нас спец по сутре. Что там за база используется? Там же автор что-то свое вроде бы примудрил.
 
Да, а вот и я :)

Итак, начнем с заданного вопроса по Sutra TDS. Так как мне в свое время пришлось поколупать ее могу сказать несколько слов.

1. Скрипт in.cgi по сути является скомпилированным бинарником и никакого отношения к perl не имеет впрниципе.
2. На perl написано почти все остальное, но оно не принимает (практически) никакого участия в распределении мегапотоков трафика. Есть там кое какие нюансы для любителей покрутить настройки, вот там могут быть использованы перловые скрипты частично.
3. НИКАКОЙ БАЗЫ ДАННЫХ типа mysql и прочего в сутре нет, она сама себе база данных. Фактически бинарник работает с набором файлов для каждой схемы отдельно, лочит их, пишет в них логи (а-ля SysLog), читает файлы конфигураций чтобы знать куда чего распределять и так далее.
4. Для работы с логами есть свой воркер называется он cron.sh и он запускается раз в минуту (или с предделителем) и парсит логи, которые наколбасил in.cgi. Результатом его работы являются СТАТИЧНЫЕ html файлы статистики, которые соответственно обновляются циклично.

Итак. Что тут ПИЗДАТО?
Во первых это то, что cgi-скрипт (который по сути вовсе и не скрипт, а исполнямый файл) несущий основную нагрузку работает в среднем в 100-500 раз БЫСТРЕЕ чем любой перловый или пыховый скрипт, обычно быстродействие его оказывается ограничено только скоростью файловых операций на сервере.
Во вторых задрочить сервер запросами статистики практически не возможно, ибо это статичные файлы.

Что тут ХУЕВО?
Мое ИМХО хуево это перл, ибо пых как ни крути лучше развит для быстрой и качественной разработки проектов для работы с текстом (это парсер логов) да и сама админка сделана через жопу с использованием какого то класса-шаблонизатора видимо написанного еще доисторическую эпоху.
Второе - это собственно работа с файлами саоими "кривыми" ручками, я считаю, что использовать для этих целей SysLog было бы целесообразнее, надежнее и быстрее, ибо писали его люди гораздо лучше разбирающиеся в теме чем любой из нас и автор Sutra. Как минимум ведь можно еще использовать memcache!

Таким образом, ответом на вопрос номер 2 кототрый задал Ar3s будет следующее:
1. Для написания связок, а в частности скрипта ротатора\сплойта целесообразно использовать именно язык С и gcc компилятор.
2. Вместо работы с базой данных надо бы просто работать с файлами или использовать SysLog демон. Админку имеет смысл писать на пыхе и парсить логи "онлайн" тут не стоит выебываться со статичными файлами отчетов как в сутре.
3. Сплойты можно хранить в виде бинарного дампа (а если его еще и поксорить именем домена!!!), это все как и сам ротатор, будет очень сложно реверсить, отвязать от домена.

З.Ы.
Во первых, по сутре. ДА, я ее реверсил, ДА я ее отвязал от домена, НО Я ЕЕ СЕБЕ КУПИЛ ВСЕ РАВНО, потому что получил более качественную версию, получил техподдержку, я уважаю автора этого продукта и ЦЕНЮ его ТРУД.
Во вторых. ТруКодеры не стали бы писать на основе того что я тут наболтал новый говнопак, ОНИ написали бы своего демона на 80 порт! Пускай апач, нджинкс и прочее сосут! Даешь сплойт демона! (На самом деле ничего в нем сложного нет, проект серьезный просто, требующий вложений в свою разработку не одну тонну грина, но вполне реализуемый).

Теперь немного о сетевых технологиях. Теоретически (не будем вдаваться в фильтры провайдера) есть несколько возможностей "дотянутся" до сервера.
Но в основе большинства атак лежит соединения между клиентом и сервером на основе TCP и UDP протоколов, находящихся по уровню в модели OSI выше протокола IP. Вообще говоря рекомендую почитать сначала литературу, а потом воспользоваться WireShark`ом для лабораторных исследований.
Так вот, протокол UDP НЕ ведет квитирования (проверки доставки пакетов), а TCP ведет, соответственно при замене обратного адреса в протоколе IP квитирование физически НЕ ВОЗМОЖНО, а значит нельзя и установить соединение (HTTP flood отпадает), остается только UDP но я честно говоря не знаю на сколько эффективны решения на его основе.
Таким образом с учетом того, что провы сейчас фильтруют трафик - борода получается.
 
На самом деле не борода. То о чем я говорил вполне можно реализовть на мой взгляд.
Смотрите:
Есть сервер с адресом 112.78.150.120
Есть жертва с адресом 202.113.78.15

Наш зло-сервер генерит tcp-ip пакет. В котором указывает:
-----------------------------------------Я пакет-----------------------------------------------------------
адрес получателя (202.113.78.15) адрес отправителя (любой) | сам пакет данных | CRC
----------------------------------------------------------------------------------------------------
Это все добро инкапсулирует в пакет ethernet

-----------------------------------------Я пакет----------------------------------------------------------
адрес получателя (202.113.78.15) адрес отправителя (генерим из своего диапазона 112.78.150.2-244 <- тут учтен запас на маршрутизаторы и broadcast) | пакет = инкапсулированный наш tcp-ip | CRC
--------------------------------------------------------------------------------------------------

Таким образом наш пров/хостер отправляет пакеты из своей подсети. А полученный жертвой пакет после деинкапсуляции имеет на борту левый адрес отправителя и соответственно ответ отправляет хз куда.

Вопрос есть параллельный. На сгенеренный ip приходит ответ от сервера, запрос на который мы не отправляли. Будет ли отослан ответ на этот пакет? т.е. arp запрос на нашу жертву уйдет? Если да - то это еще и удвоит каждый наш запрос.
 
Вопрос есть параллельный.
Да суть то не в этом, забиндить порт на мне удасться через TCP, соответственно от такого трафика нагрузки никакой ИМХО не будет.
 
Чем больше генерим нагрузку на сервер тем удачнее атака. А если помимо запросов на соединение серваку придется еще отрабатывать на каждый наш запрос по одному arp - то это очень даже неплохо. Такой вот микс получается.
 
Тут кстати еще одну тему по ddos-у читал.

Опубликованы две новые программы для HTTP POST DDoS-атак

Общественности стали доступны две бесплатные программы (R U Dead Yet? и OWASP HTTP POST Tool), которые реализуют недавно продемонстрированную "медленную атаку HTTP POST".

В ходе OWASP 2010 Application Security Conference, прошедшей в Вашингтоне, исследователи продемонстрировали то, как протокол HTTP помогает хакерам провести новую форму распределенной атаки типа "отказ в обслуживании", которая заливает веб-сервера медленным трафиком HTTP POST.

Исследователь Вонг Онн Чи, первым обнаруживший атаку в 2009 с группой исследователей в Сингапуре, и Том Бреннан, разработчик Proactive Risk, также показали, как онлайн игра может быть использована для создания ботов для ботнета, который может управлять атакой HTTP POST DDoS. Чи говорит, что HTTP обладает дефектами и, что все сервера или системы с веб-интерфейсом очень восприимчивы к такой атаке. "Если у вас есть веб-интерфейс, то мы можем разрушить его (этой атакой)", сказал Чи в начале этого месяца.

Независимый исследователь Равив Раз на прошлой неделе обнародовал программу "R U Dead Yet?", а Чи и Бреннан презентовали свою программу на День Благодарения.

Райан Барнетт, старший разработчик безопасности Trustwave SpiderLabs, протестировал программу и разработал некоторые стратегии защиты, которые используют определенные конфигурации ModSecurity и Apache. Барнетт использует аналогию с системой проверки безопасности в аэропортах для того, чтобы объяснить, что случается во время атаки HTTP POST: в отличие от традиционной DDoS-атаки, где осуществляется слишком много "частных полетов" с целью быстрого получения трафика, новый тип атак "потребляет соединения" и похож на относительно короткую очередь пассажиров, проходящих контроль – большинство из них – семьи с детьми, путешественники и те, кого необходимо долго проверять.

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

Атака HTTP POST посылает POST заголовки, которые позволяют серверу узнать, сколько информации передано, но когда дело касается самого сообщения, оно отсылается очень медленно (чтобы занять соединение и лишить сервера ресурсов). Как говорит Чи, такая атака, использующая всего несколько тысяч медленных соединений HTTP POST, может разрушить сайт за считанные минуты.

Слайды с презентации:
:zns5: Скачать|Download
 
Они пересылают данные очень медленно, и в тот момент, когда порог ожидания почти превышен, они посылают небольшое количество информации
С nginx такая шляпа не прокатит - он передает данные на исполнение интерпретатору только по факту их полного получения.
 
еще как прокатит. Если забить все открытые сокеты - реальный посетитель тупо не достучится до сайта. А сокеты будут долго оставаться открытыми и главное - будут получать пакеты, что не даст им закрыться на дефолтных настройках.

Я даже готовую реализацию этого дела видел на сайте разработчика. К сожалению ссылку сейчас вспомнить не могу. Но гуглится должна быстро.
 
Я качнул обе программы RUDeadYet и OWASP HTTP POST Tool, поюзал что-то ниче не получилось завалить :)

OWASP выдает активных 62 коннекта из заданных 400, у сервера же есть ограничение по количеству коннектов на однин IP?
 
Если забить все открытые сокеты - реальный посетитель тупо не достучится до сайта.
Э нет, братцы. Как раз таки идея "медленных" запросов стоит не в том чтобы забить все сокеты, для этих целей юзается флуд и благополучно отсекается современными антиддос надстройками. Тут же компроментируется именно создание максимального количества процессов-воркеров в апаче, соответственно обслуживать следующие запросы становится некому. По дефолтной настройке в апаче можно запустить максимум 150 воркеров (MaxClients).
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
Итак нам достаточно замутить 150 висящих онлайн пиявок и сервер скопытится не от перегрузки конечно а тупо из-за дефолтной настройки.

Во первых надо отключать KeepAlive обязательно ну и добавлять количество воркеров пока оперативка тянется.
Опять же есть такая дефолтная настройкак как
Timeout 120
Если его уменьшить до предельно возможного значения (чтоб скрипты при обычном запросе укладывались) то это тоже позволит смягчить атаку.
 
TrueUser
Мда сам давно думал о реализации такой софтварной связки, ее можно
собрать в виде ботнета) а в админке распределять поток трафика,
еще бы с ифреймом чтонить придумать.
 
почему все связко-писатели пишут в основном на php? Ведь перлом можно добиться значительно меньших нагрузок на сервер
Ну, если уж такая пьянка, то предлагаю запиливать сразу на сях, как делали создатели нео. А ещё можно мускул выкинуть в мусорку, и, как уже писали, юзать циферки вместо line-records, бережно их храня, для верности, в раме.. хотя можно и в файлегах :)
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх