Информационная безопасность

 

Введение


В современном мире происходит стремительное развитие компьютерной техники и компьютерных технологий. Важное место среди них занимают технологии вычислительных и информационных сетей. Создание и развитие Internet и World Wide Web привело к новому этапу развития информационного общества. Но, с другой стороны, развитие современных сетевых информационных технологий привело к росту числа компьютерных преступлений и связанных с ними хищений информации, а также материальных потерь.

Интернет и World Wide Web совместно открыли новую дверь, через которую хакеры могут удалённо атаковать домашние компьютеры и корпоративные сети и исследовать, копировать или уничтожать находящиеся в них данные. По оценкам экспертов, до 85% сетей, подключённых к Интернету, уязвимы для таких атак.

По результатам одного исследования, посвященного вопросам компьютерных преступлений, около 58% опрошенных пострадали от компьютерных взломов за последний год. Примерно 18% опрошенных из этого числа заявляют, что потеряли более миллиона долларов в ходе нападений, более 66% потерпели убытки в размере 50 тыс. долларов. Свыше 22% атак были нацелены на промышленные секреты или документы, представляющие интерес прежде всего для конкурентов.

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

Информационная безопасность обеспечивается комплексом социально-правовых, морально-этических норм, а также техническими средствами. На техническом уровне для обеспечения защиты сетевых систем, безопасности удалённого доступа и создания надёжных политик безопасности применяются такие средства защиты локальных и корпоративных сетей, как межсетевые экраны (брандмауэры, файерволы, прокси-сервера) (МСЭ), а также более современные средства - системы обнаружения атак (СОА).

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

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



1. Задача сетевой защиты и методы её решения


1.1 Брандмауэр


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

Как правило, брандмауэры функционируют на какой-либо UNIX платформе - чаще всего это BSDI, SunOS, AIX, IRIX и т.д., реже - DOS, VMS, WNT, Windows NT. Из аппаратных платформ встречаются INTEL, Sun SPARC, RS6000, Alpha, HP PA-RISC, семейство RISC процессоров R4400-R5000. Помимо Ethernet, многие брандмауэры поддерживают FDDI, Token Ring, 100Base-T, 100VG-AnyLan, различные серийные устройства. Требования к оперативной памяти и объему жесткого диска зависят от количества машин в защищаемом сегменте сети.

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

Все брандмауэры можно разделить на три типа:

1.Фильтры пакетов (packet filter) - простые и кумулятивные;

2.Прокси-брандмауэры и сервера уровня соединения (circuit gateways)

.Шлюзы приложений и сервера прикладного уровня (application gateways).

Все три категории могут одновременно встретиться в одном брандмауэре.


1.2 Фильтры пакетов - простые и кумулятивные


Фильтр пакетов - это узел или маршрутизатор, который проверяет каждый пакет на соответствие правилам политики безопасности перед его отправкой в сеть и/ или узел назначения через соответствующий сетевой интерфейс.

Фильтры пакетов принимают решение о том, пропускать пакет или отбросить, просматривая IP-адреса, флаги или номера TCP портов в заголовке этого пакета. IP-адрес и номер порта - это информация сетевого и транспортного уровней соответственно, но пакетные фильтры используют и информацию прикладного уровня, т.к. все стандартные сервисы в TCP/IP ассоциируются с определенным номером порта.

Для описания правил прохождения пакетов составляются таблицы типа:


Действиетип пакетаадрес источн.порт источн.адрес назнач.порт назнач.флаги

Поле «действие» может принимать значения пропустить или отбросить.

Тип пакета - TCP, UDP или ICMP. Флаги - флаги из заголовка IP-пакета.

Поля «порт источника» и «порт назначения» имеют смысл только для TCP и UDP пакетов.

В первую очередь, фильтры отбрасывают пакеты ICMP, UDP и входящие пакеты SYN/ACK, которые инициируют внутренний сеанс связи. Простые фильтры могут только фильтровать пакеты от узла-отправителя, узла-получателя и от порта-получателя. Более интеллектуальная разновидность фильтров может работать, основываясь на информации о входящем интерфейсе, порте-отправителе и даже анализировать состояния флагов заголовков. В качестве примера фильтров такого типа можно привести простые маршрутизаторы, такие как маршрутизаторы доступа любой серии фирмы Cisco или даже UNIX-станции с установленным демоном-брандмауэром. Если маршрутизатор сконфигурирован для работы с конкретным протоколом, внешние узлы могут использовать данный протокол для установления прямого соединения с внутренними узлами. Большинство маршрутизаторов могут формировать журнал аудита и генерировать сигналы тревоги при обнаружении враждебных действий.

Главным недостатком пакетных фильтров является сложность управления: когда правила становятся достаточно сложными, можно ненароком породить конфликтующие политики безопасности или пропустить нежелательные пакеты. Хакеры прекрасно осведомлены о многочисленных дырах в защите при использовании фильтров. Тем не менее применять фильтры пакетов имеет смысл, главным образом, на передней линии обороны перед брандмауэрами. В настоящее время многие брандмауэры содержат фильтры пакетов, тесно интегрированные в их ядро или в сетевую операционную систему (Internetworking Operating System, IOS).

Кумулятивные фильтры являются усовершенствованными версиями фильтров пакетов, исполняют те же самые функции, что и их предшественники, дополнительно отслеживая информацию о состоянии пакетов (такую, как номер последовательности в протоколе TCP). По существу, кумулятивные фильтры отслеживают информацию о сеансах связи. В качестве примера можно привести брандмауэры PIX фирмы Cisco, Fire Wall-1 фирмы Check Point Software и брандмауэр фирмы Watchguard.

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


1.3 Прокси-брандмауэры и сервера уровня соединения


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

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

Сервер уровня соединения представляет из себя транслятор TCP соединения. Пользователь образует соединение с определенным портом на брандмауэре, после чего последний производит соединение с местом назначения по другую сторону от брандмауэра. Во время сеанса этот транслятор копирует байты в обоих направлениях, действуя как провод.

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

Такой тип сервера позволяет создавать транслятор для любого определенного пользователем сервиса, базирующегося на TCP, осуществлять контроль доступа к этому сервису, сбор статистики по его использованию.


1.4 Шлюзы приложений и сервера прикладного уровня


Шлюзы приложений являются усиленной версией прокси-брандмауэров и, как и в случае прокси-брандмауэров, каждое приложение должно быть специально инсталлировано для работы через них. Разница заключается в том, что шлюзы приложений содержат встроенные модули, которые проверяют каждый запрос и ответ. Например, только загружаемые данные могут быть исходящим потоком по протоколу FTP. Шлюзы приложений просматривают все данные на уровне приложения стека протоколов и являются посредниками для внешних пользователей, перехватывая пакеты и пересылая их приложению. Таким образом, внешние пользователи не смогут установить связь напрямую в защищенной зоне. То, что брандмауэр фактически просматривает всю информацию приложения, означает, что он различает такие приложения, как FTP и SMTP. Вследствие этого шлюзы приложений обеспечивают защиту любого приложения, которое они поддерживают.

Брандмауэры с серверами прикладного уровня используют сервера конкретных сервисов (proxy server) - TELNET, FTP и т.д., запускаемые на брандмауэре и пропускающие через себя весь трафик, относящийся к данному сервису. Таким образом, между клиентом и сервером образуются два соединения: от клиента до брандмауэра и от брандмауэра до места назначения. Полный набор поддерживаемых серверов различается для каждого конкретного брандмауэра.

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

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

·название сервиса,

·имя пользователя,

·допустимый временной диапазон использования сервиса,

·компьютеры, с которых можно пользоваться сервисом,

·схемы аутентификации.

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


.5 Системы обнаружения компьютерных атак (СОА)


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

Технология обнаружения атак должна решать следующие задачи:

·Распознавание известных атак и предупреждение о них соответствующего персонала.

·«Понимание» зачастую непонятных источников информации об атаках.

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

·Возможность управления средствами защиты не-экспертами в области безопасности.

·Контроль всех действий субъектов корпоративной сети (пользователей, программ, процессов и т.д.).

Очень часто системы обнаружения атак могут выполнять функции, существенно расширяющие спектр их применения. Например:

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

·Контроль узлов сети с неустановленными обновлениями или узлов с устаревшим программным обеспечением.

·Блокирование и контроль доступа к определенным узлам Internet. Хотя системам обнаружения атак далеко до межсетевых экранов и систем контроля доступа к различным URL, например, WEBsweeper, они могут выполнять частичный контроль и блокирование доступа некоторых пользователей корпоративной сети к отдельным ресурсам Internet, например, к Web-серверам порнографического содержания. Это бывает необходимо тогда, когда в организации нет денег на приобретение и межсетевого экрана и системы обнаружение атак, и функции МСЭ разносятся между системой обнаружения атак, маршрутизатором и proxy-сервером. Кроме того, системы обнаружения атак могут контролировать доступ сотрудников к серверам на основе ключевых слов. Например, sex, job, crack и т.д.

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


1.6 Классификация систем обнаружения атак (СОА)


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

1.host-based, то есть обнаруживающие атаки, направленные на конкретный узел сети,

2.network-based, то есть обнаруживающие атаки, направленные на всю сеть или сегмент сети.

Системы обнаружения атак, контролирующие отдельный компьютер, как правило, собирают и анализируют информацию из журналов регистрации операционной системы и различных приложений (Web-сервер, СУБД и т.д.). По такому принципу функционирует RealSecure OS Sensor. Однако в последнее время стали получать распространение системы, тесно интегрированные с ядром ОС, тем самым, предоставляя более эффективный способ обнаружения нарушений политики безопасности. Причем такая интеграция может быть реализовано двояко. Во-первых, могут контролироваться все системные вызовы ОС (так работает Entercept) или весь входящий / исходящий сетевой трафик (так работает RealSecure Server Sensor). В последнем случае система обнаружения атак захватывает весь сетевой трафик напрямую с сетевой карты, минуя операционную систему, что позволяет уменьшить зависимость от нее и тем самым повысить защищенность системы обнаружения атак.

Системы обнаружения атак уровня сети собирают информацию из самой сети, то есть из сетевого трафика. Выполняться эти системы могут на обычных компьютерах (например, RealSecure Network Sensor), на специализированных компьютерах (например, RealSecure for Nokia или Cisco Secure IDS 4210 и 4230) или интегрированы в маршрутизаторы или коммутаторы (например, CiscoSecure IOS Integrated Software или Cisco Catalyst 6000 IDS Module). В первых двух случаях анализируемая информация собирается посредством захвата и анализа пакетов, используя сетевые интерфейсы в беспорядочном (promiscuous) режиме. В последнем случае захват трафика осуществляется с шины сетевого оборудования.

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

Практически все системы обнаружения атак основаны на сигнатурном подходе.


1.7 Варианты реакций на обнаруженную атаку


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

·Уведомление на консоль (включая резервную) системы обнаружения атак или на консоль интегрированной системы (например, межсетевого экрана).

·Звуковое оповещение об атаке.

·Генерация управляющих последовательностей SNMP для систем сетевого управления.

·Генерация сообщения об атаке по электронной почте.

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

·Обязательная регистрация обнаруживаемых событий. В качестве журнала регистрации могут выступать:

oтекстовый файл,

oсистемный журнал (например, в системе Cisco Secure Integrated Software),

oтекстовый файл специального формата (например, в системе Snort),

oлокальная база данных MS Access,

oSQL-база данных (например, в системе RealSecure).

Надо только учитывать, что объемы регистрируемой информации требуют, как правило, SQL-базу - MS SQL или Oracle.

·Трассировка событий (event trace), т.е. запись их в той последовательности и с той скоростью, с которыми их реализовывал злоумышленник. Затем администратор в любое заданное время может прокрутить (replay или playback) необходимую последовательность событий с заданной скоростью (в реальном режиме времени, с ускорением или замедлением), чтобы проанализировать деятельность злоумышленника. Это позволит понять его квалификацию, используемые средства атаки и т.д.

·Прерывание действий атакующего, т.е. завершение соединения. Это можно сделать, как:

oперехват соединения (session hijacking) и посылка пакета с установленным флагом RST обоим участникам сетевого соединения от имени каждого из них (в системе обнаружения атак, функционирующей на уровне сети);

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

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

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


1.8 Характеристики средств сетевой защиты


Ряд брандмауэров позволяет также организовывать виртуальные корпоративные сети (Virtual Private Network), т.е. объединить несколько локальных сетей, включенных в INTERNET в одну виртуальную сеть. VPN позволяют организовать прозрачное для пользователей соединение локальных сетей, сохраняя секретность и целостность передаваемой информации с помощью шифрования. При этом при передаче по INTERNET шифруются не только данные пользователя, но и сетевая информация - сетевые адреса, номера портов и т.д.

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

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

Перечислим некоторые достоинства и недостатки рассмотренных средств сетевой защиты.

Достоинства пакетных фильтров:

·относительно невысокая стоимость;

·гибкость в определении правил фильтрации;

·небольшая задержка при прохождении пакетов.

Недостатки пакетных фильтров:

·локальная сеть видна (маршрутизируется) из INTERNET;

·правила фильтрации пакетов трудны в описании, требуются очень хорошие знания технологий TCP и UDP;

·при нарушении работоспособности брандмауэра все компьютеры за ним становятся полностью незащищенными либо недоступными;

·аутентификацию с использованием IP-адреса можно обмануть использованием IP-спуфинга (атакующая система выдает себя за другую, используя ее IP-адрес);

·отсутствует аутентификация на пользовательском уровне.

Достоинства серверов прикладного уровня:

·локальная сеть невидима из INTERNET;

·при нарушении работоспособности брандмауэра пакеты перестают проходить через брандмауэр, тем самым не возникает угрозы для защищаемых им машин;

·защита на уровне приложений позволяет осуществлять большое количество дополнительных проверок, снижая тем самым вероятность взлома с использованием дыр в программном обеспечении;

·аутентификация на пользовательском уровне;

·может быть реализована система немедленного предупреждения о попытке взлома.

Недостатки серверов прикладного уровня

·более высокая, чем для пакетных фильтров стоимость;

·невозможность использовании протоколов RPC и UDP;

·производительность ниже, чем для пакетных фильтров.

Достоинства систем обнаружения атак:

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

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

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

Системы, функционирующие на уровне сети, обнаруживают подозрительные события и атаки по мере того, как они происходят, и поэтому обеспечивают гораздо более быстрое уведомление и реагирование, чем системы, анализирующие журналы регистрации. Например, хакер, инициирующий сетевую атаку типа «отказ в обслуживании» на основе протокола TCP, может быть остановлен системой обнаружения атак сетевого уровня, посылающей TCP-пакет с установленным флагом Reset в заголовке для завершения соединения с атакующим узлом, прежде чем атака вызовет разрушения или повреждения атакуемого узла. Системы анализа журналов регистрации не распознают атаки до момента соответствующей записи в журнал и предпринимают ответные действия уже после того, как была сделана запись. К этому моменту наиболее важные системы или ресурсы уже могут быть скомпрометированы или нарушена работоспособность системы, запускающей систему обнаружения атак на уровне узла. Уведомление в реальном масштабе времени позволяет быстро среагировать в соответствии с предварительно определенными параметрами. Диапазон этих реакций изменяется от разрешения проникновения в режиме наблюдения для того, чтобы собрать информацию об атаке и атакующем, до немедленного завершения атаки.

И, наконец, системы обнаружения атак, функционирующие на сетевом уровне, не зависят от операционных систем, установленных в корпоративной сети, так как они оперируют сетевым трафиком, которым обмениваются все узлы в корпоративной сети. Системе обнаружения атак все равно, какая ОС сгенерировала тот или иной пакет, если он в соответствие со стандартами, поддерживаемыми системой обнаружения. Например, в сети могут работать ОС Windows 98, Windows NT, Windows 2000 и XP, Netware, Linux, MacOS, Solaris и т.д., но если они общаются между собой по протоколу IP, то любая из систем обнаружения атак, поддерживающая этот протокол, сможет обнаруживать атаки, направленные на эти ОС.

Совместное применение систем обнаружения атак на уровне сети и уровне узла повысит защищенность вашей сети.

Рассмотрев основные виды сетевых атак и способов защиты от них, можно сделать определённые выводы:

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

2.Значительное влияние на проблему обеспечения сетевой безопасности оказывает человеческий фактор.

.Среди рассмотренных средств сетевой защиты наиболее совершенным и современным типом подобного средства является система обнаружения атак (СОА), которая является более лучшим выбором, чем межсетевой экран (МСЭ).



2. Постановка задачи


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

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

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


2.1 Концепция программного средства


На основании сделанных выводов можно сформулировать концептуальный план программного средства, которое будет создано в рамках данного дипломного проекта.

Системы обнаружения атак (СОА) определяются в англоязычной документации как NIDS - Network Intrusion Detection System. Большинство СОА создано для работы в ОС UNIX, потому что эта ОС обладает более развитым набором сетевых программных средств. Как правило, СОА представляют из себя анализаторы сетевых пакетов (чаще всего IP-пакетов), совмещённые с базой данных сигнатур атак. К таким системам относятся программы Shadow, Snort [9]. Существуют специальные организации, отслеживающие появление новых типов атак и описывающие их. СОА расширяемы за счёт пополнения встроенных баз данных сигнатур атак. Так, программа Snort обладает специализированным встроенным высокоуровневым языком написания правил [10], по которым оцениваются входящие пакеты и принимаются решения о наличии / отсутствии атаки. Программа Snort бесплатна и имеет открытые исходные коды. Однако она довольно сложна в применении и, кроме того, её настройка и настройка любой иной аналогичной программы на рынке СОА затруднена из-за того, что они требуют дополнительного приобретения специализированных отладочных генераторов сетевых атак (например, таких как TigerTools).

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

1.Создание анализатора сетевых пакетов на третьем уровне модели OSI.

2.Создание базы данных правил регистрации атак.

.Создание отладочной системы генерации атак.

.Создание системы управления и регистрации.


2.2 Сетевое программирование под OC Windows


Поскольку наиболее распространённой в мире ОС является ОС Windows, то рассмотрим ключевой аспект создания СОА - создание генератора (анализатора) сетевых пакетов средствами ОС Windows.

Для этого существуют по крайней мере 2 варианта библиотек низкоуровневого сетевого программирования:

1.Библиотека Windows Sockets v2.0 (Microsoft Corporation) [7].

2.Библиотека Windows Packet Capture Library (Torino Netgroup) [4].

На базе этих двух вариантов реализовано множество низкоуровневых сетевых приложений для ОС Windows [5] - анализаторы, снифферы, СОА, и т.д. Наиболее ярко такая двойственная возможность реализации проявилась в программном продукте daSniff [8], который реализован обоими способами.

Оба подхода в реализации низкоуровневых сетевых приложений имеют свои достоинства и недостатки. Так, библиотека Windows Sockets v2.0 требует для низкоуровневых сетевых приложений права Администратора при работе под Windows 2000 и не способна в большинстве случаев перехватывать исходящие пакеты. Библиотека Windows Packet Capture Library не поддерживает Loopback Adapter.

Общим недостатком обоих вариантов реализации явлется то обстоятельство, что для отладки полноценного анализатора пакетов необходимо иметь как минимум два (а не один) компьютера, объединённых в локальную сеть. В случае отсутствия второго компьютера совершенно невозможно организовать отладочную атаку на проектируемую СОА для практически всех протоколов. Единственным (известным) исключением является протокол ICMP, реализованный с помощью библиотеки Windows Sockets v2.0. В этом случае возможно на одном и том же компьютере как генерировать отладочную атаку средствами протокола ICMP, так и перехватывать её. Все остальные протоколы (в случае использования только одного компьютера) на низком уровне позволяют (при использовании библиотеки Windows Sockets v2.0) лишь генерировать атаки, а перехватывать - только на высоком уровне (что практически не имеет смысла). И только применив второй компьютер (с библиотекой Windows Sockets v2.0), подключённый к первому по локальной сети, можно перехватывать атакующие пакеты на низком (а не на высоком) уровне.

Библиотека Windows Packet Capture Library [4] вообще не предполагает никаких вариантов одновременной работы на одном компьютере отладочного генератора атак вместе с системой обнаружения атак.

Теоретически можно попробовать обойти это принципиальное ограничение (требование наличия двух компьютеров, объединённых в локальную сеть) при помощи такого специализированного ПО, как Virtual PC (или VMWare для Linux) - программы, которая эмулирует несколько виртуальных компьютеров на одном. Однако подобная задача выходит за рамки данного дипломного проекта.

Другой аспект создания собственной СОА - это разработка и применение сигнатур атак. После создания низкоуровневого сетевого анализатора пакетов задача регистрации атак сводится к анализу полей входящих пакетов (IP) и их последовательности.

Для любой дипломной работы наибольший практический интерес представляет такой программный продукт, который может полноценно работать на одном компьютере (не требуя наличия нескольких компьютеров). Из этого краткого обзора средств реализации низкоуровневого сетевого программирования под ОС Windows видно, что единственным подходящим вариантом является клиент-серверная реализация системы «отладочный генератор атак - система обнаружения атак» на основе протокола ICMP, реализованного низкоуровневыми средствами библиотеки Windows Sockets v2.0. Только этот вариант из всех рассмотренных позволяет создать полноценную систему обнаружения атак, основанную на использовании протокола IP и ICMP. Ценность такой системы состоит в том, что впоследствии она может быть легко переделана под протоколы TCP и UDP (с подключением второго компьютера по локальной сети) из-за концептуального сходства формата полей протокола ICMP и протоколов TCP и UDP.

Библиотека Windows Sockets v2.0 [7] - это стандартное средство для программирования сетевых приложений для ОС MS Windows. Помимо стандартных и общеизвестных функций эта библиотека содержит также некоторые малоизвестные низкоуровневые возможности. Существуют некоторые удачные их описания [3] и примеры (см. программу «Ping» в [7]).

Для создания низкоуровнего сетевого ICMP-приложения необходимо ознакомиться в общих чертах с работой протокола IP [14], затем подробно изучить протокол IP [12] и протокол ICMP [13], а также изучить сетевые атаки на базе протокола ICMP [6].

Протокол ICMP - это служебный протокол, применяемый в основном для сообщений об ошибках и для настройки протоколов TCP и UDP. Он также применяется в известных утилитах Ping и Traceroute. Протокол ICMP - это протокол сетевого (третьего) уровня, также, как и протокол IP. Это проявляется тем, что для протокола ICMP не существует понятия «порт» и «вложенное сообщение» (в отличие от протоколов транспортного (четвёртого) уровня - TCP и UDP). Однако формат полей пакета концептуально тот же, что и для протоколов TCP и UDP - в пакете сначала идёт заголовок IP, затем - заголовок ICMP. ICMP-пакет не может нести полезное сообщение (в отличие от протоколов TCP и UDP), но зато он предусматривает поля «тип» и «код», каждое из которых может принимать значения от 0 до 127. Многие комбинации полей «тип» и «код» имеют предопределённое значение [3]. Все ICMP-сообщения делятся на 2 группы - ошибки и запросы [3]. Библиотека Windows Sockets v2.0 не может регистрировать ICMP-пакеты типа «ошибка», сгенерированные на том же компьютере, а только ICMP-пакеты типа «запрос» (также за некоторыми исключениями).


2.3 Атакующие воздействия для программного средства


Разрабатываемое в рамках данной дипломной работы программное средство будет работать исключительно с протоколом ICMP, т.к. только этот протокол допускает полноценную работу с ним на одном компьютере. Поэтому мы рассмотрим сетевые атаки на базе протокола ICMP [6] и разработаем способы их обнаружения. К таким атакам относятся: лавинное затопление ICMP-пакетами, атака «Smurf», подмена IP-адреса и другие.


2.3.1 Атака Smurf

Атака Smurf (рис. 1) основана на использовании возможности протокола ICMP рассылать дейтаграммы по нескольким адресам. Ответить на один широковещательный эхо-запрос ICMP может большое количество хостов. Эта возможность используется для проведения атаки отказа в обслуживании на избранный хост или сеть.

Сначала злоумышленник должен сформировать широковещательный эхо-запрос ICMP к хостам атакуемой сети, подменив при этом действительный IP-адрес своего компьютера.


Рис. 1. Схема атаки Smurf


В качестве этого IP-адреса используется адрес атакуемого хоста (или сети). Чтобы запрос попал ко всем хостам сети, его должен пропустить внешний маршрутизатор. Успешным завершением атаки является отправка всеми работающими хостами эхо-ответов на адрес атакуемого хоста. Атакованный хост (или сеть, в которой он находится) может пострадать от такой внезапной активности и перестанет выполнять возложенные на него задачи при следующих условиях:

·нарушитель отправляет большое количество широковещательных эхо-запросов;

·внешний узел (маршрутизатор) позволяет прохождение входящего трафика с указанием широковещательного адреса;

·маршрутизатор работает в крупной сети, хосты которой одновременно отправляют большое количество эхо-ответов (с другой стороны, того же результата можно добиться, использовав несколько маршрутизаторов более мелких сетей);

·канал, с помощью которого атакуемый узел соединен с Internet, имеет низкую пропускную способность. Точнее, количество одновременно отправленных пакетов должно превысить максимальную пропускную способность этого канала. Хотя можно «затопить» пакетами любое Internet-соединение при наличии достаточного трафика, но для соединений с меньшей пропускной способностью сделать это будет проще.

Вот еще одна причина, по которой следует запретить вхождение извне пакетов с широковещательным адресом - это не позволит использовать вашу сеть для распространения атаки Smurf.


2.3.2 Атака Tribe Flood Network

Атака Tribe Flood Network (TFN) является еще одной атакой отказа в обслуживании, в которой используются ICMP-сообщения (рис. 2). В отличие от атаки Smurf, организуемой с одного компьютера с применением одной сети для ее распространения, атака TFN использует большое количество распределенных хостов. Эти хосты часто называют хостами-демонами. Поэтому термин распределенная атака отказа в обслуживании (DDoS) наиболее точно определяет использование нескольких рассредоточенных в Internet хостов для совместного осуществления атаки.


Рис. 2. Схема атаки Tribe Flood Network

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

Мастер информирует хосты-демоны о начале атаки с помощью эхо-ответов ICMP. При этом тип атаки определяется по значению поля идентификации в ICMP-заголовке эхо-ответа. В области данных такого эхо-ответа передаются необходимые аргументы.

Почему для организации атаки вместо эхо-запросов применяются эхо-ответы? Дело в том, что на многих узлах в целях обеспечения безопасности блокируются внешние эхо-запросы ICMP. В то же время, прохождение эхо-ответов часто разрешается. Это дает возможность локальным пользователям узнать о доступности внешних хостов, но весьма опасно с точки зрения рассылки неконтролируемых эхо-запросов ICMP.

Одновременное использование нескольких распределенных хостов для наводнения пакетами избранной цели позволит провести успешную атаку отказа в обслуживании против хоста или сети. Чтобы получить более подробную информацию об атаке TFN, зайдите на сайт www.cert.org и обратитесь к отчету об инциденте IN-99-07.


2.3.3 Атака WinFreeze

Атака WinFreeze, по существу, заставляет избранный компьютер атаковать самого себя.

router > victim.com: icmp: redirect 243.148.16.61 to host victim.com> victim.com: icmp: redirect 110.161.152.156 to host victim.com> victim.com:icmp:redirect 245.211.87.115 to host victim.com> victim.com:icmp:redirect 49.130.233.15 to host victim.com> victim.com:icmp:redirect 149.161.236.104 to host victim.com> victim.com:icmp:redirect 48.35.126.189 to host victim.com> victim.com:icmp:redirect 207.172.122.197 to host victim.com> victim.com:icmp:redirect 113.27.175.38 to host victim.com> victim.com:icmp:redirect 114.102.175.168 to host victim.com

С помощью ICMP-сообщения redirect хост-отправитель уведомляется о выборе для доставки сообщения неоптимального маршрутизатора и о необходимости добавить адрес оптимального маршрутизатора в таблицу маршрутизации. При наводнении этими ICMP-сообщениями о перенаправлении атака WinFreeze может вызвать отказ в обслуживании уязвимого хоста, работающего под управлением Windows NT. Атака выполняется в сети атакуемого компьютера, а ICMP-сообщения приходят от имени маршрутизатора этой сети. При получении массы сообщений redirect атакованный хост пытается внести изменения в таблицу маршрутизации, и ресурсы центрального процессора в основном тратятся на обработку поступающих пакетов.

В этом примере маршрутизатор router заставляет хост victim.com перенаправить отправляемые им (хостом) пакеты на самого себя. В результате при попытке внести многочисленные изменения в таблицу маршрутизации хост victim. com может не справиться с другими возложенными на него задачами.


2.3.4 Атака ICMP Flood

Атака ICMP Flood представляет из себя лавинное затопление ICMP-пакетами. Как правило, обычные ICMP-пакеты поступают в локальную сеть извне не быстрее, чем один пакет в минуту. Непрерывное же поступление большого количества пакетов будет означать, скорее всего, атаку лавинным затоплением.

3. Модель системы


Система обнаружения атак (СОА) представляет из себя клиент-серверную пару приложений - отладочный генератор атак (клиент) и, собственно, система обнаружения атак (сервер). Обе программы являются консольными Win32-приложениями на базе библиотеки Windows Sockets v2.0. Кроме того, предусмотрена система удалённого управления и администрирования клиентом на базе протокола HTTP и многопоточной структуры клиента. Это значит, что клиент запускает дополнительную нить (тред), в которой работает соответствующий HTTP-сервер, который и даёт возможность удалённо и динамически администрировать и управлять им.

HTTP-сервер даёт возможность выбрать ручной и автоматический режимы генерации сетевых атак, а также динамически, во время работы программы, выбирать и проводить одну из предопределённых атак.

Также реализована система уведомления администратора сети об атаке - выдачей сообщения на консоль и посредством электронной почты. Сервер, как и клиент, имеет многопоточную архитектуру, и при начале работы запускает дополнительную нить (тред), в которой работает POP3-сервер, к которому может подключиться сторонняя почтовая программа и проверить наличие сообщения об атаке.


Рис. 3. Диаграмма задач, решаемых системой

Рис. 4. Диаграмма классов и их взаимодействия


3.1 Схема взаимодействия модулей системы


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

Основные модули поделены между клиентом и сервером: и клиент, и сервер имеют по 2 основных модуля. И сервер, и клиент являются многопоточными приложениями, точнее, они содержат по 2 нити, при этом в каждой нити функционирует один основной модуль. Главная нить клиента (та, которая образуется при запуске) содержит HTTP-сервер, который порождает вспомогательную нить при начале каждого HTTP-подключения и закрывает её при его окончании - это стандартный приём для одновременной работы с множеством клиентов. Вспомогательная нить получает от пользователя параметры нужных последовательностей ICMP-пакетов и отправляет эти последовательности на сервер.

Главная нить сервера содержит модуль обнаружения атак, который и является ядром всей системы и сутью дипломной работы. Атаки - это в данном случае просто определённые последовательности ICMP-пакетов с определёнными значениями полей пакетов IP и ICMP. Едва ли существует какой-либо принципиально иной способ обнаружения атак. Вся сложность состоит в том, чтобы наиболее точно сформулировать правила, по которым будет выноситься решение о том, атака это или нет.

Вспомогательная нить сервера содержит POP3-сервер электронной почты, который стартует в начале работы сервера и даёт возможность получить сообщения об атаке при помощи программы MS Outlook Express. Когда главная нить сервера обнаруживает атаку, она формирует в почтовом ящике сервера соответствующее сообщение, откуда его забирает вспомогательная нить при взаимодействии с программой MS Outlook Express.

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

Вспомогательные модули инкапсулируют отдельные логические части основных модулей.


3.2 Описание модулей


Клиент - raw_send.exe:

Модули:

1.raw_send.cpp - содержит методы: сборки «вручную» ICMP-пакетов, отправки пакетов, подсчёта контрольной суммы.

2.packet.cpp - содержит методы: вывода на экран содержимого пакета, создания «сырого» сокета, «привязки» сырого сокета.

3.http_plugin.cpp - всё остальное: полное описание HTTP-сервера (инициализация, приём подключений, создание вспомогательной нити и её закрытие, закрытие), полное описание работы вспомогательной нити (приём, передача), расшифровка команд и вызов функций из других модулей.

4.HTM-файлы: удалённая консоль управления.

Сервер - raw_recv.exe:

Модули:

1.raw_recv.cpp - описание главной нити, запуск вспомогательной, создание «сырого» сокета, «привязка» его, получение пакетов, обнаружение атак, формирование сообщения электронной почты.

2.pop3_main.cpp - вспомогательная нить - POP3-сервер: создание, приём-передача, закрытие.

3.pop3_module.cpp - pop3-протокольная реализация сервера.

4.server.cpp - базовые функции pop3-сервера.

5.packet.cpp - печать пакета, создание «сырого» сокета, «привязка» его.


3.3 Описание программных элементов


Сетевое взаимодействие клиента и сервера осуществляется на базе т.н. «сырых» сокетов. «Сырые» сокеты (raw sockets) - это просто специальный режим обычных сокетов. Обычные сокеты работают между пятым и шестым уровнем модели OSI, скрывая от пользователя низкоуровневые операции. «Сырые» сокеты работают на третьем уровне модели OSI - на сетевом уровне (это протокол IP), позволяя «вручную» формировать (или читать при приёме) всё содержимое IP-пакета - сам IP-заголовок и всё, что вложено в IP-пакет (в данном случае - ICMP-пакет).

«Сырой» сокет создаётся вызовом функции


SOCKET s;

s = WSASocket (AF_INET, SOCK_RAW, IPPROTO_RAW, NULL, 0,0);


В Windows 2000 «cырые» сокеты относятся к вопросам безопасности, так как могут быть использованы во вред, и поэтому для их создания необходимы права Администратора.

Кроме создания, необходимо также установить режим включения заголовка IP_HDRINCL:


BOOL bOpt;= TRUE; // If TRUE (while setting IP_HDRINCL), IP header is

// submitted with data to be sent and

// returned from data that is read.= setsockopt (s, IPPROTO_IP, IP_HDRINCL, (char *)&bOpt, sizeof(bOpt));


Опция IP_HDRINCL реализована только начиная с Windows 2000.

Описание элементов клиента raw_send.exe:

Модуль Packet.h содержит следующие элементы:

Директиву #pragma pack(1) - выравнивание полей структур на границу 1 байта.

1. Структура, описывающая пакет IP:


typedef struct ip_hdr

{_char ip_verlen; // IP version & length_char ip_tos; // IP type of service_short ip_totallength; // Total length_short ip_id; // Unique identifier_short ip_offset; // Fragment offset field_char ip_ttl; // Time to live

u_char ip_protocol; // Protocol (TCP, UDP etc)

u_short ip_checksum; // IP checksum_int ip_srcaddr; // Source address_int ip_destaddr; // Destination address

} IP_HDR, *PIP_HDR, FAR* LPIP_HDR;


. Структура, описывающая пакет ICMP:


typedef struct icmp_hdr

{i_type;i_code; // Type sub codei_cksum;i_id;i_seq;

} ICMP_HDR, *PICMP_HDR;


Смысл и значения этих полей соответствуют описанию протоколов IP [12] и ICMP [13].

. Класс ICMP_PACKET:

Представляет описание одного ICMP-пакета. Содержит структуры IP_HDR и ICMP_HDR, символьный буфер, адресную структуру (адрес назначения) для пакета и две простые функции типа SET/GET для установки / считывания полей пакета - PrintPacket и FillFields.

. Класс RAW_SOCKET:

Представляет описание «сырого» сокета. Содержит поле типа «сокет», логическую переменную для выставления опций, две простые функции типа SEND/RECEIVE для отправки / получения пакетов, функцию привязки сокета к IP-адресу, и конструктор, который принимает тип создаваемого сокета (Создавая «сырой» сокет определённого протокола - неопределённый, ICMP, UDP, IP, и пр.).

Модуль Packet.cpp cодержит следующие элементы:

Определение функции ICMP_PACKET: PrintPacket - распечатка полей полей пакета ICMP.

Конструктор «сырого» сокета RAW_SOCKET:RAW_SOCKET. Он создаёт «сырой» сокет путём указания идентификатора «SOCK_RAW» и нужного протокола (получаемого как параметр) [3]. Также конструктор выставляет у создаваемого «сырого» сокета опцию «IP_HDRINCL», означающую «включать IP-заголовок пакета при создании / получении пакета» [3].

Определение функции RAW_SOCKET: BindSocket - «привязать» сокет к определённому адресу (используется только для сервера).

Модуль Raw_send.cpp содержит следующие элементы:

Определение функции ICMP_PACKET: FillFields - формирование полей пакета ICMP. Функция принимает аргумент - массив строк, полученный от HTTP-консоли, в котором содержится предопределённое количество строк, описывающих все необходимые параметры создаваемых пакетов, которые потом будут отправлены серверу в виде атакующей последовательности пакетов. Формирование полей пакетов осуществляется примерно так, как описано в [3] и в [15]: заполняются поля IP-заголовка, поля ICMP-заголовка, вычисляется контрольная сумма для ICMP-пакета, затем заполненные структуры последовательно копируются в символьный буфер. После заполняется структура struct sockaddr_in remote - туда записывается адрес сервера. Эта структура потом будет передана в функцию «отправить пакеты».

Определение функции RAW_SOCKET: SendPackets - отправка ICMP-пакетов на сервер. Принимает буфер с сформированным пакетом, количество пакетов, отправляет пакеты.

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

Определение функции checksum (взятая из [15]). Может быть использована для протоколов IP, UDP, TCP, ICMP:


u_short checksum (u_short *buffer, int size)

{_long cksum=0;(size > 1)

{+= *buffer++;-= sizeof (u_short);

}(size)

{+= *(u_char*) buffer;

}= (cksum >> 16) + (cksum & 0xffff);+= (cksum >>16); (u_short) (~cksum);

}


Контрольная сумма представляет из себя битовое дополнение до единицы суммы 16-битовых слогов всего пакета.

Модуль http_plugin.cpp содержит следующие элементы:

. Класс CONF_HTTP:

Представляет описание абстрактного конфигурационного объекта, содержащего всю конфигурацию HTTP-сервера. Содержит поля:conf_file (из этого файла при запуске программы считываем настройки HTTP-сервера),ip_address[32] (ip-адрес этого сервера),port (порт, на который будем принимать HTTP-запросы (обычно 80),echo (выводить ли на экран каждое действие)_HTTP - конструктор, обнуляющий поля- изменение конфигурации с клавиатуры

Init - считывание конфигурационных параметров из файла «http_conf» при запуске системы.

2. Класс DISPATCH_SERVER_SOCKET_HTTP:

Представляет описание диспетчерского сокета, принимающего HTTP-подключения. Содержит поля:

long connection_time (время подключения клиента)sockaddr_in server_address, client_address (адресные структуры сервера и клиента) retval, size_of_client_address (количество принятых / отправленных байтов, размер адресной структуры)

WSADATA wsaData (стартовая сокетная структура)

SOCKET dispatch_server_socket, msg_server_socket (диспетчерский сокет, виртуальный сокет подключения)

DWORD dwThreadID (идентификатор нити)

DISPATCH_SERVER_SOCKET_HTTP (конструктор, принимающий конфигурационный объект)_HTTP conf (конфигурационный объект)

int accept_connect(void) (принимает запрос на подключение)

. Класс SERVER:

Представляет описание виртуального сокета, создаваемого при каждом HTTP-подключении и закрываемого при его окончании. Содержит поля:

char Buffer [SIZE_OF_BUFFER] (буфер для приёма / отправки сообщения)

SOCKET msg_server_socket (виртуальный сокет, создаваемый на один сеанс)quit (флаг, который показывает, что сеанс связи окончен)

int block_reply (флаг - блокировать/не блокировать ответ)

PARAM param[100] (массив строк-параметров для «сырого» сокета)

int param_index (количество строк в этом массиве)_HTTP conf (конфигурационный объект)

long connection_time (время подключения)

fstream report_file (в этот файл записывается всё, что сервер получает и отправляет)(void) (конструктор - обнуляет все поля объекта)

int recv_data(void) (получить информацию через сокет)

int send_data(void) (отправить информацию через сокет)

int shutdown_and_closesocket(void) (закрыть сокет)erase_buffer(void) (стереть буфер)set_buffer (char*) (заполнить буфер) ProcessClientQuery(void) (обработать клиентский запрос)

int ProcessControlString (char* c_string) (разбить строку параметров на отдельные лексемы)CreateQueryForm (char* temp_path) (считать в буфер с диска htm-файл (форму запроса) для отправки клиенту)

int ProcessHTTPCommand(void) (выполнить команду, полученную от HTTP-клиента)

SERVER& operator=(SERVER& right) (перегруженное присваивание из-за строк)

};

Описания функций:

DISPATCH_SERVER_SOCKET_HTTP:DISPATCH_SERVER_SOCKET_HTTP (CONF_HTTP& conf_ref) - конструктор диспетчерского сокета. Создаёт обычный (не «сырой») сокет, привязывает к адресу, устанавливает размер очереди на подключение,

int DISPATCH_SERVER_SOCKET_HTTP:accept_connect(void) - ожидает подключения HTTP-клиента, при подключении создаёт виртуальный сокет и новую нить, в которую его передаёт.:SERVER(void) - конструктор класса.

int SERVER:shutdown_and_closesocket(void) - мягкое выключение и закрытие сокета.

void SERVER:erase_buffer(void) - стереть буферSERVER:set_buffer (char* string) - заполнить буфер SERVER:recv_data(void) - побайтно получить информацию

int SERVER:send_data(void) - побайтно отправить информацию

SERVER& SERVER:operator=(SERVER& right) - перегруженное присваивание

void CONF_HTTP: Init(void) - инициализация конфигурационного объекта

CONF_HTTP:CONF_HTTP(void) - конструктор конфигурационного объектаSERVER: ProcessClientQuery(void) - обработка клиентского запроса и посылка HTTP-файла (формы запроса)

int SERVER: ProcessControlString (char* st) - разбивает строку запроса на отдельные лексемы

DWORD WINAPI ThreadFuncHTTP (SERVER* p_server) - главная нить, в которой работает HTTP-сервер, т.е. получает запрос, обрабатывает его и отправляет ответ.

char* substring (char* st, char s1, char s2, char* ret) - вспомогательная функция. Выделяет подстроку из строки, начиная с char s1 и заканчивая char s2.

char* getspos (char* search_string, char search_symbol) - вспомогательная функция. Возврашает номер позиции символа в строке.

void readcomment (fstream& file) - вспомогательная функция. Применяется для игнорирования комментариев при считывании конфигурационного файла.

void SERVER: CreateQueryForm (char* temp_path) - решает вопрос об отправке клиенту формы на основании его запроса.SERVER: ProcessHTTPCommand(void) - посылает атакующую последовательность пакетов по команде от HTTP-клиента.

Описание элементов сервера raw_send.exe:

Модуль Packet.h содержит следующие элементы:

Те же элементы, что и в файле packet.h клиента.

Модуль Packet.cpp cодержит следующие элементы:

Те же элементы, что и в файле packet.cpp клиента.

Модуль Raw_recv.cpp cодержит следующие элементы:

Описания функций:

main - инициализирует глобальную переменную - путь к исполняемому файлу, загружает библиотеку сокетов, запускает нить с почтовым POP3-сервером, создаёт «сырой» сокет, «привязывает» его к своему адресу, и переводит его в режим бесконечного приёма запросов.

int RAW_SOCKET: RecvPackets(void) - принимает входящие пакеты в бесконечном цикле, для каждого пакета выводит на экран его содержимое и проверяет его поля на предмет атаки.

int ICMP_PACKET: DetectAttack(void) - считывает поля полученного пакета и сверяет их с сигнатурами атак, принимая решение, атака это или нет. Если атака зарегистрирована, то функция выводит соответствующее сообщение на консоль сервера и формирует в почтовом ящике серевера соответствующее сообщение электронной почты, которое можно забрать, подключившись к POP3-серверу программой MS Outlook Express.

int make_message (char* filename) - формирует в почтовом ящике сообщение электронной почты.

Модуль Server.h cодержит следующие элементы:

. Структура FILE_REF:

Представляет описание структуры - описателя файла-письма. Содержит поля:filename [MAX_PATH] (имя файла)filesize (размер файла)del (признак удаления)

2. Класс MODE:

Представляет описание абстрактного объекта, описывающего режим соединения POP3-сервера. Содержит поля:

bool authorization_mode (флаг, который определяет, включён ли режим авторизации)

bool transaction_mode (флаг, который определяет, включён ли режим транзакции)

bool update_mode (флаг, который определяет, включён ли режим обновления)

MODE() (конструктор - обнуление всех полей)

void SetAuthorizationMode(void) (установить режим авторизации)

void SetTransactionMode(void) (установить режим транзакции)

void SetUpdateMode(void) (установить режим обновления)

bool IsAuthorizationMode(void) (узнать, выставлен ли флаг режима авторизации)

bool IsTransactionMode(void) (узнать, выставлен ли флаг режима транзакции)

bool IsUpdateMode(void) (узнать, выставлен ли флаг режима обновления)

. Структура USER:

Представляет описание структуры - описателя файла-письма. Содержит поля:

char name [ADDRESS_MAX_LENGTH] (имя почтового ящика)

char domain [ADDRESS_MAX_LENGTH] (имя почтового домена)password [ADDRESS_MAX_LENGTH] (пароль на почтовый ящик) lock (флаг, определяющий, заперт ли почтовый ящик)

. Класс CONF:

Представляет описание абстрактного объекта, описывающего всю конфигурацию POP3-сервера. Содержит поля:

fstream conf_file (из этого файла при запуске программы считываем настройки POP3-сервера)

char ip_address[32] (ip-адрес этого сервера)

int port (порт, на который будем принимать POP3-запросы (обычно 110)

int echo (выводить ли на экран каждую POP3-транзакцию)

char Path [MAX_PATH] (путь к исполняемому файлу сервера)

char Domain [ADDRESS_MAX_LENGTH] (домен сервера (напр. «mailserver1.com»)_REF file [MAX_USERS] (массив описателей для файлов - писем)f_index (его индекс)highest_number_accessed (непонятная хрень, смотрите RFC 1225) c_mes (номер обрабатываемого файла-письма для соответствующих команд)

int total_size (суммарный размер файлов-писем в почтовом ящике)

CONF(void) (конструктор, обнуляющий все поля)

void Init(void) (считать настройки сервера из файла «conf.inf»)

void ProcessConfigCommands(void) (обработать команды настройки сервера)

int ParseMailDrop (char* user) (Название функции навеяно RFC 1225. Функция просматривает почтовый ящик, идентифицирует отдельные

файлы-письма, определяет размер каждого и общий их размер.)

// 7 функций для работы с пользователями

// кстати, «пользователь» - это папка с файлом «password.inf»

bool IsUserExistent (char* User) (Проверяем, существует ли такой пользователь)

int DeleteUser(void) (Удалить пользователя)

int AddUser(void) (Создать пользователя)

void Help(void) (Вывести на экран информацию о конфигурационных командах)

int ListUsers(void) (Вывести список пользователей)

char* GetPassword (char* user, char* password) (узнать текущий пароль) SetPassword(void) (установить новый пароль)

. Класс DISPATCH_SERVER_SOCKET:

Представляет описание диспетчерского сокета POP3-сервера. Содержит поля:

long connection_time (время подключения)

struct sockaddr_in server_address, client_address (адресная структура сервера и клиента) retval, size_of_client_address (количество полученных байт, размер клиентской адресной структуры)

WSADATA wsaData (структура для загрузки библиотеки сокетов)

SOCKET dispatch_server_socket, msg_server_socket (диспетчерский сокет POP3-сервера, виртуальный сокет для каждого POP3-подключения)

DWORD dwThreadID (идентификатор новой нити)

DISPATCH_SERVER_SOCKET (CONF& conf) (конструктор диспетчерского сокета, принимает конфигурационный объект)

CONF conf (конструктор конфигурационного объекта, обнуляет все поля)

int accept_connect(void) (принимает входящие подключения)

. Класс SERVER_SOCKET:

Представляет описание виртуального сокета POP3-сервера (создаваемого для каждого подключения POP3-сервера и закрываемого при завершении подключения). Содержит поля:

char Buffer [SIZE_OF_BUFFER] (буфер для приёма / отправки почтовых транзакций)

SOCKET msg_server_socket (конструктор, инициализирующий поля)

int query (флаг, который разрешает / запрещает ответ на запрос)

int quit (флаг, который показывает, что сеанс почтовой связи окончен)

CONF conf (конструктор, инициализирующий поля)

long connection_time (время подлючения) report_file (в этот файл запишем всё, что сервер получает и отправляет)

USER user (почтовый ящик, из которого мы забираем почту за одно подключение. Для обращения к каждому почтовому ящику клиент всегда создаёт новое подключение, даже если эти ящики находятся на одном сервере)

char forward_path [ADDRESS_MAX_LENGTH] (здесь не используется. Но могла бы (см. RFC-1225)

char reverse_path [ADDRESS_MAX_LENGTH] (здесь не используется. Но могла бы (см. RFC-1225)

fstream mes_file (сюда записываем сообщение, пришедшее серверу за 1 почтовую транзакцию с клиентом. Может фактически содержать в себе несколько e-mail'ов)

char mes_path [MAX_PATH] (уникальное имя файла - сообщения)

MODE mode (конструктор, инициализирующий поля)

int not_this_command (счётчик нераспознавания принятой команды)

SERVER_SOCKET(void) (конструктор, инициализирующий поля)

int recv_data(void) (получить информацию через сокет)

int send_data(void) (отправить информацию через сокет)

int shutdown_and_closesocket(void) (мягко выключить сокет и закрыть его)

void erase_buffer(void) (стереть буфер) set_buffer (char*) (установить значение в буфере)

int ReplyOnClientConnection(void) (послать ответ клиенту на его подключение)

int ProcessClientQuery(void) (обработать запрос клиента)

SERVER_SOCKET& operator=(SERVER_SOCKET& right) (перегруженное присваивание из-за строк)

Модуль Server.cpp cодержит следующие элементы:

Описания функций:

DISPATCH_SERVER_SOCKET:DISPATCH_SERVER_SOCKET (CONF& conf_ref) - Инициализируем библиотеку WS2_32.DLL, Создаём базовый(диспетчерский) сокет сервера, настроенный на TCP, Записываем в адресную структуру IP адрес сервера и порт сервера, Связываем адрес сервера с базовым(диспетчерским) сокетом сервера, Переводим базовый(диспетчерский) сокет сервера на режим прослушивание / диспетчеризация сигналов на подключение и устанавливаем размер очереди одновременных обращений к серверу.

int DISPATCH_SERVER_SOCKET:accept_connect(void) - Ждём очередное подключение к серверу (функцией connect()) клиента и,

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

SERVER_SOCKET:SERVER_SOCKET(void) - (конструктор, инициализирующий поля)

int SERVER_SOCKET:shutdown_and_closesocket(void) - (мягко выключить сокет и закрыть его)

void SERVER_SOCKET:erase_buffer(void) - стереть буферSERVER_SOCKET:set_buffer (char* string) - установить значение буфераSERVER_SOCKET:recv_data(void) - получить информацию через сокетSERVER_SOCKET:send_data(void) - отправить информацию через сокет_SOCKET& SERVER_SOCKET:operator=(SERVER_SOCKET& right) - перегруженное присваивание из-за строк

bool CONF: IsUserExistent (char* User) - существует ли пользователь (почтовый ящик)

int CONF: ListUsers(void) - перечислить пользователей (почтовые ящики)

int CONF: AddUser(void) - добавить пользователя (почтовый ящик)

int CONF: DeleteUser(void) - удалить пользователя (почтовый ящик)CONF: Init(void) - инициализация конфигурационного объектаCONF: ProcessConfigCommands(void) - обработка конфигурационных командCONF: Help(void) - вывод на экран информации о конфигурационных командах:CONF(void) - конструктор, инициализирующий поля

char* CONF: GetPassword (char* user, char* password) - узнать парольCONF: SetPassword(void) - установить пароль

Модуль pop3_main.cpp cодержит следующие элементы:

Описания функций:

DWORD WINAPI ThreadFunc (SERVER_SOCKET* p_server_socket) - вспомогательная нить, которая создаётся при каждом подключении к pop3-почтовому серверу и закрывается при завершении подключения. В этой нити происходит приём-передача почтового сервера.

DWORD WINAPI ThreadFuncPOP3 (void) - вспомогательная нить, в которой работает pop3-почтовый сервер. Создаёт конфигурационный объект, инициализирует его, создаёт диспетчерский сокет, инициализируя его этим конфигурационным объектом, и переводит диспетчерский сокет в режим ожидания подключения.

Модуль pop3_module.cpp cодержит следующие элементы:

В этом модуле содержится всё алгоритмическое описание почтового POP3-сервера. Именно в этом модуле содержится вся алгоритмическая реализация RFC-1225.

Описания функций:

int SERVER_SOCKET: ReplyOnClientConnection(void) - отвечаем клиенту на его подключение (не на запрос клиента!)SERVER_SOCKET: ProcessClientQuery(void) - Уже имеем в буфере запрос клиента и обрабатываем его (выполняем всевозможные команды)CONF: ParseMailDrop (char* user) - название функции навеяно RFC 1225. Функция просматривает почтовый ящик, идентифицирует отдельные файлы-письма, определяет размер каждого и общий их размер.:MODE(void) - конструктор объекта режим соединенияMODE: SetAuthorizationMode(void) - установить режим авторизации

void MODE: SetTransactionMode(void) - установить режим транзакции

void MODE: SetUpdateMode(void) - установить режим обновления.



4. Сведения о реализации


Система реализована как клиент-серверное Win32 консольное приложение на базе библиотеки Windows Sockets v2.0. Программа написана на языке С++ при помощи Microsoft Visual C++ v6.0 для ОС Windows. Управляющие HTM-файлы созданы при помощи htm-редактора MS FrontPage 98.

Для работы программного комплекса необходима операционная система не ниже чем Windows 2000 с правами Администратора, программы Microsoft Internet Explorer v5.0, Microsoft Outlook Express v5.0.

Для реализации дипломной работы выбран язык программирования Microsoft Visual C++ 6.0. MS Visual C++ предоставляет программистам удобный полнофункциональный инструмент, объединивший все средства, необходимые для создания приложения - редактор исходных текстов, менеджер проектов, инспектор объектов и ряд дополнительных утилит, включая встроенный отладчик, дизайнер меню и так далее. Обоснованием для выбора данного языка служат следующие предпосылки:

  • операционная система Windows и язык программирования Microsoft Visual C++ 6.0 более интегрированы, так как разработаны одной и той же фирмой;
  • компилятор языка Microsoft Visual C++ 6.0 предназначен для работы в операционной системе Windows;
  • обладает большей надежностью и гибкостью, чем другие компиляторы;
  • язык Microsoft Visual C++ 6.0 позволяет более эффективно использовать ресурсы системы.
  • упрощает использование функций и структур данных из MSDN.

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

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

Кроме того, HTTP-интерфейс даёт возможность программировать новые виды атак без перекомпиляции клиента.

Извещение администратора сети об атаках по электронной почте выбрано по аналогии с другими программами такого же класса. Это даёт возможность удалённо контролировать безопасность локальной сети в режиме реального времени.



5. Экспериментальная часть

сетевой защита брандмауэр безопасность

Разрабатываемое в рамках данной работы программное средство будет работать исключительно с протоколом ICMP, т.к. только этот протокол допускает полноценную работу с ним на одном компьютере. Поэтому были воплощены несколько атак на базе протокола ICMP и разработаны механизмы их обнаружения. Генерирование атак осуществляется посредством управляющей консоли - HTTP-клиента. Были реализованы атаки:

1.Атака Smurf

2.Атака Tribe Flood Network

3.Атака WinFreeze

4.Атака ICMP Flood

Ниже приведены примеры работы клиент-серверной системы обнаружения атак. Клиент обозначен в примерах как raw_send.exe, а сервер - как raw_recv.exe. Приведены сообщения, выдаваемые системой на консоли.

1. Атака Smurf:


raw_send.exe:IP-header content:of service: 0packet length: 28identifier: 0offset field: 0to live: 128protocol number: 1: 0address: 127.0.0.1address: 127.0.0.255ICMP-header content:

Type: 0: 8: 65527

Unique identifier: 0number: 0sent to [127.0.0.255]:

-12810012700112700-108-1-90000??? ж? ж аа?of bytes sent: 28_recv.exe:of service: 0packet length: 28identifier: 177offset field: 0to live: 128protocol number: 1: 15152address: 127.0.0.1address: 127.0.0.255ICMP-header content:

Type: 0: 8: 65527

Unique identifier: 0number: 0received from [127.0.0.1]:

6900280-7900-1281594812700112700-108-1-90000? ж??; 0ж? ж аа?

Number of bytes received: 28Smurf attack detected!


2. Атака Tribe Flood Network:


raw_send.exe:IP-header content:of service: 0packet length: 28identifier: 0offset field: 0to live: 128protocol number: 1: 0address: 127.0.0.1address: 127.0.0.1ICMP-header content:

Type: 0: 0: 65535

Unique identifier: 0number: 0sent to [127.0.0.1]:

-12810012700112700100-1-10000of bytes sent: 28_recv.exe:of service: 0packet length: 28identifier: 197offset field: 0to live: 128protocol number: 1: 15386address: 127.0.0.1address: 127.0.0.1ICMP-header content:

Type: 0: 0: 65535

Unique identifier: 0number: 0received from [127.0.0.1]:

6900280-5900-1281602612700112700100-1-10000

Number of bytes received: 28Tribe Flood Network attack detected!

. Атака WinFreeze:_send.exe:IP-header content:of service: 0packet length: 28identifier: 0offset field: 0to live: 128protocol number: 1: 0address: 127.0.0.1address: 127.0.0.1ICMP-header content:

Type: 0: 5: 65530

Unique identifier: 0number: 0sent to [127.0.0.1]:

-12810012700112700105-1-60000of bytes sent: 28_recv.exe:of service: 0packet length: 28identifier: 214offset field: 0to live: 128protocol number: 1: 15369address: 127.0.0.1address: 127.0.0.1ICMP-header content:

Type: 0: 5: 65530

Unique identifier: 0number: 0received from [127.0.0.1]:

-4200-128160912700112700105-1-60000of bytes received: 28WinFreeze attack detected!

. Атака ICMP Flood:_send.exe:sent to [127.0.0.1]:

6900280000-12810012700112700102-1-30000

Number of bytes sent: 28sent to [127.0.0.1]:

6900280000-12810012700112700102-1-30000

Number of bytes sent: 28sent to [127.0.0.1]:

6900280000-12810012700112700102-1-30000

Number of bytes sent: 28sent to [127.0.0.1]:

6900280000-12810012700112700102-1-30000

Number of bytes sent: 28sent to [127.0.0.1]:

6900280000-12810012700112700102-1-30000

Number of bytes sent: 28sent to [127.0.0.1]:

6900280000-12810012700112700102-1-30000

Number of bytes sent: 28_recv.exe:of service: 0packet length: 28identifier: 329offset field: 0to live: 128protocol number: 1: 15254address: 127.0.0.1address: 127.0.0.1ICMP-header content:

Type: 0: 2: 65533

Unique identifier: 0number: 0received from [127.0.0.1]:

-128159-10612700112700102-1-30000of bytes received: 28ICMP Flood attack detected!


После этого можно получить сообщения об атаках по электронной почте при помощи программы MS Outlook Express v5.0. После этого можно их увидеть в папке «Входящие» (см. рис. 10):


Сообщения об атаках в папке «Входящие» MS Outlook Express



Заключение


В дипломной работе было разработано программное средство «Комплекс сетевой защиты» в виде клиент-серверной пары на базе протокола ICMP. Таким образом, путём глубокого, непростого и недешёвого исследования проблемы, было найдено технически приемлемое решение реализации низкоуровневой (пакетной) клиент-серверной системы, способной полноценно (в полном объёме) функционировать (т.е. по схеме одновременной работы как клиента, так и сервера на одном и том же компьютере), не требуя для своей работы наличия локальной сети компьютеров. Естественно, что данная система может также работать и в локальной сети компьютеров. Единственным серьёзным ограничением данного программного средства является системное требование наличия ОС не ниже Windows 2000 и прав Администратора.



Список литературы


1. Курс лекций «Защита информации в компьютерных системах» (Колесников Д.Г.) #"justify">. Обнаружение хакерских атак (Дж. Чирилло) www.piter.com ISBN 5-318-00533-0

3. Network Programming for Microsoft Windows (Anthony Jones, Jim Ohlund) Microsoft Press #"justify">. Windows Packet Capture Library #"justify">. Windows Packet Capture Library (Links) #"justify">6. Обнаружение нарушений безопасности в сетях (С. Норткатт, Новак Дж.) #"justify">7. MSDN 6.0/Platform SDK/Networking and Distributed Services/Windows Sockets version 2 / Windows Sockets version 2 API / Reference

8. daSniff #"justify">9. Snort #"justify">10. Snort documentation #"justify">11. Телекоммуникационные технологии (v2.1) (Семенов Ю.А. (ГНЦ ИТЭФ) http://book.itep.ru/



Введение В современном мире происходит стремительное развитие компьютерной техники и компьютерных технологий. Важное место среди них занимают технологии

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ