Чаты IRC чаты (RusNet IRCd и другие)

Discussion in 'Веб-уязвимости' started by begin_end, 10 Jan 2007.

  1. Eff0rd

    Eff0rd Elder - Старейшина

    Joined:
    2 Jun 2009
    Messages:
    271
    Likes Received:
    334
    Reputations:
    37
    Проект More mIRC Script

    В том году писал скрипты под mIRC (по крайней мере пытался), выдёргивал из других популярных клиентов, переделывал, изменял, и в результате получилась вот такая штучка для малышей:
    Скачать, линк2
     
    #21 Eff0rd, 26 Jul 2009
    Last edited: 26 Jul 2009
    1 person likes this.
  2. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    2,482
    Likes Received:
    7,062
    Reputations:
    693
    Сервис поиска каналов сети RusNet

    На некоторых серверах сети RusNet ( например, irc.nnov.net; irc.mv.ru; irc.baikal.net; irc.nikolaev.ua; irc.sevcity.net; irc.sev.net.ua etc..) при попытке набрать /list пользователя выкидывает с причиной Max SendQ exceeded. Выкидывает потому что слишком маленький объем буфера в настройках сервера, а посмотреть или поискать каналы интересующей тематики желание не пропадает, что же делать в таком случае? С технической точки зрения, Вы можете обратиться к администратору этого сервера и попросить увеличить sendq в настройках, но на практике этого никто для Вас делать не будет или в лучшем случае сделают через пятилетку, а поискать и посмотреть каналы хочется прямо сейчас =). Что же делать? Можно сменить сервер на другой из /links или http://irc.run.net/Pix/ircmap.txt , но опять же – это не такое и хорошее решение ибо: 1) не зная можно наткнуться на подобный же сервер, с которого будет выкидывать с той же причиной; 2) в некоторых случаях просто нет возможности сменить сервер; 3) хочется сидеть именно с этого, милого и любимого для сердца сервера =) ; 4) элементарно лень =). Это один момент и второй момент – жалко трафика и кучу времени на изучение каналов из /list .
    И что же делать?
    А вот для этого в сети RusNet существует пятый ( 1- chanserv, 2 – nickserv, 3 – memoserv, 4 – operserv), малоизвестный сервис поиска каналов. Справку по этому сервису можно прочитать, набрав команду /squery list help list ( для некоторых клиентов, таких как kvirc например, /squery list :help list ). Там же можно посмотреть и примеры использования сервиса набрав команду /squery list help examples ( /squery list :help examples ). Рассмотрю некоторые примеры использования этого сервиса и тут:
    1. Чтобы найти все каналы, в топике которых есть слово Hack, как пример, нужно набрать
    /squery list list * -t Hack (/squery list :list * -t Hack )
    2. Чтобы найти всё каналы начинающиеся с &, нужно набрать
    /squery list list &* (/squery list :list &* )
    3. Следующая команда покажет все каналы, в названии которых имеется часть слова hack
    - каналы, название которых начинается со слова hack
    /squery list list #hack* ( /squery list :list #hack* )
    - названия каналов, содержащих в себе слово hack
    /squery list list #*hack* (/squery list :list #*hack* )
    - каналы, название которых заканчивается словом hack
    /squery list list #*hack (/squery list :list #*hack )
    4. Пример команды сервиса, показывающей некоторые каналы с заданной численностью пользователей на тот или иной момент времени
    - каналы с количеством пользователей не менее 99
    /squery list list * -min 99 ( /squery list :list * -min 99 )
    - каналы с количеством пользователей не более 99
    /squery list list * -max 99 ( /squery list :list * -max 99 )

    Примечание: на декабрь 2010 сервис ограниченно работоспособен.
     
    _________________________
    #22 Suicide, 5 Aug 2009
    Last edited by a moderator: 19 Dec 2010
    1 person likes this.
  3. begin_end

    begin_end Green member

    Joined:
    4 Jan 2007
    Messages:
    265
    Likes Received:
    638
    Reputations:
    476
    Как захватить канал? (пилим #решетку#)

    [​IMG]Во времена, когда автор особо интересовался темой irc-уязвимостей, логикой защит и атак irc-ресурсов, для нужд некой группы любителей "пошуметь" в irc-сети RusNet был продуман возможный план получения контроля над вполне определенным каналом. Но использовать план не довелось по причине нехватки особых ресурсов.
    [​IMG]Несмотря на прошедшее время, план годен чуть менее чем полностью, и предоставлен вам в виде статьи. Возможно, ценность материала сугубо познавательная, а возможно практико-образцовая. В общем:


    План захвата канала # сети RusNet
    Разработка: begin_end © 2007

    [​IMG]Особенности канала.
    [​IMG]Канал #, (далее просто канал) технически представляет собой канал вполне обычного типа с префиксом # и отсутствием имени. Фактически имя канала это только его префикс. В связи с этим сервисы сети, действующие на данный момент, не позволяют регистрировать канал, считая такое имя ошибочным. Умышленно ли это сделано или случайно – неизвестно. Важно, что у канала нет, и не может быть владельца на сервисах. Кстати, некоторые боты также неверно воспринимают такой канал. При создании своего собственного бота (обычного или военного) не допускайте таких ошибок.
    [​IMG]Так как сервис ChanServ действовать на канале не может, за управление всеми функциями канала отвечают пользователи и боты. Понятно, что в таком случае безопасность канала уже не может быть на таком же уровне, как и с действующими сервисами. Люди медлительны, боты или скрипты несовершенны/уязвимы и вообще все они в целом не имеют привилегий на осуществление действий на ircd сервере (команды от сервисов практически не имеют очереди ожидания, сервисы не штрафуются при многократном пакетном изменении режимов и т.д.).
    [​IMG]Юзеров канала можно классифицировать следующим образом:
    [​IMG]

    [​IMG]Боты могут присутствовать следующие:
    [​IMG]

    [​IMG]Живых же пользователей можно подразделить так:
    [​IMG]

    [​IMG]На данный момент точный список ников с присвоением никам юзеров канала соответствующих положений в классификации отсутствует. Его неплохо составлять задолго до атаки и постоянно обновлять, используя автоматизированные средства анализа канала, а также метод провокаций.

    [​IMG]Общие рекомендации.
    [​IMG]Целью атаки является захват контроля над каналом на максимально возможное время. В случае рассматриваемого канала захват контроля – единоличное владение атакующим юзером статусом оператора на канале. Логика захвата проста: получить статус оператора для себя и отобрать его у всех остальных. Однако проблемно то, что на канале, как правило, огромное число пользователей и ботов имеют этот статус. Понятно, что при попытке массового деопа сработают защитные функции у ботов. Что ж, то, что сработают – неизбежно. Однако у защитных ботов и пользователей операторов те же ограничения, что и у нас. И если «наших» будет больше, то правильная последовательность действий может быть успешной. Эта последовательность заключается в методе лавинного опополучения и опоснятия. Общая суть примерно такова: Один наш бот имеет оп. Входят три наших бота, которые получают оп от первого бота пакетом. Затем входят следующим тактом 9 ботов, которые получают опы от трех предыдущих. Эти 9 ботов тратят свои действия частично на оп следующей партии ботов, а частично на деоп/кик/бан наиболее опасных юзеров. Следующая партия делает то же, с добавлением действий по снятии банов и защит, которые уже успели осуществить вражеские боты.
    [​IMG]Первый бот, имеющий оп, будет их числа наших ботов – шпионов, которых заблаговременно следует завести на канал для сбора информации. Они обязательно должны иметь не воспринимаемые как прокси, различные адреса и пользователеподобные параметры. Эти боты во время атаки (конечно кроме бота, опнувшего партию из 3-х первых атакеров) будут нашими глазами и ушами – по ним мы должны координировать действия атакующего, желательно автоматически. Ни один бот в ботнете не должен иметь каких либо признаков, которые могут раскрыть кто мы.
     
    _________________________
    2 people like this.
  4. begin_end

    begin_end Green member

    Joined:
    4 Jan 2007
    Messages:
    265
    Likes Received:
    638
    Reputations:
    476
    [​IMG]Ранжирование юзеров канала по степени опасности.
    [​IMG]Выше приводилась классификация юзеров канала. Теперь же определимся, как из нее располагаются юзеры по степени их способности навредить во время атаки, и какие меры к ним нужно применять.
    [​IMG]Несомненно, опасней ircоператоров нет никого (только что карающие боты с их правами, да сервисы). Но в приоритете действий по снятию опа они на 4 месте (на 8 при неактивности) ибо люди. Кикать и банить их в первые минуты захвата не стоит, дабы не привлекать лишнего внимания.
    [​IMG]Верные защитники канала – охранные боты. Очень опасны быстрым срывом неправильно построенной атаки. Действуют моментально и одновременно, но не совместно. Естественно, приоритет у них только первый, их нужно лишить опа как можно быстрее. Желательно после успешной атаки их удалить из канала.
    [​IMG]Вроде живые пользователи, однако частично – боты, благодаря активным защитным скриптам irc клиентов. Опасны почти как боты. Приоритет деопа второй. Удалять из канала можно последними.
    [​IMG]Менее агрессивные сородичи охранных ботов, с главной целью существования – игры, поставка различной инфы по запросу, соблюдение дисциплины на канале (антифлуд, антимат и т.д.). Однако могут быть так же опасны как и сородичи благодаря наличию сходных скриптов для защиты. Приоритет деопа – три. Удалять необязательно.
    [​IMG]Хэлперы. Могут в первую очередь пожаловаться ircопам на атаку. Кроме этого опытны в irc, и могут отреагировать быстрее и умнее рядовых юзеров, но, конечно, медленнее ботов. Приоритет деопа 5 (или 9 при неактивности). Удалять из канала нужно первыми.
    [​IMG]Обычные юзеры с правами оператора канала. Приоритет деопа 6 (10 если юзер неактивен). Удалять из канала необязательно.
    [​IMG]Боты – шпионы ircопов. Сами активности не проявляют. Опасны только потенциально, при прямом управлении ими иркопом. Приоритет деопа 7. Удалять нужно сразу после захвата канала.
    [​IMG]Обычные юзеры – полуоператоры. Сильно навредить могут только что постановкой бана. Приоритет деопа 11 (12 при неактивности). Удалять не обязательно.
    [​IMG]Юзеры без всяких прав. Ничем не угрожают (если данные разведки верны). Никаких особых мер принимать против них не стоит.
    [​IMG]А это «наши ребята». Боты шпионы, ведущие анализ канала. Один из этих ботов превратится в атакующего, начав атаку выдачей опа. Прочие должны быть ранжированы для действий атакующих ботов по всем вышеуказанным правилам для юзеров, дабы не вызвать подозрений (с них должен сниматься оп, хоп). Единственное исключение – атакующие боты не должны их кикать.
    [​IMG]Собственно сами наши военные боты – захватчики. Все они не должны ранжировать подобных себе. Наоборот, должна быть поддержка – реакция на баны (снятие), реакция на деопы (ответный деоп врага и оп деопнутого бота), реакция на кики (ответный деоп).
     
    _________________________
    Cthulchu likes this.
  5. begin_end

    begin_end Green member

    Joined:
    4 Jan 2007
    Messages:
    265
    Likes Received:
    638
    Reputations:
    476
    [​IMG]Особенности управления ботнетом.
    [​IMG]Во время атаки все будет происходить очень быстро. Учитывая большое число ботов, управлять каждым из них в отдельности нет возможности, да и смысла. Если правильно составлены приоритеты и реализован алгоритм ботнета, боты сами справятся. Генерал лично не управляет каждым солдатом в бою. Он видит общую картину и руководит все армией в целом. И от правильности принятия общих решений зависит исход боя. Лишь изредка многое зависит от исключительных действий одного конкретного солдата. Программное обеспечение, созданное для управления атакой должно позволить управляющему ботнетом быть этаким генералом. Рекомендуется постоянно получать информацию от всех имеющихся ботов шпионов и объединять схожие данные, что гарантирует при случайном выходе из строя одного из ботов продолжение работы системы без изменений. Информация должна выводиться на несколько экранов сразу, по-разному. Первый экран будет показывать сырой лог все событий на канале. Второй экран – стратегический. Он отображает графически расположение противника и происходящие действия. Кроме того, он интерактивный – через него можно управлять ботами, указывая им новые приоритеты (100% гарантии точности разведданных о составе канала нет, и ранжирование могло быть не точным). Новые цели указываются ботам, из которых наиболее свободные принимаются за решение новой задачи. Выполнение задачи должно быть отслежено, так, что если бот, ее выполняющий погиб, его заменил другой бот. Стратегический экран лучше показывает общий ход боя. Однако еще лучше будет на третьем экране – статистическом выводить в цифросхематическом виде данные боя. Это число и % ботов на данный момент. Число и % оставшихся противников, % выполненности задачи, средняя эффективность атакующей единицы.

    [​IMG]Военный бот.
    [​IMG]Отдельно взятый бот должен состоять из двух частей: атакующей и командной. Атакующая часть – триада коннектов в irc сеть для атаки канала. Количество 3 вызвано необходимостью максимально полно использовать возможности бота. Ведь в сети RusNet на сервера с одного адреса в обычных условиях разрешено делать 3 коннекта. С 3х коннектов бот может в 3 раза быстрее действовать, так как штрафуется ник а не хост за пакетные быстрые действия. Атакующая часть должна иметь возможность обновления скриптов действий и базы ранжирования. Командная часть – коннект на свой irc сервер, на котором нет лимитов, штрафов и прочего, и который недоступен для входа без пароля или иначе. Через канал на командном irc сервере бот получает команды, обновляет скрипты и базу ранжирования, а также синхронизирует действия с остальными ботами.
    [​IMG]Сам бот – программное обеспечение, способное работать как, используя прокси, так и способное незаметно быть установленным на каком-либо компьютере непосредственно. В последнем случае ответственность у бота низкая и поручать ему важнейшие действия поддержки (например, лавинная выдача опов) не стоит. Прокси для бота, выполняющего такие действия, должны быть достаточно быстры, не должны быть в бане, автобане на ботах. В целом у атакующего должен быть обязательно хороший канал соединения, ибо задержки могут быть очень губительны.

    [​IMG]Атака. Схемы.
    [​IMG]Схематичная иллюстрация выбрана как наиболее разъясняющая особенности проведения атаки. Рекомендуется подобное применять в стратегическом экране при проведении атаки.
    1. Иллюстрация ситуации на канале перед началом атаки
    2. Начало вброса атакующих ботов
    3. Продолжение вторжения ботнета, лавинное опополучение
    4. Начало самой атаки, опоснятие наиболее опасных целей

    [​IMG]Заключение.
    [​IMG]Статья писалась для противо-irc-руснетной команды уруру. Вы можете доработать принцип атаки, а также исправить возможные ошибки. Автор begin_end написал статью в ходе неких исключительно гипотетических размышлений о атаках (сам ником образом никого не атаковал/не атакует :).
     
    _________________________
    2 people like this.
  6. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    2,482
    Likes Received:
    7,062
    Reputations:
    693
    Полезно, познавательно, интересно, реализуемо..спасибо +)


    На самом деле, меня беспокоит нынче один вопрос, а именно, как обходить защиту, установленную на некоторых серверах сети, (в частности, irc.seb.org.ua etc) проверку по всяким там efnetrbl.org, dsbl.org. Вот на названном вообще ни в какие рамки не лезет, отсев 89%..
     
    _________________________
  7. begin_end

    begin_end Green member

    Joined:
    4 Jan 2007
    Messages:
    265
    Likes Received:
    638
    Reputations:
    476
    Увы, способы обхода такой защиты мне неизвестны (конечно можно взломать ircd, но тогда отпадает смысл в самих таких атаках через прокси и т.д.). Некоторые сервера RusNet не проверяют адреса в этих базах (недавно irc.sevcity.net пропускал). Сервера irc перестают проверять адреса при отсутствии подключения к серверам этих баз данных. Что иногда случается. Можно попробовать поискать сервер.

    Лучшее решение - зарание просеивать список годных прокси на чекере по efnetrbl.org, dsbl.org и пр.
     
    _________________________
    1 person likes this.
  8. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    2,482
    Likes Received:
    7,062
    Reputations:
    693
    Не, это, конечно, всё известно, про выбор сервера и заранее отсев..думала может существует способ именно на заданном обходить, сколько не пыталась, не нашла. Понятно, спасибо.
     
    _________________________
    #28 Suicide, 13 Sep 2009
    Last edited: 30 Dec 2009
    1 person likes this.
  9. begin_end

    begin_end Green member

    Joined:
    4 Jan 2007
    Messages:
    265
    Likes Received:
    638
    Reputations:
    476
    Установка RusNet IRCd

    [​IMG]Цель данной статьи – помочь осуществлять установку и последующую настройку ПО RusNet IRCd, кратко затронув некоторые особенности данного irc-сервера.

    [​IMG]Материал рассчитан автором begin_end`ом на новичков в этом деле – на тех, кто практически не имеет опыта работы в *nix системах, но знает что такое IRC, IRCd, и, возможно уже устанавливавших какой-либо иной irc-сервер.

    [​IMG]Задача статьи – постепенно изложить, описать процесс установки/настройки IRCd на выделенный сервер под *nix через ssh.

    [​IMG]Как показал поиск, подобный вопрос ранее не освещался, однако к автору с ним неоднократно обращались. Кроме того, в своё время сам автор, испытывал необходимость в подобном материале. Если вы любитель/специалист *nix, то можно, конечно, сказать: все просто, все тривиально. Хотя, в случае настройки сервера и такой человек может быть озадачен. В любом случае, статья для новичков.
    [​IMG]Прежде всего, предлагаю разобраться, зачем вам ставить irc-сервер RusNet IRCd? Обычно его хотят поставить для 2х целей: 1) вы свеженазначенный irc-оп RusNet :), вам нужно срочно обновить сервер (а то отлинкуют!) и ничего не понимаете в ircd (обычная ситуация); 2) вы хотите стать irc-опом, при этом получить господство над всея RusNet ну и всем миром в придачу, но встречаете маленькую проблемку – требования о линковке своего сервера, где видите, что придется забыть о windows и UnrealIRCD, уметь понимать /stats и прочую ерунду, и каким-то чудом загнать много народа на будущий линкуемый сервачок. Конечно, есть еще и третья цель: поставить сервер не для линковки в RusNet (например, дабы искать баги или просто банально юзать как irc-чат).
    [​IMG]После того, как вы осознали, зачем вам irc-сервер RusNet, подумайте, продолжать или нет. Хотя, все равно будете продолжать, так что читаем далее...

    [​IMG]Где планируется ставить IRCd? Очевидно, вам нужен сервер с операционными системами Linux или FreeBSD. Хотя, конечно не обязательно настоящий сервер, и даже не целиком. Достаточно иметь shell-аккаунт на виртуальном выделенном сервере (VDS), что стоит (около 100р) гораздо дешевле VDS или, тем более DS (кстати, администрация RusNet не любит линковать IRCd, сидящие на известных VDS или арендованных шеллах).

    [​IMG]Итак, вы купили/создали шелл, который, скорее всего будет на VDS от FirstVDS (ибо дешевле). Операционная система FreeBSD вполне годится, в Linux отличий от установки почти не будет. Начнем с самого простого: как зайти на шелл windows-юзеру (иной юзер наверняка знает)? У вас должны быть следующие данные: логин, пароль и адрес (порт по умолчанию 22, редко бывает другой, что отдельно указывается). Вам понадобится дополнительное программное обеспечение, рекомендуется putty (прост, и суров, как любая командная строка) и WinSCP (достаточно удобен для заливки файлов и иных действий мышью, но глючен).
    [​IMG]Предположим вы решили зайти через putty. Запустим его и укажем в hostname выданный адрес. Выберем Connection type: SSH. После нажатия на Open появится сам черный экран, где строкой login as вас попросят указать ваш логин, а после – пароль (при вводе его не будет видно, обратите внимание). В случае успеха вы увидите версию сервера, иногда MOTD, (при неуспехе вам скажет Access denied) и можете начать работу.
    Code:
    cd /home/ircuser/data
    wget http://gvs.rinet.ru/rusnet/rusnet-1.4.19.tar.gz
    tar xvfz rusnet-1.4.19.tar.gz
    cd /home/ircuser/data/rusnet-1.4.19
    ./configure --prefix=/home/ircuser/data/rusnet --without-openssl
    cd /home/ircuser/data/rusnet-1.4.19/i386-unknown-freebsd6.3
    wget http://w.ho.by/tmp/pub_rusnetircd_install/config.h
    make
    make install
    cd /home/ircuser/data/rusnet/etc
    wget http://w.ho.by/tmp/pub_rusnetircd_install/ircd.conf
    cd /home/ircuser/data/rusnet/sbin
    ./ircd
    [​IMG]Это практически все, что нужно ввести в консоли для установки и первичной настройки. Разберемся построчно.

    [​IMG]Первыми двумя строками мы переходим в пользовательскую директорию и скачиваем туда последнюю версия RusNet IRCd. Затем распаковываем архив, и переходим в папку, извлеченную из архива.
    Конфигурирем IRCd, указывая в prefix путь, где будет арсполагаться наш IRCd после компиляции. В результате конфигурации будет создана папка i386-unknown-freebsd6.3 или иная с похожим именем (зависит от версии ОС).
    [​IMG]Переходим в эту папку и скачиваем файл config.h с минимальными рабочими настройками. В этом файле вы можете настроить некоторые параметры линковки сервисов, названия сети и многое другое (если хотите настроить, то лучше это делать сейчас, ибо потом будет невозможно). Затем мы компилируем, собираем IRCd (make) и устанавливаем его (make install).
    [​IMG]Перейдя в каталог rusnet/etc скачиваем пример минимально рабочего конфига ircd.conf. И можем запустить IRCd, который, если все сделано правильно, нормально запустится, не сказав нам об ошибках, и позволит к себе подключиться.
    Одной из особенностей RusNet IRCd, в сравнении с UnrealIRCD, является более строгое (хотя и не полное) следование rfc1459.
    [​IMG]К сожалению RusNet Services недоступны, потому придется ставить другие сервисы. Сделать это поможет знание настроек файла ircd.conf, о чем будет написано немного позже.
     
    _________________________
    1 person likes this.
  10. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    2,482
    Likes Received:
    7,062
    Reputations:
    693
    Небольшое добавление к предыдущему посту begin_end.

    Чтобы устанавливать ircd RusNet нужно для начала его где-то взять. Раз уж у некоторых возникают проблемы с установкой, то вероятно возникнут и с нахождением нужного, для того или иного, ircd RusNet.

    Итак,

    Есть некоторые версии в паблике, но если мы посмотрим версию существующих на данный момент действующих серверов RusNet, то увидим, в большинстве случаев, установленные версии rusnet-1.4.15 и rusnet-1.4.16 (естественно, часто они уже правленые ircOp'ом того или иного сервера), но даже в оригинале их достать не так и просто. А часто, для тех или иных тестов необходимо иметь под рукой именно те версии, что действуют на данный момент дабы приблизить тесты к реальным условиям (чтобы потом в реальных условиях "работало как часики").


    Версию установленного ircd можно посмотреть набрав команду /version irc-server_из_списка (список серверов RusNet можно прочесть по команде /links, находясь в сети или http://irc.run.net/Pix/ircmap.txt). Ответ будет примерно такой:
    2.10.3+rusnet1.4.15 irc.nnov.net :aEFHiIJKMpRtTuvwZ+SSL
    2.10.3+rusnet1.5.0(p20) irc.seb.org.ua aeEFHiIjJKMprRtTuvwWyzZ+SSL
    2.10.3+rusnet1.4.10 irc.run.net aeEFHiIJKMpRtTuvwZ+SSL
    etc




    Скачать версии:

    rusnet-1.4.15

    rusnet-1.4.16

    rusnet-1.4.19

    другие версии в паблике

    По сервиcам..да, существующие достать крайне сложно или даже невозможно, но есть очень похожие сервисы http://www.ircservices.za.net/. Они, естественно, не поставятся под ircd RusNet, но их можно взять за основу или стартовую точку для написания сервисов под это ircd.

    P.S. Если у кого имеются и другие, не паблик версии ircd RusNet, пожалуйста, поделитесь ссылочками +)
     
    _________________________
    #30 Suicide, 10 Dec 2009
    Last edited: 18 Dec 2009
  11. begin_end

    begin_end Green member

    Joined:
    4 Jan 2007
    Messages:
    265
    Likes Received:
    638
    Reputations:
    476
    Иногда бывает необходимо иметь для каких-то IRC нужд базы, содержащие образцы никнеймов и некоторых других данных рядовых пользователей обычных сетей. Сколь бы ни был хорош механизм автоматической генерации псевдоосмысленных имен - "живые" никнеймы лучше.

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

    Итак, база данных очень простой структуры, состоит из строк: nick|user|real name. Разделитель - символ "§".
    Базы две: сети RusNet (1954 пользователя) и сети FreeNode (9110 пользователей).

    ПО bdb converter позволяет преобразовывать случайно выбранные строки из баз вышеуказанного формата в произвольный, самостоятельно заданный формат (справка в программе) с произвольной совместимой мутацией данных.

    Теперь вполне возможно будет использовать в данных своих ботов не "floodbot00001 это flooder@host :flood-bot", а что-то почеловечнее и менее заметное, как то "Ради0котёнок это 5n1per@host :Маx".
     
    _________________________
    2 people like this.
  12. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    2,482
    Likes Received:
    7,062
    Reputations:
    693
    Обзор существующих IRCd

    Выше всё время говорилось про IRCd RusNet, однако это IRCd далеко не является идеальным, единственным и распространённым для установки в различных IRC-сетях/отдельных IRC-серверах.


    Итак, какие же IRCd существуют в "природе"? Об этом как раз и пойдёт речь далее.


    Для начала, определим, что же такое есть это IRCd?
    Как гласит wikipedia,
    IRCd (демон Internet Relay Chat ) — это сервер который обслуживает протокол интернет чата (IRC), позволяя людям общаться друг с другом по Интернету (что предусматривает обмен текстовыми сообщениями в реальном времени).
    Сервер принимает соединения от IRC клиента с определённого порта. Когда сервер является частью IRC сети, он также поддерживает соединения с другими серверами/демонами.
    Термин ircd изначально относился к одной единственной разновидности программ, но в конечном счёте стал относиться к любой реализации IRC-демона. Однако, оригинальная версия до сих пор распространяется под тем же именем.


    Существует множество различных по уровню функциональности и стабильности IRCd:

    InspIRCd (http://inspircd.org/). IRC демон для систем Linux, BSD, Windows и Apple OS X, написанный с нуля чтобы обеспечить стабильный, современный и легкий доступ в IRC.

    beware ircd (http://ircd.bircd.org/). IRC сервер как для windows, так и для linux. Имеет небольшие проблемы со стабильностью. Прекрасно подходит для различных тестирований или для небольшого (по кол-ву предполагаемых юзеров) IRC-сервера. С большим количеством пользователей будут проблемы в виде, например, зависания процессора, сбоев и тд.

    IRCD-Hybrid (http://ircd-hybrid.com). Старейший и наиболее известный ircd. Именно этот демон используется на большинстве серверов сети EFnet. Hybrid отличается стабильностью работы и гибкостью настройки. Поддерживает IPV6, сжатие трафика и OpenSSL (только для серверов).

    IRCD-Hybrid-RU (http://hyb.net.ru). Адаптация IRCD-Hybrid под нужды российских пользователей. Теперь в демоне можно обнаружить поддержку русских символов в никах и названиях каналов, и SSL для клиентов, и SVS-команды для сервисов.

    Bahamut (http://bahamut.dal.net). Стандарт де-факто на серверах сети DALnet. Был основан на DreamForge и IRCD-Hybrid. Содержит немало функций для организации качественной IRC-сети, но мало развивается в отличие от других ircd, таких как UnrealIRCD или IRCD-Hybrid.

    ircd-RU (http://muhnet.org.ru/). Bahamut с добавленной в него поддержкой кириллицы и других кодировок в названиях ников и каналов. Активно используется в сети WeNet.

    UnrealIRCd (http://www.unrealircd.com/). Скорее всего самое распространённое и популярное IRCd. Возможности сервера очень велики. Тут и поддержка IPV6, и SVS для сервисов, и OpenSSL, как для серверов, так и для клиентских подключений (очень полезная для клиента вещь, особенно когда он работает из локальной сети). Unreal работает со множеством сервисов, команды его неисчислимы, но и у него есть один “незначительный” минус - плохо держатся соединения между серверами. Как следствие – частые split’ы.

    UltimateIRCd (http://www.shadow-realm.org/). IRC сервер, основанный на Bahamut IRCd и Hybrid IRCd/DreamForge и Unrealircd, включающий в себя основные возможности этих серверов. Несмотря на небольшой размер, обладает весьма широким набором опций, поддерживает IPv6, SSL, и многое другое.

    Sircs (скачать) Очень маленький, компактный IRC сервер. Прост в установке и конфигурировании. Предназначен, видимо, для очень маленьких сетей или для тестирования и отладки ботов (скриптов) на своём компьютере. В архиве прилагается help файл на русском языке.

    IRCd RusNet используется в одноименной сети. Можно скачать по ссылкам из:
    https://forum.antichat.ru/showpost.php?p=1747511&postcount=20

    Обзор будет дополняться.



    "Литература": http://www.nixp.ru/soft/, http://irc.xshell.org/, http://ruirc.ru/, http://bestirc.ru/
     
    _________________________
    #32 Suicide, 22 Sep 2010
    Last edited: 22 Sep 2010
    1 person likes this.
  13. begin_end

    begin_end Green member

    Joined:
    4 Jan 2007
    Messages:
    265
    Likes Received:
    638
    Reputations:
    476
    О IRC WebGate

    В данной публикации мы рассмотрим IRC веб-гейты - особенности их устройства, функционирования и изменения протокола IRC для них.

    Для тех, кто не знаком с веб-гейтами, поясним, что это такое. Веб-гейт (вебгейт, web gate, webirc) для IRC - связная межпротокольная система, своего рода посредник, поддерживающий с одной стороны (от IRCd) IRC протокол (с небольшой модификацией) и http с другой (от веб браузера пользователя).
    WEB <—> IRC

    С пользовательской стороны веб-гейт обычно реализуется на технологиях, стандартных для веб-чатов: JavaScript или AJAX, Java, Flash. Причем эти технологии используются для формирования более удобного пользовательского интерфейса веб-гейта. Интерфейс на AJAX вследствие разной поддержки браузерами оной технологии сделать максимально совместимым сложно. Однако он легче, чем Java-интерфейс, который более совместим, но, естественно, требует поддержки технологии Java в браузере. Веб-гейты на Flash крайне малочисленны, публичное ПО для них отсутствует. Теоретически можно сделать веб-гейт на одном лишь html, с минимальным пользовательским интерфейсом типа "консоль", пример наработки.

    Уязвимости обычных веб-чатов для веб-гейтов малохарактерны. Дело в том, что веб-гейт не имеет собственной системы авторизации, он не хранит и не сверяет пользовательские данные, пароли. Он лишь ретранслирует данные в IRC, приводя их к стандартнову виду согласно RFC 1459. Тем не менее иногда стоит ожидать появления активных XSS.

    Стандартный веб-гейт позволяет указать пользователю как минимум nickname. Подобные ограниченные веб-гейты применяются для местных, небольших IRC-сетей и даже отдельных каналов их сообществами, например http://webirc.antichat.net/. Как максимум - веб-гейт принимает от пользователя все даные, как IRC-клиент. Можно заходить на произвольный IRC-сервер/канал и иметь любые допустимые пользовательские данные. Пример - широко известный http://www.mibbit.com/.

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

    Для обеспечения передачи хоста пользователя в протокол IRC на серверах, поддерживающих webirc внесено изменение. Суть его в добавочной команде, сразу отсылаемой IRC серверу после успешного соединения с ним. Команда выглядит так:
    Code:
    WEBIRC [password] cgiirc [host] [IP]
    За этой командой отправляются стандартные команды USER и NICK. В команде WEBIRC host и IP - данные пользователя, которые будут указаны вместо хоста веб-гейта, а password это пароль на веб-гейт в открытом виде, прописываемый и на IRC сервере. Документация на конфигурирование под веб-гейт UnrealIRCd.

    ПО для организации IRC веб-гейтов :
    На JAVA: http://www.jwirc.com/
    На AJAX: http://cgiirc.org/


    Статья написана begin_end для ANTICHAT, 10.12.2010.
     
    _________________________
    #33 begin_end, 10 Dec 2010
    Last edited: 20 Dec 2010
  14. begin_end

    begin_end Green member

    Joined:
    4 Jan 2007
    Messages:
    265
    Likes Received:
    638
    Reputations:
    476
    О IRC Wayback Machine

    Возможно вы заметили, а если не заметили, то сейчас узнаете о одной достаточно любопытной вещи. Конечно, эта вещь относится к IRC, к RusNet и к Античату :). Это так называемая IRC Wayback Machine.

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

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

    В общем решено - сделано. Основой для подключения клиентов и сервиса-симулятора стала старая версия RusNet IRCd. Симулятор, подключаясь к ней воссоздавал картину сети, наиболее актуальную ее часть (списки серверов, сервисов, IRC операторы). Вначале предполагалось восстановить список пользователей и каналов, но такая задача чрезмерно ресурсоемка. В итоге получился внешний аналог сети RusNet с уровнем идентичности на уровне веб-wayback. В этом аналоге существует канал #antichat, на котором происходит почти полноценное воспроизведение картины, сохраненной в логе. Некоторые моменты сделать идентичными не удалось: так не получится пообщаться с пользователями (ну естественно!, хотя можно было сделать скучных ботов), в сети установлен режим read-only; хосты пользователей не были сохранены в логе - генерируются; линия времени неадекватна, участки с молчанием или отсутствием лога пропускаются. Однако в целом, по предварительным пользовательским тестам картина сети озадачивает даже самых опытных пользователей - не сразу видна искусственность происходящего.

    Проект в собранном виде, с образцами логов выложен ниже. Для работы проекта требуется установить RusNet IRCd и настроить его для линковки другого сервера (сервера-имитатора проекта, имя по умолчанию irc.rinet.ru). Проект настраивается 5-ю конфигурационными файлами:
    Ведутся логи RAW IRC и логи событий программы (с опцией автоупаковки при превышении размера). Есть минимальный крон ircscron.exe, перезапускающий сервис-имитатор в случае падения.

    Итак, балуйтесь: IRC Wayback Machine 1.0, 1.3МБ

    Действующая версия, если действует - в моей подписи.
     
    _________________________
    2 people like this.
  15. begin_end

    begin_end Green member

    Joined:
    4 Jan 2007
    Messages:
    265
    Likes Received:
    638
    Reputations:
    476
    _________________________
    #35 begin_end, 3 Nov 2012
    Last edited: 19 Jun 2021
    Found likes this.
  16. begin_end

    begin_end Green member

    Joined:
    4 Jan 2007
    Messages:
    265
    Likes Received:
    638
    Reputations:
    476
    Обнаруженные уязвимости или просто недочеты/особенности в работе сервисов

    Объект исследования:
    Сервисы ircservices-5.0.54[rusnet-1.4] build #32 от 24.12.2012


    Проверяем команды, характерные для любого IRC сервера (естественно, из тех, что позволяют удаленный запрос для себя).
    (Примечание: ircdebug – собственный nick отладочного клиента).


    Смотрим версию:

    version *.RusNet
    :*.RusNet 351 ircdebug ircservices-5.0.54[rusnet-1.4] *.RusNet :build #32, compiled п:пҐпЄ п?п?п? 24 11:54:38 MSK 2012


    Нераспознанные символы, вероятно искаженное кириллическое ДЕК (декабрь) и ПНД (понедельник).


    Пингуем:

    PING irc.run.net :*.RusNet
    :*.RusNet PONG *.RusNet ircdebug


    Пингуется успешно, сервер стандартно нам отвечает.


    Смотрим whois (whois nick nick для получения ответа именно от *.RusNet), как цель выберем nickname одного из сервисных ников, Global:

    whois Global Global
    :*.RusNet 311 ircdebug Global service RusNet * :Global Noticer
    :*.RusNet 312 ircdebug Global *.RusNet :Services for RusNet IRC Network
    :*.RusNet 313 ircdebug Global :is a network service
    :*.RusNet 318 ircdebug Global End of /WHOIS :response.


    Сравним с ответом whois об этом нике от обычного сервера:

    whois Global
    :irc.run.net 311 ircdebug Global service RusNet * :Global Noticer
    :irc.run.net 312 ircdebug Global *.RusNet :Services for RusNet IRC Network
    :irc.run.net 313 ircdebug Global :is an IRC Operator
    :irc.run.net 318 ircdebug Global :End of WHOIS list.


    Наблюдаем занятное различие в ответе 313, сервер *.RusNet говорит нам, что статус Global «network service», что не совсем обычно, впрочем, ничего особого это не означает.


    Запросим время через time и сравним с ответом прочих серверов:

    time *.RusNet
    :*.RusNet 391 ircdebug *.RusNet :Tue Dec 25 13:29:39 2012 MSK

    time irc.nsu.ru
    :irc.nsu.ru 391 ircdebug irc.nsu.ru :Tuesday December 25 2012 -- 17:30 +07:00

    time irc.anarxi.st
    :irc.anarxi.st 391 ircdebug irc.anarxi.st :Tuesday December 25 2012 -- 11:30 +01:00


    Наблюдаем отличия в формате ответа от *.RusNet.


    Проверим ответы на stats команды. Обычные сервера сети отвечают пользователю без флага «o» на stats с параметрами «c h o u» (то же и в верхнем регистре – «C H O U») и «P» (только в верхнем регистре):

    stats c *.RusNet
    :*.RusNet 219 ircdebug c :/STATS c not applicable or not supported.

    stats h *.RusNet
    :*.RusNet 219 ircdebug h :/STATS h not applicable or not supported.

    stats o *.RusNet
    :*.RusNet 219 ircdebug o :/STATS o not applicable or not supported.

    stats u *.RusNet
    :*.RusNet 242 ircdebug :Services up 1 day, 01:48:00
    :*.RusNet 250 ircdebug :Current users: 3109 (21 ops); maximum 3299
    :*.RusNet 219 ircdebug u :End of /STATS report.


    Ответы вполне логичны, хоть и необычны. В случае с «u» виден более расширенный ответ, чем от обычного сервера. При попытке получить другие stats они блокировались сервером клиента (нет флага «o», «Permission Denied- You're not an IRC operator») и не пересылались к *.RusNet. На stats в верхнем регистре, например «stats P», сервисы не отвечают, хотя эта команда к ним явно успешно посылается.


    Смотрим admin:

    admin *.RusNet

    И получаем ответ, аналогичный запросу NickServ admins от сервисного ника NickServ.



    Посмотрим info:

    Code:
    info *.RusNet
    :*.RusNet 371 ircdebug :IRC Services developed by and copyright (c) 1996-2005
    :*.RusNet 371 ircdebug :Andrew Church <[email protected]>.
    :*.RusNet 371 ircdebug :Parts written by Andrew Kempe and others.
    :*.RusNet 371 ircdebug :IRC Services may be freely redistributed under the GNU
    :*.RusNet 371 ircdebug :General Public License, version 2.
    :*.RusNet 371 ircdebug :-
    :*.RusNet 371 ircdebug :Many people have contributed to the ongoing development of
    :*.RusNet 371 ircdebug :IRC Services.  Particularly noteworthy contributers include:
    :*.RusNet 371 ircdebug :Erdem Sener
    :*.RusNet 371 ircdebug :Jose R. Holzmann
    :*.RusNet 371 ircdebug :Mauritz Antunes
    :*.RusNet 371 ircdebug :Michael Raff
    :*.RusNet 371 ircdebug :Raul S. Villarreal
    :*.RusNet 371 ircdebug :Yusuf Iskenderoglu
    :*.RusNet 371 ircdebug :A full list of contributers and their contributions can be
    :*.RusNet 371 ircdebug :found in the Changes file included in the IRC Services
    :*.RusNet 371 ircdebug :distribution archive.  Many thanks to all of them!
    :*.RusNet 371 ircdebug :-
    :*.RusNet 371 ircdebug :For more information and a list of distribution sites,
    :*.RusNet 371 ircdebug :please visit: http://www.ircservices.za.net/
    :*.RusNet 371 ircdebug :-
    :*.RusNet 371 ircdebug :Plenty of changes have been made by RusNet team to get it
    :*.RusNet 371 ircdebug :work with rusnet-ircd
    :*.RusNet 371 ircdebug :Version 5.0.54[rusnet-1.4] (build #32, compiled п?пҐпЄ п?п?п? 24 11:54:38 MSK 2012)
    :*.RusNet 371 ircdebug :On-line since Mon Dec 24 12:03:41 2012 MSK
    :*.RusNet 374 ircdebug :End of /INFO list.

    В целом, информация полезная и только.


    Запросим motd:




    Code:
    motd *.RusNet
    :*.RusNet 375 ircdebug :- *.RusNet Message of the Day
    :*.RusNet 372 ircdebug :- 
    :*.RusNet 372 ircdebug :-           *** Rusnet IRC Services ***
    :*.RusNet 372 ircdebug :- 
    :*.RusNet 372 ircdebug :-  Nicks expiration  depends on the time of your main nickname
    :*.RusNet 372 ircdebug :- registration. The longer this time the later your nick will expire
    :*.RusNet 372 ircdebug :- if you stop using it.
    :*.RusNet 372 ircdebug :- 
    :*.RusNet 372 ircdebug :- Your nick  ircdebug  will expire in  283 days, 1 hour  of non-use.
    :*.RusNet 372 ircdebug :- 
    :*.RusNet 372 ircdebug :-  Channel expiration  depends on the owner nickname expiration or
    :*.RusNet 372 ircdebug :- channel usage. If owner nickname expired and no successor has been set,
    :*.RusNet 372 ircdebug :- a channel will expire.
    :*.RusNet 372 ircdebug :- If nobody with at least AutoVoice access level joins the channel
    :*.RusNet 372 ircdebug :- within  60 days  days, the channel will expire.
    :*.RusNet 372 ircdebug :- 
    :*.RusNet 372 ircdebug :- If you need services administrator assistance type
    :*.RusNet 372 ircdebug :-  /NickServ ADMINS 
    :*.RusNet 372 ircdebug :-
    [u]*** больше ничего нет ***[/u]
    Ответ, конечно уникален, но есть мелкое несоблюдение стандартного формата ответа – нет завершающей строки «376 ircdebug :End of MOTD command».


    На команды whowas, list, pong, links, users, summon запрашиваемые с *.RusNet ответа не поступает.



    Смотрим, какими еще данными представляет себя в сети сервер сервисов, его никнеймы и особенности работы.


    На *.RusNet числятся 5 постоянных пользователей, представляющих собой собственно сервисы. Посмотрим их whois:

    whois NickServ NickServ
    :*.RusNet 311 ircdebug NickServ service RusNet * :Nickname Registration Service
    :*.RusNet 312 ircdebug NickServ *.RusNet :Services for RusNet IRC Network
    :*.RusNet 313 ircdebug NickServ :is a network service
    :*.RusNet 318 ircdebug NickServ End of /WHOIS :response.

    whois ChanServ ChanServ
    :*.RusNet 311 ircdebug ChanServ service RusNet * :Channel Registration Service
    :*.RusNet 312 ircdebug ChanServ *.RusNet :Services for RusNet IRC Network

    whois MemoServ MemoServ
    :*.RusNet 311 ircdebug MemoServ service RusNet * :Memo Server
    :*.RusNet 312 ircdebug MemoServ *.RusNet :Services for RusNet IRC Network

    whois OperServ OperServ
    :*.RusNet 311 ircdebug OperServ service RusNet * :Errare humanum est
    :*.RusNet 312 ircdebug OperServ *.RusNet :Services for RusNet IRC Network
    :*.RusNet 313 ircdebug OperServ :is a network service
    :*.RusNet 318 ircdebug OperServ End of /WHOIS :response.

    whois Global Global
    :*.RusNet 311 ircdebug Global service RusNet * :Global Noticer
    :*.RusNet 312 ircdebug Global *.RusNet :Services for RusNet IRC Network
    :*.RusNet 313 ircdebug Global :is a network service
    :*.RusNet 318 ircdebug Global End of /WHOIS :response.


    Странным образом получаем только сокращенные ответы для ChanServ и MemoServ. Также видим шутку в realname у OperServ («Errare humanum est» – «человеку свойственно ошибаться», вероятно ее вставил туда «erra» ).


    Все 5 сервисов числятся в сети IRC-операторами, но какие еще у них флаги? Узнаем, присвоен ли им +i через общий запрос who:

    who * o
    :irc.run.net 352 ircdebug * service RusNet *.RusNet NickServ H* :1 Nickname Registration Service
    :irc.run.net 352 ircdebug * service RusNet *.RusNet ChanServ H* :1 Channel Registration Service
    :irc.run.net 352 ircdebug * service RusNet *.RusNet MemoServ H* :1 Memo Server
    :irc.run.net 315 ircdebug * :End of WHO list.


    Замечаем отсутствие Global и OperServ, следовательно у них есть +i.


    Предположим, где находятся сервисы сети физически по сообщению с канала &SERVERS:

    Received SERVER *.RusNet from irc.run.net (6 [82.137.161.42] Services for RusNet IRC Network)

    Логично, что они на одном хосте с irc.run.net.


    Порой на сервере *.RusNet могут числиться иные пользователи – часть работы enforce-механизма. Это никнеймы, которые сервисы принудительно заняли, а затем освобождают (обычно). Все такие никнеймы имеют маску enforcer@RusNet, без каких-либо пользовательских флагов. С этим механизмом связана уязвимость, которая будет описана ниже. Пример ника:

    who enforcer
    :irc.run.net 352 ircdebug * enforcer RusNet *.RusNet Gas H :1 NickServ Enforcement
    :irc.run.net 315 ircdebug enforcer :End of WHO list.

    whois [Tycho] [Tycho]
    :*.RusNet 401 ircdebug [Tycho] :No such service.


    На whois в отношении таких ников сервисы отвечают некорректно, будто их нет. Скорее всего это следствие того, что whois команда на *.RusNet расчитана только на 5 вручную прописанных ников сервисов.


    Разберем обращения к сервисным никам командами privmsg или ****Serv:

    chanserv help
    nickserv help
    memoserv help
    operserv help
    global help


    На первые три без вопросов выводится справка, на operserv клиентский сервер выдает ошибку (нужен «o»), а global «Unknown command». Дело в том, что эти команды это алиасы вариантов команд «privmsg ****Serv@*.RusNet». С operserv идет проверкана флаг «o» и алиас не срабатывает, а с global алиаса нет вовсе. Обратимся же к сервисам через «privmsg ****Serv@*.RusNet»:

    privmsg chanserv@*.RusNet help
    privmsg nickserv@*.RusNet help
    privmsg memoserv@*.RusNet help

    privmsg operserv@*.RusNet help
    :OperServ!service@RusNet NOTICE ircdebug : В доступе отказано.

    privmsg global@*.RusNet help


    Первые трое также выдали стандартный ответ. OperServ лично ответил, что нет доступа, а global промолчал, хотя текст к нему должен был дойти. Вероятно, у него нет обработчика. Кстати, к другим никам в сети обратиться схожим образом не удалось. Попробуем обратится к сервисом третьим способом, который был устранен, хотя стандартен - обычный «privmsg nick».

    privmsg chanserv help
    :ChanServ!service@RusNet NOTICE ircdebug :Use /chanserv, not /MSG chanserv

    privmsg niCKserv help
    :NickServ!service@RusNet NOTICE ircdebug :Use /niCKserv, not /MSG niCKserv

    privmsg memoserv help
    *** выводится нормальная справка ***

    privmsg operserv help
    :OperServ!service@RusNet NOTICE ircdebug :В доступе отказано.

    privmsg global help
    *** ничего, как и ожидалось ***


    Итак, здесь мы обнаружили несколько вещей. Отсутствие поддержки прямой команды privmsg реализовано только у ChanServ и NickServ. Хотя функция, которая отвечает таким способом расчитана на любое имя сервиса (специально имя вводилось в разном регистре, в ответе регистр сохранился «niCKserv». MemoServ и OperServ по каким-то причинам были признаны не требующими этого исправления, что является мелким недочетом.


    Далее смотрим ограничения на длину ника, которое у серверов составляет 31 символ. У сервисов:

    nickserv link xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxs
    -NickServ- Ник должен быть не длиннее 30 символов.


    Теперь же вспомним о случае, когда ник принудительно изменяется. Вообще этот момент довольно неудачен. В большинстве сетей ник меняют на GuestNNNNN и подобные. Использовать пользовательский ник, как основу - довольно уязвимо. Это показало себя в бывшей уязвимсти, связанной с режимом +z, когда попытка сервисов сменить кириллический ник на канале с запретом кириллицы приводила к конфликту, порождающему десинк и проч.


    Описание уязвимости enforcer.
    Представим себе следующее: имеется зарегистрированный ник длиной 30 символов. Кто-то меняет свой ник на него. Через минуту ник меняется сервисами. На какой? На прежние 30 символов + 5 случайных цифр. Но сервера поддерживают 31 символ, и 4 цифры вырезаются. В итоге получаем ник в 31 символ. Но в этом случае будет всего 10 вариантов, на которые сервисы смогут сменить ник. А если в сети будет присутствовать 10 таких ников, т.е. свободных вариантов не будет? Ник все равно будет изменен на один из них. Получим 2 ника в сети одновременно. И ваш ник будет убит, с причиной коллизия. Но ситуация будет немного другой, если вы были подключены к серверу, куда прилинкованы сервисы. В этом случае для наблюдателя ваш ник все равно выйдет из сети, будет убит. Но вы по-прежнему будете подключены к серверу. В это время сервисы заведут свой ник, enforcer. И вы будете опознаваться в сети именно как он. Т.е. хост во whois, who и иных случаях будет enforcer@RusNet. Но это не все. Такой enforcer не освобождается через минуту. Единственный сервер, который будет помнить о том, что вы в сети, это сервер *.RusNet. Прочие сервера не будут считать вас в списках пользователей каналов, из которых вы вышли по killу. Если до этого у вас на канале был статус +o, вы сможете изменять режимы канала, и это увидят все пользователи. Так же вы сможете говорить на канале. Предположительно, это благодаря вашему хосту @RusNet, так как при других уязвимостях с коллизиями подобное не наблюдалось, пользователь, которого нет на канале не мог изменять его режимы, даже имея статус. Можно выйти и зайти на канал. В этом случае вы станете видны, но хост останется enforcer@RusNet.

    Решение проблемы (самое очевидное): ограничить длину регистрируемого/линкуемого ника 26 символами, хотя даже 29 уже даст хороший эффект (малореально держать 100 ников для исчерпания возможности переименования).


    Пример эксплуатации (лог канала, глазами стороннего наблюдателя):

    Code:
    [23:16] * this-is-veryvery-1ong-nickname ([email protected]) приходит в #chan
    [23:17] * ChanServ меняет режим: +o this-is-veryvery-1ong-nickname
    [23:17] -ChanServ:@#chan- OP command used for this-is-veryvery-1ong-nickname by begin_end
    [23:17] * this-is-veryvery-1ong-nickname ([email protected]) вышел (Killed (irc.meganet.ru (irc.run.net[[email protected]] <- [email protected])) )
    [23:17] * ChanServ меняет режим: -o begin_end
    [23:19] * this-is-veryvery-1ong-nickname меняет режим: +t+oh Ded_Gomodril sight
    [23:21] * this-is-veryvery-1ong-nickname меняет режим: -t
    [23:21] <this-is-veryvery-1ong-nickname> test text
    [23:21] * this-is-veryvery-1ong-nickname (enforcer@RusNet) приходит в #chan
    [23:22] * this-is-veryvery-1ong-nickname меняет ник на ircdbg
    [23:22] * ircdbg (enforcer@RusNet) покидает #chan
    [23:22] * ircdbg (enforcer@RusNet) приходит в #chan
    [23:22] * ircdbg (enforcer@RusNet) вышел ("test end" )

    Запросы whois на этот ник:

    whois this-is-veryvery-1ong-nickname
    :irc.run.net 311 ircdebug this-is-veryvery-1ong-nickname enforcer RusNet * :NickServ Enforcement
    :irc.run.net 312 ircdebug this-is-veryvery-1ong-nickname *.RusNet :Services for RusNet IRC Network
    :irc.run.net 318 ircdebug this-is-veryvery-1ong-nickname :End of WHOIS list.

    whois this-is-veryvery-1ong-nickname this-is-veryvery-1ong-nickname
    :*.RusNet 401 ircdebug this-is-veryvery-1ong-nickname :No such service.


    Критическая уязвимость, связанная с обработкой списков сервисами (ChanServ, MemoServ): полностью устранена с 24 декабря, проверено. Функциональность сервисов осталась в полном объёме.


    О UTF-8...
    Вдобавок хорошо заметить об отсутствии поддержки UTF-8 сервисами, введенной в новой версии ircd 2.0.5. Сервисы неспособны получать UTF-8 текст, и хранить/обрабатывать его любым способом. Главная проблема кроется в неподдержке хостов пользователей, которые прорезольвились в имена в UTF-8. Такие хосты видны для сервисов, но все смиволы в них заменяются на символы "?". Следовательно, сервисы не способны применять в их отношении такие команды: ChanServ AKICK #Chan, ChanServ CLEAR #chan [BANS,MODES], ChanServ UNBAN #Chan, NickServ ACCESS. Еще, если глобальные E-LINE, R-LINE, K-LINE проставляются посредством сервисов, то проблемы будут даже в таких случаях.
    Идентичная проблема наблюдается у старой версии ircd. Увы, в данном случае предоставляется широкий спектр возможностей потенциальным нарушителям.

    Этот перечень будет пополняться по мере возможности...

    От 25 Dec 2012 (C) begin_end
     
    _________________________
    CyberTro1n and Found like this.
  17. begin_end

    begin_end Green member

    Joined:
    4 Jan 2007
    Messages:
    265
    Likes Received:
    638
    Reputations:
    476
    _________________________
    #37 begin_end, 18 Jan 2014
    Last edited: 19 Jun 2021
    Found and VY_CMa like this.
  18. begin_end

    begin_end Green member

    Joined:
    4 Jan 2007
    Messages:
    265
    Likes Received:
    638
    Reputations:
    476
    _________________________
    #38 begin_end, 6 Dec 2015
    Last edited: 19 Jun 2021
    Found likes this.
  19. begin_end

    begin_end Green member

    Joined:
    4 Jan 2007
    Messages:
    265
    Likes Received:
    638
    Reputations:
    476
    _________________________
    #39 begin_end, 19 Jun 2021
    Last edited: 19 Jun 2021
    Suicide, CyberTro1n and K800 like this.
  20. CyberTro1n

    CyberTro1n Elder - Старейшина

    Joined:
    20 Feb 2016
    Messages:
    1,077
    Likes Received:
    855
    Reputations:
    14
    Логично. Поколение которое не познало(максимум кто то слышал) о чатах...
    Короче, скоро их припишут к социальным программам истории развития