«Техника сетевых атак»

Вид материалаКраткое содержание

Содержание


Протокол NNTP
Врезка «информация»
Врезка «информация»
Врезка «информация»
Network News Transport Protocol
Врезка «для начинающих»
Рисунок 012 Подключение к NNTP-серверу
201 news.rnd.runnet.ru InterNetNews NNRP server INN 2.2 21-Jan-1999 ready (no posting
Врезка «замечание»
Врезка «для начинающих»
Врезка «для начинающих»
На самом же деле, как будет показано в следующей главе «Атака на NNTP-сервер», в большинстве случаев это ограничение можно с лег
GROUP akr.internet
Врезка «замечание»
Врезка «замечание»
Большинство реализаций NNTP протокола поддерживают команду “HELP”, выводящую список доступных команд и иногда подробности исполь
Подобный материал:
1   ...   26   27   28   29   30   31   32   33   ...   51

Протокол NNTP




  • В этой главе:
  • Краткая история возникновения NNTP
  • Организация конференций
  • Синхронизация сообщений
  • Чтение сообщений
  • Указатель на текущее сообщение и его перемещение
  • Создание новых сообщений
  • Обязательные и необязательные поля заголовка


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

Врезка «информация»


USENET: /yoos'net/ or /yooz'net/ [from `Users' Network'] n. A distributed {bboard} (bulletin board) system supported mainly by UNIX machines. Originally implemented in 1979--1980 by Steve Bellovin, Jim Ellis, Tom Truscott, and Steve Daniel at Duke University, it has swiftly grown to become international in scope and is now probably the largest decentralized information utility in existence. As of early 1993, it hosts well over 1200 {newsgroup}s and an average of 40 megabytes (the equivalent of several thousand paper pages) of new technical articles, news, discussion, chatter, and {flamage} every day.

USENET [от ‘User’ Network’], сущ. Распределенная система ‘электронных досок объявлений’ (смотри bboard), поддерживая в основном машинами под управлением UNIX. Первые шаги в этом направлении были сделаны в 1979 – 80 годах Стивом Белловин, Джимом Эллисом, Томом Траскоттом и Стривом Даниэлем в Университете Дьюка, но вскоре система выросла до невероятных размеров и стала международной. Возможно на сегодняшний день (1993 год) это самая большая децентрализованная информационная система во всем мире, поддерживающая около 1200 телеконференций (смотри newsgroup), и ежедневный трафик USENET [новые статьи по технике, дискуссии, новости, болтовня и ругань (смотри flamage)] в среднем составляет около 40 мегабайт, что в напечатанном виде составит ~20 000 страниц.

(Выдержка из «Словаря Жаргона» Эрика Раймонда)


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

Врезка «информация» *


Любопытно, но длительное время адрес all@zmail.ru был предназначен для рассылки сообщений всем абонентам этой почтовой системы. Дырка впервые была использована «доброжелателями» в Новогоднюю Ночь, поздравивших окружающих с этим «замечательным» праздником. В ответ посыпались оскорбления, и стихийно возникло некое подобие конференции, конец которой был положен администраторами сервера. А жаль…

Врезка «информация» *


На заре развития Internet, когда преобладали операционные системы UNIX, для организации конференций (да, впрочем, и электронной почты) часто использовался протокол UUCP (UNIX to UNIX Copy). Местами он чудом сохранился до сих пор, но большинство узлов перешло на более шустрый и гибкий NNTP протокол.


Таким протоколом стал NNTP ( Network News Transport Protocol), представляющий собой нечто промежуточное между IMAP4 и POP3 протоколами. Независимо от организации групп новостей, все они связаны в единую иерархическую структуру. Образно можно уподобить конференции дереву папок, а сообщения – хранящихся в них файлам. Фактически можно рассматривать каждую группу новостей, как папку IMAP4, со своими собственными атрибутами.

Однако протокол NNTP содержит много нововведений, не встречавшихся ранее в почтовых системах. Одна из решаемых им проблем – обеспечение синхронизации сообщений. Тысячи NNTP серверов, порой даже не подозревающих о существовании друг друга, должны иметь идентичное содержимое. На какой бы из них не поступило новое сообщение, оно должно быть разослано всем остальным серверам.

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

Врезка «для начинающих»


Бесплатных news-серверов много, но хороших среди них очень мало. Чаще всего конференции открыты только на чтение. Посылка сообщений (если даже она и разрешена) обычно никуда не уходит дальше этого сервера. Поэтому ничего не остается, кроме как воспользоваться услугами, предоставляемыми собственным Internet-провайдером.

К счастью, существует масса специальных программ для поиска общедоступных NNTP-серверов. Неплохо себя зарекомендовал “New Hunter” (ссылка скрыта) механизм работы которой будет рассмотрен в «дополнении».


Для подключения к NNTP серверу необходимо установить с ним TCP соединение по сто девятнадцатому порту.




Рисунок 012 Подключение к NNTP-серверу



Если соединение установлено успешно, через секунду на экране telnet клиента должно появится приглашение приблизительного вида:

  • 201 news.rnd.runnet.ru InterNetNews NNRP server INN 2.2 21-Jan-1999 ready (no posting).


Код ответа 201 (в тексте он выделен жирным шрифтом) обозначает, что сервер не позволяет клиенту создавать новые сообщения (иными словами постинг232 запрещен). В том случае, когда постинг разрешен, сервер возвращает код 200 и строку наподобие «posting ok».

Врезка «замечание»


Полное описание кодов возврата содержится в RFC 977, и поэтому не приводится в данной книге.


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

  • LIST
  • 215 Newsgroups in form "group high low flags".
  • control 0004971978 0004971979 n
  • junk 0000000001 0000000002 n
  • test 0000010149 0000010150 y
  • a.bsu.programming 0000000718 0000000715 y
  • a.bsu.religion 0000009622 0000009613 y
  • a.bsu.talk 0000000190 0000000184 y
  • aaa.inu-chan 0000000000 0000000001 m
  • ab.arnet 0000000045 0000000046 m
  • ab.general 0000001678 0000001677 y
  • akr.internet 0000000379 0000000375 y
  • ...


Пара чисел, следующих за именем группы, указывает номера первого и последнего из доступных сообщений.

Врезка «для начинающих» *


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

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

Большой популярностью пользуется служба «Deja News» (ссылка скрыта), позволяющая не только читать, но отправлять сообщения в конференции.


Флаг, расположенный в конце каждой строки, может принимать один из трех следующих значений: “y”, “n” и “m”. Значение “y” говорит о том, что создание новых сообщений в этой конференции разрешено; “n” запрещает такую операцию и “m” обозначает модерируемою конференцию.

Врезка «для начинающих»


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

На самом же деле, как будет показано в следующей главе «Атака на NNTP-сервер», в большинстве случаев это ограничение можно с легкостью обойти.


Для чтения сообщений из группы ее необходимо предварительно выбрать командой “GROUP”, например, так:

  • GROUP akr.internet
  • 211 5 375 379 akr.internet


Код 211 сигнализирует об успешном завершении операции (в случае отсутствия запрошенной группы возвращается код 411), за ним следует число хранящихся на сервере сообщений, с номерами первого и последнего из них.

Одним из способов чтения сообщений заключается в использовании команды “ARTICLE”, принимающей в качестве аргумента либо уникальный идентификатор “Message Id”, либо порядковый номер сообщения.

Врезка «замечание»


Наряду с «ARTICLE» существуют команды «BODY» и «HEAD». Последняя из них возвращает заголовок сообщения; “BODY” – тело, а “ARTICLE”, эквивалентно HEAD+BODY.


Пример, приведенный ниже, демонстрирует получение сообщения, путем использование команды ARTICLE:

  • ARTICLE 375
  • 220 375 article
  • From: "Chris Robins"
  • Newsgroups: akr.internet,alt.best.of.internet,alt.community.local-money,alt.comp
  • References: <01bf95ce$af112040$LocalHost@lislen>
  • Subject: Easy Money!
  • X-Priority: 3
  • X-MSMail-Priority: Normal
  • X-Newsreader: Microsoft Outlook Express 5.00.2919.6600
  • Message-ID:
  • Date: Sun, 26 Mar 2000 09:21:28 -0500
  • NNTP-Posting-Host: 209.47.93.156
  • X-Trace: nnrp1.uunet.ca 954080409 209.47.93.156 (Sun, 26 Mar 2000 09:20:09 EST)
  • NNTP-Posting-Date: Sun, 26 Mar 2000 09:20:09 EST
  • Xref: news.rnd.runnet.ru akr.internet:375

  • Interested in learning about how you could ear money just for being online,
  • then go to my website at:
  • oney.f2s.com/makemoney.php

  • If you don't believe me then view my checks at:
  • oney.f2s.com/checks.php
  • .


Если вызвать команду “ARTICLE” без аргументов, она вернет текущее сообщение. Две команды, “NEXT” и “LAST” служат для перемещения маркера текущего сообщения на одну позицию вперед и назад соответственно. Поэтому, можно не задумываться о номерах сообщений и читать их последовательно одно за другим, пока не надоест.

Например, так:

  • NEXT
  • 223 376 Article retrieved; request text separately.


Команда NEXT на единицу увеличила номер текущего сообщения. Но как быть, если хочется прыгнуть сразу в середину списка? Не вызывать же ради этого “NEXT” бесчисленное множество раз?! Конечно же, нет! Достаточно воспользоваться командой “STAT”, перемещающий указатель на любую произвольную позицию.

Следующий эксперимент демонстрирует создание нового сообщения. Для этого потребуется сервер, разрешающий постинг хотя бы в одну конференцию. Лучше всего воспользоваться специально созданной для подобных целей группой, наподобие “test”.

Простейший способ создания сообщения заключается в использовании команды «POST», вызываемой без аргументов. Например:

  • Post
  • 340 Ok


Сервер ожидает текста сообщения, завершаемого (как и в протоколе POP3), последовательностью «.»233. Первыми идут поля заголовка234, которые делятся на обязательные и на необязательные.

К обязательным полям относятся:

  • newsgroups : одна (или больше) имен групп, куда должно быть отправлено сообщение
  • from :адрес отправителя сообщения
  • subject :тема сообщения


Если хотя бы одно обязательное поле отсутствует, сервер возвращает ошибку и блокирует отправление.

Например:

  • post
  • 340 Ok
  • from:
  • Subject:hello

  • hello
  • .
  • 441 Required "Newsgroups" header is missing


После добавления недостающего поля повторная операция отправки сообщения должна завершиться успешно.

  • post
  • 340 Ok
  • newsgroups:test.test
  • from:
  • subject:helo

  • Helo!
  • .
  • 240 Article posted


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

  • GROUP test.test
  • 211 1 121 121 test.test
  • ARTICLE
  • 220 121 <8bqntq$o2j$4@jumbo.demos.su> article
  • Path: demos2!demos!dnews-server
  • From:
  • Newsgroups: test.test
  • Subject: helo
  • Date: 28 Mar 2000 16:51:06 GMT
  • Lines: 1
  • Message-ID: <8bqntq$o2j$4@jumbo.demos.su>
  • NNTP-Posting-Host: ppp-02.krintel.ru
  • X-Trace: jumbo.demos.su 954262266 24659 195.161.41.226 (28 Mar 2000 16:51:06 GMT
  • )
  • NNTP-Posting-Date: 28 Mar 2000 16:51:06 GMT
  • Xref: demos2 test.test:121

  • Helo!
  • .


Выделенная жирным шрифтом строка содержит адрес отправителя сообщения, доступный для всеобщего обозрения. Любой из подписчиков конференции (количество которых порой доходит до десятков тысяч) может применить на обладателе этого адреса одну из многочисленных атакующих программ… О том как отправить сообщение и при этом суметь остаться анонимном рассказывается в главе «Атака на NNTP сервер».

Врезка «замечание»


Подробное изложение протокола NNTP и связанных с ним вопросов находится в технической документации RFC 1036, RFC 850 и RFC 977.

Врезка «для начинающих»


Большинство реализаций NNTP протокола поддерживают команду “HELP”, выводящую список доступных команд и иногда подробности использования каждой из них.


Команда “quit” завершает сеанс работы с сервером и разрывает соединение. Например, так:

  • Quit
  • 205 .