Опубликован: 20.02.2007 | Доступ: платный | Студентов: 76 / 17 | Оценка: 4.42 / 4.03 | Длительность: 40:03:00
Лекция 1:

NETCAT и CRYPTCAT

Аннотация: Лекция посвящена двум многофункциональным инструментам - Netcat и Cryptcat. В тексте содержится множество примеров их использования, даётся подробное описание многочисленных опций программ

К вашим услугам изобилие средств обеспечения безопасности сети и углубленного анализа. В большинстве случаев, каждый из инструментов предназначен для определенных целей. Некоторые программы накапливают информацию о сети и присутствующих в сети компьютерах. Другие используются непосредственно для анализа уязвимости. Тем не менее, большинство полезных и часто используемых средств обычно являются многофункциональными и подходят для использования в соответствии с несколькими различными сценариями. NETCAT и CRYPTCAT относятся именно к таким средствам.

NETCAT

Netcat устанавливает и поддерживает TCP (Transmission Control Protocol) и UDP (User Datagram Protocol) соединения, читает и записывает данные по этим соединениям до тех пор, пока они не будут закрыты. Это основа работы сетевой подсистемы TCP/UDP, которая позволяет пользователям взаимодействовать по сети с помощью команд или скриптов с сетевыми приложениями и службами на прикладном уровне. Программа дает возможность увидеть пакеты TCP и UDP данных до того, как они будут упакованы в соответствии с протоколами более высокого уровня, такими как FTP (File Transfer Protocol), SMTP (Simple Mail Transfer Protocol), или HTTP (Hypertext Transfer Protocol).

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

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

Реализация

Поскольку у Netcat так много способов применения, его часто сравнивают со "Швейцарским армейским ножом" для работы с TCP/IP и UDP протоколами. Прежде, чем вы сможете изучить, как пользоваться этой программой, придется загрузить и установить ее.

Загрузка

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

Официальный сайт, с которого можно загрузить Netcat как для Unix, так и для Windows - http://www.atstake.com//.

Установка

Мы не будем углубляться в процедуры загрузки, распаковки и компиляции большинства программ, обсуждаемых в этой книге. Но так как Netcat - первая программа, о которой мы говорим, и поскольку у него есть несколько интересных опций, определяемых на этапе компиляции, будет не лишним углубиться в некоторые подробности.

Скопируйте с упомянутого сайта файл nc110.tgz. Затем распакуйте его.

[root@originic tmp]# ls
nc110.tgz
[root@originic tmp]# mkdir nc
[root@originic tmp]# cd nc
[root@originic tmp]# tar zxf ../nc110.tgz
[root@originic tmp]#
Примечание. В отличие от большинства тарболов (архивов, созданных с использованием утилиты-архиватора tar в Unix системах), Netcat при распаковке не создает собственной директории. Сейчас эти советы могут выглядеть банально, но если все ваши архивы и поддиректории загружены в одну директорию, и вы обнаружите, что Netcat разместил все свои файлы в корне, то понадобится некоторое время чтобы вычистить их оттуда.

Теперь вы готовы начать компиляцию. Обратим внимание на две важные опции, задаваемые перед компиляцией.

  • GAPING_SECURITY_HOLE. Как видно из названия, эта опция может сделать Netcat опасным в чужих руках, но она также делает его весьма мощным инструментом. Если эта опция включена, Netcat сам может запускать внешние программы. Ввод/вывод этих программ в этом случае будет проходить через конвейер данных самого Netcat. Тем самым Netcat ведет себя как функционально усеченный демон inetd, давая вам возможность выполнять удаленные команды (вроде запуска оболочки shell ) всего лишь установив TCP или UDP соединение с контролируемым портом. Эта опция отключена по умолчанию, поскольку весьма велика опасность ее неверного использования или ошибок в конфигурировании.
  • TELNET. Обычно, если вы используете Netcat для соединения с telnet-сервером (используя команду nc servername 23 ), вы уйдете не слишком далеко. Telnet-серверы и клиенты согласовывают некоторые параметры еще до того, как появляется приглашение ввести идентификатор ( login ). Если включить при компиляции эту опцию, то Netcat сможет реагировать на запросы Telnet-сервера (отвечая на каждый из них no), что даст вам возможность дойти до ввода идентификатора. Без этого, если вы захотите получить что-нибудь путное, используя Netcat и telnet, вам понадобится написать собственный скрипт для реализации соединения с telnet-сервером. Возможно, важность этой опции пока вам не ясна, но вы поймете, почему мы обращаем на это внимание, как только посмотрите некоторые примеры приведенные далее в этой лекции.

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

# makefile for netcat, based off same ol' "generic makefile".
# Usually do "make systape" - if your systipe isn't defined, try "generic"
# or something else that most closely mathes, see where it goes wrong, fix
# it, and MAIL THE DIFFS back to Hobbit
### PREDEFINES
# DEFAULT possibly overridden by <systype> recursive call:
# pic gcc if you'd rather, and/or do -g instead -O if debugging
# DFLAGS = -DTEST -DDEBUG
DFLAGS = -DGAPING_SECURITY_HOLE -DTELNET
CFLAGS = -O

Вы можете включить одну или обе эти опции в строку DFLAGS.

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

Теперь вы готовы к компиляции. Просто наберите в командной строке make systemtype, где systemtype - это название Unix-системы, с которой вы работаете (это может быть linux, freebsd, solaris и так далее). Когда процесс закончится, вы обнаружите небольшой исполняемый файл "nc" в текущей директории.

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