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

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 11.04.2012
Размер файла 735,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

 // submitted with data to be sent and

 // returned from data that is read.

ret = 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

{

u_char ip_verlen; // IP version & length

u_char ip_tos; // IP type of service

u_short ip_totallength; // Total length

u_short ip_id; // Unique identifier

u_short ip_offset; // Fragment offset field

u_char ip_ttl; // Time to live

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

u_short ip_checksum; // IP checksum

u_int ip_srcaddr; // Source address

u_int ip_destaddr; // Destination address

} IP_HDR, *PIP_HDR, FAR* LPIP_HDR;

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

typedef struct icmp_hdr

{

BYTE i_type;

BYTE i_code; // Type sub code

USHORT i_cksum;

USHORT i_id;

USHORT i_seq;

} ICMP_HDR, *PICMP_HDR;

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

3. Класс ICMP_PACKET:

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

4. Класс 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)

{

u_long cksum=0;

while (size > 1)

{

cksum += *buffer++;

size -= sizeof (u_short);

}

if (size)

{

cksum += *(u_char*) buffer;

}

cksum = (cksum >> 16) + (cksum & 0xffff);

cksum += (cksum >>16);

return (u_short) (~cksum);

}

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

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

1. Класс CONF_HTTP:

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

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

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

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

int echo (выводить ли на экран каждое действие)

CONF_HTTP - конструктор, обнуляющий поля

ProcessConfigCommands - изменение конфигурации с клавиатуры

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

2. Класс DISPATCH_SERVER_SOCKET_HTTP:

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

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

struct sockaddr_in server_address, client_address (адресные структуры сервера и клиента)

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

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

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

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

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

CONF_HTTP conf (конфигурационный объект)

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

3. Класс SERVER:

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

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

SOCKET msg_server_socket (виртуальный сокет, создаваемый на один сеанс)

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

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

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

int param_index (количество строк в этом массиве)

CONF_HTTP conf (конфигурационный объект)

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

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

SERVER(void) (конструктор - обнуляет все поля объекта)

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

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

int shutdown_and_closesocket(void) (закрыть сокет)

void erase_buffer(void) (стереть буфер)

void set_buffer (char*) (заполнить буфер)

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

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

void 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:SERVER(void) - конструктор класса.

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

void SERVER:erase_buffer(void) - стереть буфер

void SERVER:set_buffer (char* string) - заполнить буфер

int SERVER:recv_data(void) - побайтно получить информацию

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

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

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

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

int 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) - решает вопрос об отправке клиенту формы на основании его запроса.

int 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одержит следующие элементы:

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

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

char filename [MAX_PATH] (имя файла)

int filesize (размер файла)

bool 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) (узнать, выставлен ли флаг режима обновления)

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

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

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

char domain [ADDRESS_MAX_LENGTH] (имя почтового домена)

char password [ADDRESS_MAX_LENGTH] (пароль на почтовый ящик)

bool lock (флаг, определяющий, заперт ли почтовый ящик)

4. Класс 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»)

FILE_REF file [MAX_USERS] (массив описателей для файлов - писем)

int f_index (его индекс)

int highest_number_accessed (непонятная хрень, смотрите RFC 1225)

int 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) (узнать текущий пароль)

void SetPassword(void) (установить новый пароль)

5. Класс DISPATCH_SERVER_SOCKET:

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

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

struct sockaddr_in server_address, client_address (адресная структура сервера и клиента)

int 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) (принимает входящие подключения)

6. Класс SERVER_SOCKET:

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

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

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

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

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

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

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

fstream 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) (стереть буфер)

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) - стереть буфер

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

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

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

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

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

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

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

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

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

void CONF: ProcessConfigCommands(void) - обработка конфигурационных команд

void CONF: Help(void) - вывод на экран информации о конфигурационных командах

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

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

void 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) - отвечаем клиенту на его подключение (не на запрос клиента!)

int SERVER_SOCKET: ProcessClientQuery(void) - Уже имеем в буфере запрос клиента и обрабатываем его (выполняем всевозможные команды)

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

MODE:MODE(void) - конструктор объекта режим соединения

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:

The IP-header content:

Type of service: 0

Total packet length: 28

Unique identifier: 0

Fragment offset field: 0

Time to live: 128

Encapsulated protocol number: 1

Checksum: 0

Source address: 127.0.0.1

Destination address: 127.0.0.255

The ICMP-header content:

Type: 0

Code: 8

Checksum: 65527

Unique identifier: 0

Sequence number: 0

Info sent to [127.0.0.255]:

6900280000-12810012700112700-108-1-90000

E??? ж? ж аа?

Number of bytes sent: 28

raw_recv.exe:

Type of service: 0

Total packet length: 28

Unique identifier: 177

Fragment offset field: 0

Time to live: 128

Encapsulated protocol number: 1

Checksum: 15152

Source address: 127.0.0.1

Destination address: 127.0.0.255

The ICMP-header content:

Type: 0

Code: 8

Checksum: 65527

Unique identifier: 0

Sequence number: 0

Info received from [127.0.0.1]:

6900280-7900-1281594812700112700-108-1-90000

E? ж??; 0ж? ж аа?

Number of bytes received: 28

The Smurf attack detected!

2. Атака Tribe Flood Network:

raw_send.exe:

The IP-header content:

Type of service: 0

Total packet length: 28

Unique identifier: 0

Fragment offset field: 0

Time to live: 128

Encapsulated protocol number: 1

Checksum: 0

Source address: 127.0.0.1

Destination address: 127.0.0.1

The ICMP-header content:

Type: 0

Code: 0

Checksum: 65535

Unique identifier: 0

Sequence number: 0

Info sent to [127.0.0.1]:

6900280000-12810012700112700100-1-10000

Number of bytes sent: 28

raw_recv.exe:

Type of service: 0

Total packet length: 28

Unique identifier: 197

Fragment offset field: 0

Time to live: 128

Encapsulated protocol number: 1

Checksum: 15386

Source address: 127.0.0.1

Destination address: 127.0.0.1

The ICMP-header content:

Type: 0

Code: 0

Checksum: 65535

Unique identifier: 0

Sequence number: 0

Info received from [127.0.0.1]:

6900280-5900-1281602612700112700100-1-10000

Number of bytes received: 28

The Tribe Flood Network attack detected!

3. Атака WinFreeze:

raw_send.exe:

The IP-header content:

Type of service: 0

Total packet length: 28

Unique identifier: 0

Fragment offset field: 0

Time to live: 128

Encapsulated protocol number: 1

Checksum: 0

Source address: 127.0.0.1

Destination address: 127.0.0.1

The ICMP-header content:

Type: 0

Code: 5

Checksum: 65530

Unique identifier: 0

Sequence number: 0

Info sent to [127.0.0.1]:

6900280000-12810012700112700105-1-60000

Number of bytes sent: 28

raw_recv.exe:

Type of service: 0

Total packet length: 28

Unique identifier: 214

Fragment offset field: 0

Time to live: 128

Encapsulated protocol number: 1

Checksum: 15369

Source address: 127.0.0.1

Destination address: 127.0.0.1

The ICMP-header content:

Type: 0

Code: 5

Checksum: 65530

Unique identifier: 0

Sequence number: 0

Info received from [127.0.0.1]:

6900280-4200-128160912700112700105-1-60000

Number of bytes received: 28

The WinFreeze attack detected!

4. Атака ICMP Flood:

raw_send.exe:

Info sent to [127.0.0.1]:

6900280000-12810012700112700102-1-30000

Number of bytes sent: 28

Info sent to [127.0.0.1]:

6900280000-12810012700112700102-1-30000

Number of bytes sent: 28

Info sent to [127.0.0.1]:

6900280000-12810012700112700102-1-30000

Number of bytes sent: 28

Info sent to [127.0.0.1]:

6900280000-12810012700112700102-1-30000

Number of bytes sent: 28

Info sent to [127.0.0.1]:

6900280000-12810012700112700102-1-30000

Number of bytes sent: 28

Info sent to [127.0.0.1]:

6900280000-12810012700112700102-1-30000

Number of bytes sent: 28

raw_recv.exe:

Type of service: 0

Total packet length: 28

Unique identifier: 329

Fragment offset field: 0

Time to live: 128

Encapsulated protocol number: 1

Checksum: 15254

Source address: 127.0.0.1

Destination address: 127.0.0.1

The ICMP-header content:

Type: 0

Code: 2

Checksum: 65533

Unique identifier: 0

Sequence number: 0

Info received from [127.0.0.1]:

69002817300-128159-10612700112700102-1-30000

Number of bytes received: 28

The ICMP Flood attack detected!

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

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

Заключение

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

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

1. Курс лекций «Защита информации в компьютерных системах» (Колесников Д.Г.) http://megapolis.aaanet.ru/kdg/protect/index.htm

2. Обнаружение хакерских атак (Дж. Чирилло) www.piter.com ISBN 5-318-00533-0

3. Network Programming for Microsoft Windows (Anthony Jones, Jim Ohlund) Microsoft Press http://irazin.ru/Some.htm

4. Windows Packet Capture Library http://winpcap.polito.it/

5. Windows Packet Capture Library (Links) http://winpcap.polito.it/misc/links.htm

6. Обнаружение нарушений безопасности в сетях (С. Норткатт, Новак Дж.) http://www.williamspublishing.com ISBN 5-8459-0526-5 (рус.)

7. MSDN 6.0/Platform SDK/Networking and Distributed Services/Windows Sockets version 2 / Windows Sockets version 2 API / Reference

8. daSniff http://demosten.com/dasniff/

9. Snort http://www.snort.org/

10. Snort documentation http://www.snort.org/docs/

11. Телекоммуникационные технологии (v2.1) (Семенов Ю.А. (ГНЦ ИТЭФ) http://book.itep.ru/

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.