Как противостоять снифферу

Автор работы: Пользователь скрыл имя, 26 Декабря 2011 в 18:31, курсовая работа

Описание

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

Содержание

Введение 3
1. Что такое сниффер? 4
1.1 Виды снифферов и сниффинга 6
2.Основы передачи данных в сети Ethernet 8
3.Пример реализации сниффера под ОС Windows 12
3.1 Структура программы для прослушивания сети 13
3.2 Простейший пример программы-сниффера 16
4.Как противостоять снифферу 18
4.1 Обнаружение работы снифферов 18
4.2 Противодействие 19
Выводы 22
Список информационных источников 23

Работа состоит из  1 файл

КУРСОВАЯ ПАСОИБ-кр.doc

— 126.00 Кб (Скачать документ)
CODE
 
    typedef struct _IPHeader 
     

     
     unsigned char  verlen;   // версия и длина заголовка 
     
     unsigned char  tos;      // тип сервиса  
     
     unsigned short length;   // длина всего пакета  
     
     unsigned short id;       // Id  
     
     unsigned short offset;   // флаги и смещения  
     
     unsigned char  ttl;      // время жизни  
     
     unsigned char  protocol; // протокол  
     
     unsigned short xsum;     // контрольная сумма  
     
     unsigned long  src;      // IP-адрес отправителя  
     
     unsigned long  dest;     // IP-адрес назначения  
     
    }IPHeader;

     таб.4 

    Подробно IP протокол описан в RFC за номером 791. Для  нас особый интерес представляют поля заголовка protocol, src и dest. Два последних  поля - это хорошо известные IP-адреса отправителя и получателя пакета. Например, шестнадцатеричное значение адреса 0x0000140A соответствует 10.20.0.0.  
                    3. Пример реализации сниффера под ОС Windows.
 

    Современная архитектура сетевого программного обеспечения основана на семиуровневой модели OSI (Open Systems Interconnection). В основе модели лежит принцип абстракции, когда каждый компонент выполняет свои функции и предоставляет некоторый сервис вышестоящему уровню. 

Описание Слой (Layer) 

Application  
В этом слое находятся протоколы верхнего уровня, которые не зависят ни от среды передачи данных, ни от способа передачи данных. Это всем хорошо известные протоколы, например, HTTP (hyper text transfer protocol), FTP (file transfer protocol), POP (post office protocol) и др.
 

Presentation  
Сейчас от этого слоя нет никакой пользы. Раньше он служил для установления режимов работы терминалов, которые можно увидеть только в музее. 
 
Session 
Сессии почти не используются и предназначены для связи рабочих станций с серверами. 
 
Transport  
Протокол передачи данных высокого уровня. Например, TCP обеспечивает гарантированную доставку информации в отличие от протокола UDP. 
 
Network 
Знаменитый третий уровень, обычно это IP (internet protocol). Здесь передаются пакеты, осуществляется их маршрутизация, сборка и фильтрация. Пакеты несут в себе информацию об отправителе и получателе. 
 
Data Link

 
На этом уровне передаются кадры (порции информации) между компьютерами, коммутаторами  и другими устройствами сети (Ethernet, ATM, Token Ring, PPP).

 
Physical  
Физический канал передачи данных, в котором циркулируют электрические сигналы. 
 
  3.1 Структура программы для прослушивания сети. 
 
Обладая базовыми знаниями можно смело приступить к написанию прослушивающей программы для Windows. Каркас программы может состоять из нескольких частей: 
· Драйвер для приёма всех пакетов (уже установлен в ОС).

· Буфер для накопления и обработки пакетов. Это может быть простейший массив из байтов, но лучше иметь интеллектуальный циклический буфер.

· Анализатор пакетов - набор функций и критериев для управления фильтрацией.

· Декодер-шифратор (сами догадаетесь, зачем он нужен).

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

    Поскольку в сети постоянно циркулирует  огромное количество пакетов, то их лучше  отфильтровывать. Критериями фильтрации могут быть IP-адреса, тип вышестоящего протокола (TCP, UDP, ICMP, PUP), а также содержимое пакета. Функции фильтрации весьма полезны, так как не только ограничивают собираемую программой информацию действительно нужной, но и просто обеспечивают её нормальную работу. Вполне возможно, что при интенсивной загрузке локальной сети компьютер и программа-сниффер будут не способны обработать всю поступающую информацию. Отсутствие критериев для фильтрации или задание слишком большого числа вариантов для IP приводит к тому, что программа-перехватчик не успевает обрабатывать все пакеты. А если ещё записывать все пакеты на жёсткий диск, то последний может переполниться в считанные минуты. На этом факте основаны некоторые программы для борьбы с прослушиванием. Они посылают в сеть множество пакетов с поддельной информацией о паролях и т.д. В результате снифферы "захлёбываются" в огромном потоке дезинформации.

    Драйвер сетевой платы (NIC) занимается приёмом  и передачей кадров в сеть Ethernet. Максимальный размер IP-пакета, включая  служебные данные, составляет 64 килобайта, а максимальный размер данных в кадре, как вы уже знаете, 1500 байт. При  необходимости драйвер осуществляет фрагментацию и сборку IP-пакетов. Сетевая подсистема в ОС Windows основана на многоуровневой архитектуре, которую в 1978 году одобрила международная организация стандартов. Таким образом, NIC-драйвер взаимодействует с драйверами вышестоящих протоколов.

    Программа для прослушивания сегмента сети работает именно с IP-пакетами. Она использует библиотеку Windows Sockets и функционирует  под управлением.

    В начале каждой программы, использующей Windows Sockets, находится код инициализации сетевой библиотеки (WSAStartup). Затем следует создание сокета, определение имени и IP-адреса компьютера (gethostbyname), с которого запущена программа. В заключение подготовительной стадии устанавливаются параметры сокета (bind). Теперь осталось переключить сокет в режим приёма всех пакетов. Управляющая функция ioctlsocket с параметром-командой SIO_RCVALL включает promiscuous mode.

    Далее следует бесконечный цикл, который  остановится только после нажатия  клавиши. Внутри цикла идёт приём (recv) и обработка IP-пакетов. Пакеты записываются в единственный буфер и никак не анализируются. Размер буфера (64 кб) подобран с расчётом, чтобы в нём поместился самый большой IP-пакет. В нашем случае нет никакого анализа сетевого трафика.

 

3.2 Простейший пример  программы-сниффера.

 
 
CODE
 
#include <conio.h> 
 
#include <winsock2.h> 
 
#define MAX_PACKET_SIZE    0x10000 
 
// Буфер для приёма данных 
 
static BYTE Buffer[MAX_PACKET_SIZE]; // 64 Kb 
 
void main() 
 

 
 WSADATA     wsadata;   // Инициализация WinSock. 
 
 SOCKET      s;         // Cлущающий сокет. 
 
 char        name[128]; // Имя хоста (компьютера). 
 
 HOSTENT*    phe;       // Информация о хосте. 
 
 SOCKADDR_IN sa;        // Адрес хоста 
 
 long        flag = 1;  // Флаг PROMISC Вкл/выкл. 
 
 // инициализация 
 
 WSAStartup(MAKEWORD(2,2), &wsadata); 
 
 s = socket( AF_INET, SOCK_RAW, IPPROTO_IP ); 
 
 gethostname(name, sizeof(name)); 
 
 phe = gethostbyname( name ); 
 
 ZeroMemory( &sa, sizeof(sa) ); 
 
 sa.sin_family = AF_INET; 
 
 sa.sin_addr.s_addr = ((struct in_addr *)phe->h_addr_list[0])->s_addr; 
 
 bind(s, (SOCKADDR *)&sa, sizeof(SOCKADDR)); 
 
  
 
 // Включение promiscuous mode. 
 
 ioctlsocket(s, SIO_RCVALL, &flag); 
 
 // Приём IP-пакетов. 
 
 while( !_kbhit() ) 
 
 { 
 
   int count; 
 
   count = recv( s, Buffer, sizeof(Buffer), 0 ); 
 
   // обработка IP-пакета 
 
   if( count >= sizeof(IPHeader) ) 
 
   { 
 
     IPHeader* hdr = (IPHeader *)Buffer; 
 
     //что-то делаем с пакетом... 
 
   } 
 
 } 
 
 // Конец работы. 
 
 closesocket( s ); 
 
 WSACleanup(); 
 
}

     
Для успешной компиляции следует подцепить библиотечный файл "ws2_32.lib".

     

 

4. Как противостоять снифферу?

4.1 Обнаружение работы снифферов.

4.1.1 Обнаружение снифферов в сетях на коммутаторах.

    Поскольку сниффинг в сетях на коммутаторах подразумевает атаку "man-in-the-middle", когда прослушивание сети носит "активный" характер, при котором сетевой трафик передается атакующему компьютеру и только потом пересылаться по истинному назначению, то определение работы "активных" снифферов является достаточно простой задачей. Требуется только обнаружить подозрительный ARP сетевой трафик. Для этих целей служит специальное программное обеспечение, такое как, например, LBNL Arpwatch. Arpwatch определяет как изменения в ARP схеме локальной сети, вызываемые ARР spoofing, так и очевидные сетевые аномалии, или вторичные эффекты от сниффинга.

4.1.2 Обнаружение снифферов в сетях без коммутаторов.

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

Одной из таких утилит является L0pht AntiSniff . Самораспаковывающийся архив as-1021 имеет размер 1299 Кб и включает краткое руководство пользователя. Утилита Shareware и работает без регистрации 15 дней. Естественно, в Интернете легко находится средство продления работоспособности. В руководстве пользователя прямо указано предназначение утилиты: "AntiSniff is a Graphical User Interface (GUI) driven tool for detecting promiscuous Network Interface Cards (NICs) on your local network segment." Утилита имеет хорошо продуманный графический интерфейс. На вкладке "Network Configuration" задается или адрес проверяемой машины, или диапазон адресов, если надо проверить несколько машин. Существует возможность загрузить предварительно подготовленный список из файла. Утилита самостоятельно определяет допустимые сетевые интерфейсы, предоставляя возможность выбора. Параметры "Bogus …" оставь по умолчанию. Эти реально не существующие MAC и IP адреса используются при работе утилиты.

Вкладка "Scanner Configuration" позволяет задать набор тестов, который будет использован  при работе утилиты, а также предоставляет  возможность настроить расписание, по которому она будет запускаться. Теперь можно нажать кнопку и на следующей вкладке "Scan Progress" и наблюдать за работой утилиты. 

4.2 Противодействие.

Мало  обнаружить работу снифферов в твоей  локальной сети. Посмотрим, что можно  им противопоставить. Выбор невелик  – это административные меры, модификация самого протокола ARP и шифрование.

Локальная сеть под диктатором.

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

Модификация ARP протокола.

Для предотвращения сниффинга в сетях с коммутаторами  можно немного подправить алгоритм функционирования самого протокола ARP . Идея заключается в следующем: при приеме ARP - reply производится сравнение старого и нового MAC- адресов, при обнаружении несоответствия посылается ARP-запрос, требующий всем хозяевам IP-адреса сообщить свои MAC-адреса. В случае атаки arpoison "настоящая" система, имеющая этот IP-адрес, ответит на запрос, и, таким образом, атака будет распознана.

Шифрование. 

Единственным  решением, не столько препятствующим сниффингу, сколько делающим его  бессмысленным, является шифрование. В "dsniff FAQ" Dug Song советует: "не допускайте использования фирменных небезопасных прикладных протоколов или унаследованных протоколов, передающих данные явным образом в ваших сетях". Это очень важный совет. 

Замена  небезопасных протоколов (таких как telnet) на их надежные шифрованные аналоги (такие как ssh) представляется серьезным барьером от перехвата. Замена всех небезопасных протоколов в большинстве случаев маловероятна. Поэтому, вместо прекращения использования протоколов, передающих данные явным образом, остается только одна возможность – шифрование всего сетевого трафика на 3 уровне, используя Internet Protocol Security (IPSec) (Taylor, Laura. Understanding IPSec). Осуществляя шифрование на 3 уровне, возможно продолжать использовать небезопасные протоколы, поскольку все данные будут инкапсулированы IPSec и зашифрованы при передаче по сети. Таким образом, унаследованные приложения, которые используют старые протоколы, не пострадают. IPSec полностью прозрачен для приложений и пользователей. Это открытый стандарт, поддерживаемый многими компаниями, включая Microsoft и Cisco. Кроме того, многие реализации Unix поддерживают IPSec. Легкая настройка IPSec под WIN дополнительно увеличивает его привлекательность.

Информация о работе Как противостоять снифферу